.code-panel{margin:var(--space-4) 0;border:1px solid var(--color-border);background:var(--color-background);box-shadow:0 12px 32px -16px #00000073;overflow:visible}.code-panel-chrome{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-surface)}.code-panel-chrome-left{display:flex;align-items:center;gap:var(--space-2);min-width:0}.code-panel-dots{display:inline-flex;gap:.25rem;flex-shrink:0}.code-panel-dots i{display:block;width:.4rem;height:.4rem;border-radius:50%;background:var(--color-border)}.code-panel-dots i:nth-child(1){background:color-mix(in srgb,var(--color-error) 70%,var(--color-border))}.code-panel-dots i:nth-child(2){background:color-mix(in srgb,var(--color-secondary) 70%,var(--color-border))}.code-panel-dots i:nth-child(3){background:color-mix(in srgb,var(--color-primary) 70%,var(--color-border))}.code-panel-lang,.code-panel-file{font-family:var(--font-mono);font-size:.5625rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-panel-file{text-transform:none;letter-spacing:.04em}.code-panel-copy{flex-shrink:0;padding:.2rem .55rem;border:1px solid var(--color-border);background:var(--color-background);font-family:var(--font-mono);font-size:.5625rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);cursor:pointer;transition:border-color .15s ease,color .15s ease,background-color .15s ease}.code-panel-copy:hover{border-color:var(--color-primary);color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 8%,var(--color-background))}.code-panel-copy.is-copied{border-color:var(--color-primary);color:var(--color-primary)}.code-panel-body{padding:0;font-size:.8125rem;line-height:1.65;overflow:visible}.code-panel-scroll{overflow-x:auto;overflow-y:visible;padding:var(--space-3);-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.code-panel-body pre.shiki{display:block;width:-moz-max-content;width:max-content;min-width:100%;margin:0;padding:0;border:none;border-radius:0;background:var(--color-background)!important;overflow:visible;font-size:inherit;line-height:inherit;text-align:left;-moz-tab-size:2;-o-tab-size:2;tab-size:2}.code-panel-body pre.shiki code{display:block;width:-moz-max-content;width:max-content;min-width:100%;padding:0;font-family:var(--font-mono);font-size:inherit;line-height:inherit;white-space:pre;word-break:normal;overflow-wrap:normal;background:none!important}.code-panel-body .line{display:block;min-width:100%}.code-panel-body .line:before,.code-panel-body .line:after{content:none}.code-panel-body .line>span{display:inline}html[data-theme=dark] .code-panel .shiki,html[data-theme=dark] .code-panel .shiki span,html:not([data-theme]) .code-panel .shiki,html:not([data-theme]) .code-panel .shiki span{color:var(--shiki-dark)!important}html[data-theme=light] .code-panel .shiki,html[data-theme=light] .code-panel .shiki span{color:var(--shiki-light)!important}html[data-theme=dark] .code-panel .shiki,html:not([data-theme]) .code-panel .shiki{background-color:var(--color-background)!important}html[data-theme=light] .code-panel .shiki{background-color:var(--color-background)!important}.code-panel--mermaid .code-panel-body{padding:var(--space-2) var(--space-3) var(--space-3);background:var(--color-background)}.code-panel-mermaid{min-width:32rem;padding:var(--space-2) 0;color:var(--color-text-primary)}.code-panel-mermaid svg{display:block;max-width:100%;height:auto;margin:0 auto}.code-panel-mermaid svg .node rect,.code-panel-mermaid svg .node circle,.code-panel-mermaid svg .node ellipse,.code-panel-mermaid svg .node polygon,.code-panel-mermaid svg .node path,.code-panel-mermaid svg .flowchart-label .label rect{fill:color-mix(in srgb,var(--color-primary) 16%,var(--color-background))!important;stroke:var(--color-primary)!important}.code-panel-mermaid svg .edgePath .path,.code-panel-mermaid svg .flowchart-link,.code-panel-mermaid svg .messageLine0,.code-panel-mermaid svg .messageLine1{stroke:var(--color-primary)!important}.code-panel-mermaid svg .arrowheadPath{fill:var(--color-primary)!important;stroke:var(--color-primary)!important}.code-panel-mermaid svg .cluster rect{fill:color-mix(in srgb,var(--color-primary) 6%,var(--color-surface))!important;stroke:color-mix(in srgb,var(--color-primary) 55%,var(--color-border))!important}.code-panel-mermaid .edgeLabel rect,.code-panel-mermaid .labelBox{fill:var(--color-surface)!important;stroke:color-mix(in srgb,var(--color-primary) 40%,var(--color-border))!important}.code-panel-mermaid .edgeLabel span,.code-panel-mermaid .labelText{color:var(--color-text-secondary)!important}.article-inline-code{font-family:var(--font-mono);font-size:.88em;padding:.12em .38em;border:1px solid color-mix(in srgb,var(--color-primary) 22%,var(--color-border));border-radius:0;background:color-mix(in srgb,var(--color-primary) 8%,var(--color-surface));color:color-mix(in srgb,var(--color-primary) 75%,var(--color-text-primary));word-break:break-word}.article-prose pre:not(.code-panel-body pre.shiki){margin:var(--space-4) 0;padding:var(--space-3);border:1px solid var(--color-border);background:var(--color-background);overflow-x:auto;font-size:.8125rem;line-height:1.65}.article-prose pre:not(.code-panel-body pre.shiki) code{background:none;padding:0;border:none;color:inherit}.article-page{padding-top:4.25rem}.article-masthead{border-bottom:1px solid var(--color-border);background:var(--color-surface)}.article-masthead-inner{max-width:42rem;padding:var(--space-5) var(--space-4) var(--space-4)}.article-back{display:inline-flex;align-items:center;gap:.25rem;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-muted);text-decoration:none;margin-bottom:var(--space-3)}.article-back:hover{color:var(--color-primary);text-decoration:none}.article-title{font-size:var(--font-size-3xl);font-weight:600;line-height:var(--leading-tight);letter-spacing:-.025em;margin-bottom:var(--space-2)}.article-excerpt{font-size:var(--font-size-base);line-height:var(--leading-relaxed);color:var(--color-text-secondary);margin-bottom:var(--space-3)}.article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);font-size:var(--font-size-sm);color:var(--color-text-muted)}.article-meta span,.article-meta time{display:inline-flex;align-items:center;gap:.3rem}.article-meta img{width:1.25rem;height:1.25rem;-o-object-fit:cover;object-fit:cover}.article-meta strong{color:var(--color-text-primary);font-weight:600}.article-cover-wrap{max-width:56rem;margin:0 auto;padding:0 var(--space-4) var(--space-4)}.article-cover-wrap img{display:block;width:100%;height:auto;border:1px solid var(--color-border)}.article-body-wrap{max-width:56rem;margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-8)}.article-layout{display:grid;gap:var(--space-6)}.article-aside{display:none}@media (min-width: 1024px){.article-layout{grid-template-columns:minmax(0,1fr) 14rem;gap:var(--space-8);align-items:stretch}.article-aside{display:block;align-self:stretch}.article-aside-inner{position:sticky;top:5rem;display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-height:calc(100vh - 5.5rem)}.article-aside .article-toc-desktop{flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden}.article-aside .article-toc-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin-top:var(--space-2);padding-right:.15rem;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}.article-aside .article-toc-scroll::-webkit-scrollbar{width:4px}.article-aside .article-toc-scroll::-webkit-scrollbar-thumb{background:var(--color-border)}.article-aside .article-toc-note{margin:0 0 var(--space-1);font-family:var(--font-mono);font-size:.5625rem;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);line-height:1.4}.article-aside .article-panel-label{flex-shrink:0;font-size:var(--font-size-xs);margin-bottom:0}.article-aside-inner>.article-panel:not(.article-toc-desktop){flex-shrink:0}.article-aside .toc-link{font-size:var(--font-size-sm);padding:.3rem 0 .3rem .5rem}}.article-panel{background:var(--color-surface);border:1px solid var(--color-border);padding:var(--space-3) var(--space-4)}.article-panel-label{display:block;margin-bottom:var(--space-2)}.article-toc-mobile{margin-bottom:var(--space-4)}.article-toc-mobile summary{display:flex;align-items:center;justify-content:space-between;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);cursor:pointer;list-style:none;padding:var(--space-2) 0}.article-toc-mobile summary::-webkit-details-marker{display:none}.article-toc-mobile[open] .faq-chevron{transform:rotate(180deg)}.toc-nav ul{list-style:none;margin:0;padding:0}.toc-link{display:block;padding:.3rem 0 .3rem .5rem;font-size:var(--font-size-sm);line-height:var(--leading-normal);color:var(--color-text-secondary);text-decoration:none;border-left:2px solid transparent;transition:color .12s ease,border-color .12s ease}.toc-link:hover{color:var(--color-primary);text-decoration:none}.toc-link.active,.toc-link[aria-current=location]{color:var(--color-primary);border-left-color:var(--color-primary);font-weight:600}.toc-level-3{padding-left:.85rem;font-size:var(--font-size-xs)}.toc-level-4{padding-left:1.25rem;font-size:var(--font-size-xs);color:var(--color-text-muted)}.article-prose{font-size:var(--font-size-base);line-height:var(--leading-relaxed);color:var(--color-text-secondary)}.article-prose h2,.article-prose h3,.article-prose h4{color:var(--color-text-primary);font-weight:600;scroll-margin-top:5rem}.article-prose h2{font-size:var(--font-size-xl);margin:var(--space-6) 0 var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.article-prose h3{font-size:var(--font-size-lg);margin:var(--space-5) 0 var(--space-2)}.article-prose h4{font-size:var(--font-size-base);margin:var(--space-4) 0 var(--space-1)}.article-prose p{margin-bottom:var(--space-3)}.article-prose a{color:var(--color-primary);text-underline-offset:2px}.article-prose .article-list,.article-prose ul,.article-prose ol{margin:0 0 var(--space-3);padding-left:1.35rem}.article-prose .article-list--bullet,.article-prose ul{list-style-type:disc}.article-prose .article-list--number,.article-prose ol{list-style-type:decimal}.article-prose .article-list .article-list--bullet,.article-prose ul ul{list-style-type:circle;margin-top:var(--space-1)}.article-prose .article-list .article-list--number,.article-prose ol ol{list-style-type:lower-alpha;margin-top:var(--space-1)}.article-prose .article-list-item,.article-prose li{display:list-item;margin-bottom:.35rem;padding-left:.15rem}.article-prose .article-list-item::marker,.article-prose li::marker{color:var(--color-primary)}.article-prose blockquote,.article-prose .article-blockquote{margin:var(--space-4) 0;padding:var(--space-3) var(--space-4);border-left:2px solid var(--color-primary);background:color-mix(in srgb,var(--color-primary) 8%,var(--color-surface));font-size:var(--font-size-sm);color:var(--color-text-primary)}.article-prose blockquote p:last-child,.article-prose .article-blockquote p:last-child{margin-bottom:0}.article-prose img{margin:var(--space-4) 0;border:1px solid var(--color-border);max-width:100%}.article-tldr summary{display:flex;align-items:center;justify-content:space-between;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);cursor:pointer;list-style:none}.article-tldr summary::-webkit-details-marker{display:none}.article-tldr[open] .faq-chevron{transform:rotate(180deg)}.article-tldr-body{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border);font-size:var(--font-size-sm)}.article-takeaway-list{list-style:none;margin:var(--space-2) 0 0;padding:0}.article-takeaway-list li{display:flex;gap:var(--space-2);margin-bottom:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.article-takeaway-num{flex-shrink:0;font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-primary);min-width:1rem}.article-section{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border)}.article-section-title{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--space-4)}.article-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.article-tag{font-size:var(--font-size-xs);padding:.15rem .4rem;border:1px solid var(--color-border);color:var(--color-text-muted);background:var(--color-surface-light)}.article-author-row{display:flex;gap:var(--space-3);align-items:flex-start}.article-author-row img{width:2.5rem;height:2.5rem;-o-object-fit:cover;object-fit:cover;border:1px solid var(--color-border)}.article-related-grid{display:grid;gap:var(--space-3)}@media (min-width: 768px){.article-related-grid{grid-template-columns:repeat(3,1fr)}}.article-cta-band{border-top:1px solid var(--color-border);padding:var(--space-6) var(--space-4);background:var(--color-surface)}.article-cta-inner{max-width:28rem;margin:0 auto;text-align:center}.article-cta-inner h2{font-size:var(--font-size-lg);margin-bottom:var(--space-2)}.article-cta-inner p{font-size:var(--font-size-sm);margin-bottom:var(--space-4)}.share-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.share-btn{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:1px solid var(--color-border);color:var(--color-text-muted);background:var(--color-surface-light);transition:all .12s ease}.share-btn:hover{color:#fff;background:var(--color-primary);border-color:var(--color-primary)}.feedback-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.feedback-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .55rem;font-size:var(--font-size-xs);font-weight:500;border:1px solid var(--color-border);background:var(--color-surface-light);color:var(--color-text-primary);cursor:pointer}.feedback-btn:hover{border-color:var(--color-primary);background:var(--color-teal-wash)}.feedback-btn.voted{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.feedback-count{font-size:.625rem;opacity:.85}
