.blog-article{--article-rail-width:280px;--article-grid-gap:72px;--article-prose-width:680px;--article-grid-width:calc(var(--article-rail-width) + var(--article-grid-gap) + var(--article-prose-width));--article-breakout-width:820px;--article-body:var(--lp-body);--article-secondary:var(--lp-subtle);--article-tree:color-mix(in srgb, var(--lp-subtle) 55%, var(--lp-bg));--article-object-gap:32px;background:var(--lp-bg);color:var(--article-body);padding:0 24px 104px;position:relative}.blog-article ::selection{background:rgb(var(--lp-accent-rgb) / .28);color:var(--lp-text)}.article-hero{border-bottom:1px solid var(--lp-border);margin:0 -24px;padding:72px 24px 64px}.article-hero-inner{width:min(100%, var(--article-grid-width));padding-left:calc(var(--article-rail-width) + var(--article-grid-gap));margin:0 auto}.article-title{max-width:720px;font-family:var(--font-sans);font-size:clamp(var(--fs-xl), 1.4rem + 1.1vw, var(--fs-2xl));letter-spacing:-.02em;color:var(--lp-text);text-wrap:balance;margin:0;font-weight:500;line-height:1.2}.article-dek{max-width:680px;font-family:var(--font-sans);font-size:var(--fs-md);color:var(--article-body);text-wrap:pretty;margin:14px 0 0;line-height:1.6}.article-meta{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;max-width:720px;margin:32px 0 0;display:grid}.article-meta dt{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--article-secondary);margin-bottom:7px}.article-meta dd{text-indent:-1.3em;font-family:var(--font-sans);font-size:var(--fs-sm);color:var(--lp-text);overflow-wrap:anywhere;margin:0;padding-left:1.3em;line-height:1.55}.article-meta dd:before{content:"└";text-indent:0;width:1.3em;font-family:var(--font-mono);color:var(--article-tree);display:inline-block}.article-layout{grid-template-columns:var(--article-rail-width) minmax(0, var(--article-prose-width));gap:var(--article-grid-gap);width:min(100%, var(--article-grid-width));align-items:start;margin:0 auto;padding-top:64px;display:grid}.article-column{grid-area:1/2;min-width:0}.article-rail{min-height:calc(100vh - 128px);font-family:var(--font-mono);flex-direction:column;grid-area:1/1;display:flex;position:sticky;top:96px}.article-rail-label{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--article-secondary);margin:0 0 12px;font-weight:400}.article-toc-list,.article-rail-list{margin:0;padding:0;list-style:none}.article-toc-list a{font-size:var(--fs-sm);color:var(--lp-muted);gap:10px;padding:2px 0;line-height:1.45;text-decoration:none;transition:color .15s;display:flex}.article-toc-list a>span:first-child{color:var(--article-tree);flex:none}.article-rail .article-toc-list a>span:last-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.article-toc-list li[data-level="3"] a{padding-left:18px}.article-toc-list a:hover,.article-toc-list a[aria-current=location]{color:var(--lp-text)}.article-toc-list a[aria-current=location]>span:first-child{color:var(--lp-accent)}.article-progress{font-size:var(--fs-xs);color:var(--lp-muted);white-space:nowrap;gap:10px;margin:26px 0 12px;line-height:1;display:flex}.article-progress-bar{letter-spacing:-.04em;color:var(--lp-border);overflow:hidden}.article-progress-bar b{color:var(--lp-accent);font-weight:400}.article-rail-foot{margin-top:auto;padding-top:32px}.article-rail-foot .article-rail-list+.article-rail-label{margin-top:24px}.article-rail-list a,.article-rail-list button{max-width:100%;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--lp-muted);text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:2px 0;line-height:1.45;transition:color .15s;display:block;overflow:hidden}.article-rail-list a:before,.article-rail-list button:before{content:"└ ";color:var(--article-tree)}.article-rail-list a:hover,.article-rail-list button:hover{color:var(--lp-text)}.article-toc-mobile{display:none}.article-prose{min-width:0;font-family:var(--font-sans);font-size:var(--fs-md);color:var(--article-body);line-height:1.7}.article-prose>:first-child{margin-top:0}.article-prose p{margin:0 0 16px}.article-prose h2,.article-prose h3{font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:.08em;color:var(--lp-text);scroll-margin-top:96px;font-weight:500;line-height:1.5;position:relative}.article-prose h2{text-transform:uppercase;margin:56px 0 20px}.article-prose h3{margin:36px 0 16px}.article-prose h2+h3{margin-top:0}.article-heading-anchor{color:inherit;text-decoration:none}.article-heading-anchor:after{content:"#";color:var(--lp-accent);opacity:0;margin-left:10px;transition:opacity .15s}.article-heading-anchor:hover:after,.article-heading-anchor:focus-visible:after{opacity:1}.article-prose ul,.article-prose ol{margin:0 0 20px;padding-left:1.25em;list-style-position:outside}.article-prose ul{list-style-type:disc}.article-prose ol{list-style-type:decimal}.article-prose li+li{margin-top:6px}.article-prose li::marker{color:var(--article-secondary)}.article-prose ol>li::marker{font-family:var(--font-mono);font-size:.85em}.article-prose a:not(.article-heading-anchor){color:inherit;overflow-wrap:anywhere;text-underline-offset:.2em;text-decoration-line:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--article-secondary);text-decoration-color:var(--article-secondary);transition:color .15s,text-decoration-color .15s}.article-prose a:not(.article-heading-anchor):hover{color:var(--lp-accent);-webkit-text-decoration-color:var(--lp-accent);text-decoration-color:var(--lp-accent)}.article-prose [data-footnotes],.article-prose [data-footnotes] li,.article-prose [data-footnotes] p{min-width:0;max-width:100%}.article-prose [data-footnotes]{font-size:var(--fs-sm);overflow-x:clip}.article-prose [data-footnote-ref],.article-prose [data-footnote-backref],.article-prose [id^=user-content-fn]{scroll-margin-top:96px}.article-prose :not(pre)>code{border:1px solid var(--lp-border);background:var(--lp-surface);color:var(--lp-text);font-family:var(--font-mono);overflow-wrap:anywhere;padding:.0625em .25em;font-size:.85em}.article-prose strong{color:var(--lp-text);font-weight:700}.article-prose hr{border:0;border-top:1px solid var(--lp-border);margin:56px 0}.article-callout{border-left:1px solid var(--article-secondary);color:var(--article-body);margin:28px 0;padding-left:20px}.article-callout>:last-child{margin-bottom:0}.article-standard-object,.article-breakout{margin-top:var(--article-object-gap);margin-bottom:var(--article-object-gap)}.article-standard-object{width:100%}.article-breakout{width:min(var(--article-breakout-width), calc(100vw - 48px))}.article-code,.article-table{border:1px solid var(--lp-border);background:var(--lp-surface);overflow:hidden}.article-code-toolbar{border-bottom:1px solid var(--lp-border);min-height:36px;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--article-secondary);justify-content:space-between;align-items:center;padding:0 16px;display:flex}.article-code-toolbar button{min-height:32px;color:var(--article-secondary);text-transform:inherit;letter-spacing:inherit;align-items:center;gap:7px;transition:color .15s;display:inline-flex}.article-code-toolbar button:hover{color:var(--lp-text)}.article-code-toolbar svg{width:13px;height:13px}.article-code-content,.article-code-content>pre,.article-code-content .article-code-scroll{background:var(--lp-surface)!important;border-radius:0!important;margin:0!important}.article-code-content .article-code-pre{color:var(--code-text)!important}.article-code-content .article-code-scroll{filter:saturate(.62);overflow-x:auto}.article-code-content .article-code-pre{min-width:max-content;font-size:var(--fs-sm);line-height:1.75;padding:16px!important}.article-table{overscroll-behavior-inline:contain;overflow-x:auto}.article-table table{border-collapse:collapse;width:100%;min-width:560px;font-family:var(--font-sans);font-size:var(--fs-sm);line-height:1.5}.article-table th{border-bottom:1px solid var(--lp-border);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-align:left;text-transform:uppercase;white-space:nowrap;color:var(--article-secondary);padding:12px 16px;font-weight:400}.article-table td{border-bottom:1px solid var(--lp-border);color:var(--article-body);vertical-align:top;padding:12px 16px}.article-table td code{white-space:nowrap;overflow-wrap:normal}.article-table tr:last-child td{border-bottom:0}.article-prose img,.article-prose svg{max-width:100%;height:auto}.article-prose figcaption{font-size:var(--fs-sm);color:var(--article-secondary);margin-top:10px;line-height:1.6}.article-afterword{margin-top:72px}.article-afterword>div{border-radius:0;margin:0;background:var(--lp-surface)!important}.blog-related{margin-top:64px}.blog-rows{border-top:1px solid var(--lp-border);margin:0;padding:0;list-style:none}.blog-row{border-bottom:1px solid var(--lp-border);grid-template-columns:120px minmax(0,1fr) auto;align-items:baseline;gap:24px;padding:18px 0;text-decoration:none;display:grid}.blog-row-date,.blog-row-time{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--article-secondary,var(--lp-subtle));white-space:nowrap}.blog-row-title{font-family:var(--font-sans);font-size:var(--fs-md);color:var(--lp-text);line-height:1.4;transition:color .15s}.blog-row:hover .blog-row-title{color:var(--lp-accent)}.blog-index{grid-template-columns:300px minmax(0,1fr);gap:72px;width:min(100%,1180px);margin:0 auto;padding:72px 24px 120px;display:grid}.blog-index-intro{align-self:start;position:sticky;top:96px}.blog-index-title{font-family:var(--font-mono);font-size:var(--fs-xl);letter-spacing:-.02em;color:var(--lp-text);margin:0 0 16px;font-weight:400;line-height:1.2}.blog-index-intro p{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--lp-body);line-height:1.6}.blog-tabs{border-bottom:1px solid var(--lp-border);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap;align-items:baseline;gap:8px 24px;padding-bottom:14px;display:flex}.blog-tabs a,.blog-tabs summary{color:var(--lp-muted);cursor:pointer;padding:4px 0;transition:color .15s;position:relative}.blog-tabs a:hover,.blog-tabs summary:hover,.blog-tabs a[aria-current=page]{color:var(--lp-text)}.blog-tabs a[aria-current=page]{box-shadow:inset 0 -1px}.blog-tabs a .count{color:var(--lp-subtle);margin-left:6px}.blog-tabs details{display:contents}.blog-tabs summary{list-style:none}.blog-tabs summary::-webkit-details-marker{display:none}.blog-tabs details[open] summary{color:var(--lp-text)}.blog-tabs-more{flex-wrap:wrap;flex-basis:100%;gap:4px 24px;padding-top:8px;display:flex}.blog-featured{border-bottom:1px solid var(--lp-border);grid-template-columns:240px minmax(0,1fr) auto;gap:24px;padding:20px 0 24px;text-decoration:none;display:grid}.blog-featured-image{aspect-ratio:1200/630;border:1px solid var(--lp-border);background:var(--lp-surface);position:relative;overflow:hidden}.blog-featured-chips{font-family:var(--font-mono);font-size:var(--fs-xs);margin-bottom:12px;display:flex}.blog-featured-chips span{border:1px solid var(--lp-border);color:var(--lp-subtle);padding:2px 8px}.blog-featured-chips span:first-child{border-color:var(--lp-text);background:var(--lp-text);color:var(--lp-bg)}.blog-featured-title{font-family:var(--font-sans);letter-spacing:-.02em;color:var(--lp-text);text-wrap:balance;margin:0;font-size:clamp(1.5rem,1rem + 1vw,2rem);font-weight:500;line-height:1.2;transition:color .15s}.blog-featured:hover .blog-featured-title{color:var(--lp-accent)}.blog-featured-excerpt{font-family:var(--font-sans);font-size:var(--fs-sm);color:var(--lp-body);margin:10px 0 0;line-height:1.6}.blog-pagination{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--lp-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-top:20px;display:flex}.blog-pagination nav{gap:24px;display:flex}.blog-pagination a{color:var(--lp-muted);transition:color .15s}.blog-pagination a:hover{color:var(--lp-text)}@media (max-width:1099px){.blog-article{--article-rail-width:200px;--article-grid-gap:48px}.blog-index{grid-template-columns:220px minmax(0,1fr);gap:48px}}@media (max-width:999px){.article-hero-inner{width:min(100%, var(--article-prose-width));padding-left:0}.article-layout{width:min(100%, var(--article-prose-width));padding-top:48px;display:block}.article-rail{display:none}.article-toc-mobile{width:min(100%, var(--article-prose-width));border:1px solid var(--lp-border);font-family:var(--font-mono);margin:0 auto 40px;display:block}.article-toc-mobile summary{cursor:pointer;font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--article-secondary);padding:12px 16px}.article-toc-mobile .article-toc-list{padding:0 16px 14px}.article-breakout{width:100%}.blog-index{padding-top:48px;display:block}.blog-index-intro{margin-bottom:40px;position:static}}@media (max-width:640px){.blog-article{padding:0 20px 72px}.article-hero{margin:0 -20px;padding:44px 20px 40px}.article-title{font-size:var(--fs-xl);line-height:1.25}.article-dek{font-size:var(--fs-md)}.article-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.article-prose{font-size:var(--fs-md)}.article-prose h2{margin-top:48px}.blog-row{grid-template-columns:minmax(0,1fr) auto;gap:6px 16px}.blog-row-date{grid-area:1/1}.blog-row-time{grid-area:1/2}.blog-row-title{grid-column:1/-1}.blog-featured{grid-template-columns:minmax(0,1fr) auto}.blog-featured-image{grid-column:1/-1}.blog-index{padding:40px 20px 80px}}@media (prefers-reduced-motion:reduce){.article-heading-anchor:after,.article-toc-list a,.blog-row-title{transition:none}}
