#reading-progress-container[data-astro-cid-mu6cnre2]{background:transparent}.dark[data-astro-cid-mu6cnre2] #reading-progress-container[data-astro-cid-mu6cnre2]{background:#0f172a80}#reading-progress-bar[data-astro-cid-mu6cnre2]{box-shadow:0 0 10px #06b6d480}#article-toc[data-astro-cid-xvrfupwn]{max-height:calc(100vh - 160px);overflow-y:auto}@media(max-width:1280px){#article-toc[data-astro-cid-xvrfupwn]{display:none!important}}.prose pre{position:relative;background:#1d1f21!important;border-radius:.75rem;padding:2.5rem 1rem 1rem;margin:1.5rem 0;overflow-x:auto;border:1px solid #2d2f31}.prose pre code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.875rem;line-height:1.6;background:transparent!important;padding:0!important;color:#c5c8c6}.prose code:not(pre code){background:#f1f5f9;color:#0f172a;padding:.2rem .4rem;border-radius:.375rem;font-size:.875em;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.dark .prose code:not(pre code){background:#1e293b;color:#e2e8f0}.code-language-label{position:absolute;top:0;left:0;padding:.25rem .75rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#9ca3af;background:#2d2f31;border-bottom-right-radius:.5rem}.code-copy-btn{position:absolute;top:.5rem;right:.5rem;padding:.4rem .6rem;font-size:.7rem;font-weight:500;color:#9ca3af;background:#2d2f31;border:1px solid #3d3f41;border-radius:.375rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.25rem}.code-copy-btn:hover{background:#3d3f41;color:#fff}.code-copy-btn.copied{background:#10b981;color:#fff;border-color:#10b981}.code-copy-btn svg{width:14px;height:14px}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#969896}.token.punctuation{color:#c5c8c6}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#c66}.token.boolean,.token.number{color:#de935f}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#b5bd68}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#8abeb7}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#f0c674}.token.keyword{color:#b294bb}.token.regex,.token.important{color:#de935f}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:2.5rem;left:0;width:3em;padding:1rem 0;letter-spacing:-1px;border-right:1px solid #3d3f41;-webkit-user-select:none;-moz-user-select:none;user-select:none}.line-numbers .line-numbers-rows>span{display:block;counter-increment:linenumber;color:#5c6370;text-align:right;padding-right:.8rem}.line-numbers .line-numbers-rows>span:before{content:counter(linenumber)}.prose pre::-webkit-scrollbar{height:6px}.prose pre::-webkit-scrollbar-track{background:#1d1f21}.prose pre::-webkit-scrollbar-thumb{background:#3d3f41;border-radius:3px}.prose pre::-webkit-scrollbar-thumb:hover{background:#4d4f51}.prose{color:#374151;font-size:1.125rem;line-height:1.8}.dark .prose{color:#d1d5db}.prose h1{font-size:2.25rem;font-weight:800;color:#111827;margin-top:2.5rem;margin-bottom:1.5rem;line-height:1.2;letter-spacing:-.02em;font-family:Playfair Display,serif}.prose h2{font-size:1.75rem;font-weight:700;color:#1f2937;margin-top:2.5rem;margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:2px solid #e5e7eb;line-height:1.3;letter-spacing:-.01em;font-family:Playfair Display,serif}.prose h3{font-size:1.375rem;font-weight:600;color:#374151;margin-top:2rem;margin-bottom:1rem;line-height:1.4;font-family:Playfair Display,serif}.prose h4{font-size:1.25rem;font-weight:600;color:#4b5563;margin-top:1.75rem;margin-bottom:.75rem;line-height:1.4}.prose h5,.prose h6{font-size:1.125rem;font-weight:600;color:#6b7280;margin-top:1.5rem;margin-bottom:.5rem}.dark .prose h1{color:#f9fafb}.dark .prose h2{color:#f3f4f6;border-bottom-color:#374151}.dark .prose h3{color:#e5e7eb}.dark .prose h4{color:#d1d5db}.dark .prose h5,.dark .prose h6{color:#9ca3af}.prose p{margin-bottom:1.5rem;color:#4b5563}.dark .prose p{color:#d1d5db}.prose strong{font-weight:700;color:#111827}.dark .prose strong{color:#f9fafb}.prose em{font-style:italic}.prose>p:first-of-type{font-size:1.25rem;color:#6b7280;line-height:1.75}.dark .prose>p:first-of-type{color:#9ca3af}.prose a{color:#0891b2;text-decoration:none;font-weight:500;border-bottom:1px solid transparent;transition:all .2s ease}.prose a:hover{color:#0e7490;border-bottom-color:#0e7490}.dark .prose a{color:#22d3ee}.dark .prose a:hover{color:#67e8f9;border-bottom-color:#67e8f9}.prose ul{list-style:none;margin:1.5rem 0;padding-left:0}.prose ul>li{position:relative;padding-left:1.75rem;margin-bottom:.75rem;color:#4b5563}.prose ul>li:before{content:"";position:absolute;left:0;top:.6rem;width:6px;height:6px;background:linear-gradient(135deg,#0891b2,#06b6d4);border-radius:50%}.prose ol{counter-reset:list-counter;list-style:none;margin:1.5rem 0;padding-left:0}.prose ol>li{position:relative;padding-left:2.25rem;margin-bottom:.75rem;counter-increment:list-counter;color:#4b5563}.prose ol>li:before{content:counter(list-counter);position:absolute;left:0;top:.1rem;width:1.5rem;height:1.5rem;background:linear-gradient(135deg,#0891b2,#06b6d4);color:#fff;font-size:.75rem;font-weight:700;border-radius:50%;display:flex;align-items:center;justify-content:center}.prose ul ul,.prose ol ul{margin:.5rem 0 .5rem 1rem}.prose ul ul>li:before{width:5px;height:5px;background:#9ca3af;top:.65rem}.dark .prose ul>li,.dark .prose ol>li{color:#d1d5db}.dark .prose ul ul>li:before{background:#6b7280}.prose code:not(pre code){background:linear-gradient(135deg,#f3f4f6,#e5e7eb);color:#0891b2;padding:.2rem .5rem;border-radius:.375rem;font-size:.9em;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:500;border:1px solid #e5e7eb}.dark .prose code:not(pre code){background:linear-gradient(135deg,#1f2937,#374151);color:#22d3ee;border-color:#4b5563}.prose pre{background:linear-gradient(180deg,#1e1e2e,#11111b);border-radius:.75rem;padding:1.5rem;margin:2rem 0;overflow-x:auto;border:1px solid #313244;box-shadow:0 4px 6px -1px #0000004d,0 2px 4px -2px #0003,inset 0 1px #ffffff0d;position:relative}.prose pre code{background:none;border:none;padding:0;color:#cdd6f4;font-size:.875rem;font-family:JetBrains Mono,Fira Code,Consolas,monospace;line-height:1.7}.prose pre .comment,.prose pre .prolog,.prose pre .doctype,.prose pre .cdata{color:#6c7086}.prose pre .keyword,.prose pre .property,.prose pre .tag,.prose pre .constant,.prose pre .symbol,.prose pre .deleted{color:#cba6f7}.prose pre .boolean,.prose pre .number{color:#fab387}.prose pre .selector,.prose pre .string,.prose pre .char,.prose pre .builtin,.prose pre .inserted{color:#a6e3a1}.prose pre .function,.prose pre .class-name{color:#89b4fa}.prose pre .operator,.prose pre .entity,.prose pre .url,.prose pre .variable{color:#89dceb}.prose blockquote{position:relative;margin:2rem 0;padding:1.5rem 1.5rem 1.5rem 2rem;background:linear-gradient(135deg,#ecfeff,#cffafe);border-left:4px solid #0891b2;border-radius:0 .75rem .75rem 0;font-style:italic;color:#0e7490}.prose blockquote:before{content:'"';position:absolute;top:-.5rem;left:1rem;font-size:3rem;color:#67e8f9;font-family:Georgia,serif;line-height:1}.prose blockquote p{margin-bottom:0;color:inherit}.dark .prose blockquote{background:linear-gradient(135deg,#0891b21a,#06b6d41a);border-left-color:#22d3ee;color:#a5f3fc}.dark .prose blockquote:before{color:#0891b2}.prose .table-wrapper{width:100%;overflow-x:auto;margin:2rem 0;border-radius:.75rem;box-shadow:0 1px 3px #0000001a}.prose table{width:100%;min-width:500px;border-collapse:collapse;overflow:hidden;margin:0}.prose thead{background:linear-gradient(135deg,#0891b2,#06b6d4)}.prose th{padding:1rem 1.25rem;text-align:left;font-weight:600;color:#fff;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;border:none}.prose td{padding:1rem 1.25rem;border-bottom:1px solid #e5e7eb;color:#4b5563;border-left:none;border-right:none}.prose tbody tr:nth-child(2n){background-color:#f9fafb}.prose tbody tr:hover{background-color:#ecfeff}.dark .prose td{border-bottom-color:#374151;color:#d1d5db}.dark .prose tbody tr:nth-child(2n){background-color:#3741514d}.dark .prose tbody tr:hover{background-color:#0891b21a}.prose hr{margin:3rem 0;border:none;height:2px;background:linear-gradient(90deg,transparent,#d1d5db 20%,#d1d5db 80%,transparent)}.dark .prose hr{background:linear-gradient(90deg,transparent,#4b5563 20%,#4b5563 80%,transparent)}.prose img{max-width:100%;height:auto;margin:2rem auto;border-radius:.75rem;box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a;display:block}.prose p strong:first-child{display:inline-block;background:linear-gradient(135deg,#0891b2,#06b6d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.prose p:has(>strong:first-child){padding:1rem 1.25rem;background:#f0fdfa;border-radius:.5rem;border-left:3px solid #0891b2;margin-bottom:1rem}.dark .prose p:has(>strong:first-child){background:#0891b21a}.prose kbd{background:linear-gradient(180deg,#f9fafb,#e5e7eb);border:1px solid #d1d5db;border-radius:.375rem;padding:.15rem .5rem;font-size:.875em;font-family:inherit;box-shadow:0 2px #9ca3af;color:#374151}.dark .prose kbd{background:linear-gradient(180deg,#374151,#1f2937);border-color:#4b5563;box-shadow:0 2px #1f2937;color:#e5e7eb}.prose dl{margin:1.5rem 0}.prose dt{font-weight:700;color:#1f2937;margin-top:1rem}.prose dd{margin-left:1.5rem;color:#6b7280}.dark .prose dt{color:#f3f4f6}.dark .prose dd{color:#9ca3af}.prose input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25rem;height:1.25rem;border:2px solid #d1d5db;border-radius:.375rem;margin-right:.5rem;vertical-align:middle;position:relative;cursor:pointer;transition:all .2s}.prose input[type=checkbox]:checked{background:linear-gradient(135deg,#0891b2,#06b6d4);border-color:#0891b2}.prose input[type=checkbox]:checked:after{content:"✓";position:absolute;color:#fff;font-size:.75rem;font-weight:700;top:50%;left:50%;transform:translate(-50%,-50%)}.prose>*:first-child{margin-top:0}.prose>*:last-child{margin-bottom:0}.prose h2+p,.prose h3+p,.prose h4+p{margin-top:0}.prose pre+h2,.prose pre+h3{margin-top:3rem}
