.hn-discuss-container[data-astro-cid-5rcdvcrt]{margin-top:2.5rem;margin-bottom:2rem}.hn-discuss-card[data-astro-cid-5rcdvcrt]{background-color:var(--color-panel);border:1px solid var(--color-hairline);border-radius:12px;align-items:center;gap:1rem;padding:1.25rem 1.5rem;transition:border-color .2s,box-shadow .2s;display:flex;box-shadow:0 2px 10px #00000008}.hn-discuss-card[data-astro-cid-5rcdvcrt]:hover{border-color:#f60}.hn-logo-badge[data-astro-cid-5rcdvcrt]{color:#fff;-webkit-user-select:none;user-select:none;background-color:#f60;border-radius:6px;justify-content:center;align-items:center;width:38px;min-width:38px;height:38px;font-family:Verdana,Geneva,sans-serif;font-size:1.3rem;font-weight:800;display:flex;box-shadow:inset 0 -1px #0003}.hn-discuss-content[data-astro-cid-5rcdvcrt]{flex:1;min-width:0}.hn-title[data-astro-cid-5rcdvcrt]{color:var(--color-ink);margin:0;font-size:1.05rem;font-weight:600}.hn-subtitle[data-astro-cid-5rcdvcrt]{color:var(--color-ink-soft);margin:.2rem 0 0;font-size:.9rem;line-height:1.4}.hn-discuss-action[data-astro-cid-5rcdvcrt]{flex-shrink:0}.hn-discuss-btn[data-astro-cid-5rcdvcrt]{background-color:#f60;border-radius:6px;align-items:center;gap:.5rem;padding:.55rem 1rem;font-size:.9rem;font-weight:600;transition:background-color .2s,transform .15s;display:inline-flex;box-shadow:0 1px 3px #ff66004d;color:#fff!important;text-decoration:none!important}.hn-discuss-btn[data-astro-cid-5rcdvcrt]:hover{background-color:#e65c00;transform:translateY(-1px);color:#fff!important}.hn-icon[data-astro-cid-5rcdvcrt]{flex-shrink:0}.hn-comment-card[data-astro-cid-5rcdvcrt]{background-color:var(--color-panel);border:1px solid var(--color-hairline);border-radius:8px;padding:.85rem 1.1rem;font-size:.92rem;line-height:1.5}.hn-comment-meta[data-astro-cid-5rcdvcrt]{color:var(--color-ink-soft);align-items:center;gap:.5rem;margin-bottom:.4rem;font-size:.8rem;display:flex}.hn-comment-author[data-astro-cid-5rcdvcrt]{color:var(--color-ink);font-weight:700}.hn-comment-author[data-astro-cid-5rcdvcrt].is-author{color:#f60;background-color:#ff66001f;border-radius:4px;padding:.1rem .4rem}.hn-comment-body[data-astro-cid-5rcdvcrt]{color:var(--color-ink);word-break:break-word}.hn-comment-body[data-astro-cid-5rcdvcrt] p[data-astro-cid-5rcdvcrt]{margin-top:.3em;margin-bottom:.5em;font-size:.92rem}.hn-comment-body[data-astro-cid-5rcdvcrt] p[data-astro-cid-5rcdvcrt]:last-child{margin-bottom:0}.hn-comment-body[data-astro-cid-5rcdvcrt] pre[data-astro-cid-5rcdvcrt]{font-family:var(--font-mono);background:#0000000d;border-radius:4px;padding:.5rem;font-size:.85rem;overflow-x:auto}@media (width<=600px){.hn-discuss-card[data-astro-cid-5rcdvcrt]{flex-direction:column;align-items:flex-start;gap:.85rem;padding:1rem 1.15rem}.hn-discuss-action[data-astro-cid-5rcdvcrt]{width:100%}.hn-discuss-btn[data-astro-cid-5rcdvcrt]{justify-content:center;width:100%}}:root{--diff-add-bg:#e6ffec;--diff-add-border:#34d058;--diff-add-gutter:#22863a;--diff-remove-bg:#ffebe9;--diff-remove-border:#d73a49;--diff-remove-gutter:#cb2431;--diff-unchanged-opacity:.85}.dark{--diff-add-bg:#1a3a2a;--diff-add-border:#57ab5a;--diff-add-gutter:#57ab5a;--diff-remove-bg:#3a1a1a;--diff-remove-border:#e5534b;--diff-remove-gutter:#e5534b;--diff-unchanged-opacity:.85}.split-post-layout{width:100%;max-width:1400px;min-height:calc(100vh - 80px);margin:0 auto;display:flex;position:relative}.blog-pane{flex:0 0 70%;max-width:70%;padding:2rem 2rem 4rem;transition:flex .4s cubic-bezier(.16,1,.3,1),max-width .4s cubic-bezier(.16,1,.3,1);position:relative}.blog-pane .article{max-width:100%;margin:0}:is(h1,h2,h3,h4,h5,h6)[data-section]{border-left:4px solid color-mix(in srgb, var(--color-brand) 25%, transparent);cursor:pointer;border-radius:2px;margin-left:-.75rem;padding-left:.75rem;transition:border-color .3s}:is(h1,h2,h3,h4,h5,h6)[data-section]:hover{border-left-color:color-mix(in srgb, var(--color-brand) 50%, transparent)}:is(h1,h2,h3,h4,h5,h6)[data-section].active-section{border-left-color:var(--color-brand)}.snap-annotation{font-family:"Comic Sans MS", "Chalkboard SE", "Marker Felt", cursive, var(--font-sans);color:var(--color-ink-soft);opacity:.78;pointer-events:none;white-space:nowrap;z-index:10;font-size:.72rem;line-height:1.3;transition:opacity .4s cubic-bezier(.16,1,.3,1),visibility .4s cubic-bezier(.16,1,.3,1)}.snap-annotation-arrow{vertical-align:middle;pointer-events:none;flex-shrink:0;display:inline-block}.snap-annotation-heading{align-items:flex-end;gap:.2rem;margin-top:1rem;margin-bottom:.1rem;margin-left:-.75rem;display:flex}.snap-annotation-heading+[data-section]{margin-top:0!important}.snap-annotation-config{align-items:center;gap:.25rem;max-width:calc(100vw - 2rem);transition:opacity .4s cubic-bezier(.16,1,.3,1),visibility .4s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;top:calc(100% + 6px);left:auto;right:0}.snap-annotation-zoom{align-items:center;gap:.25rem;transition:opacity .4s cubic-bezier(.16,1,.3,1),visibility .4s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;bottom:calc(100% + 6px);right:0}.split-post-layout.toolbar-annotations-hidden .snap-annotation-config,.split-post-layout.toolbar-annotations-hidden .snap-annotation-zoom,.config-panel-wrapper:hover .snap-annotation-config,.config-panel-wrapper:hover~.snap-annotation-config,.config-gear:hover .snap-annotation-config,.config-gear:hover~.snap-annotation-config,.config-gear.pinned .snap-annotation-config,.config-gear.pinned~.snap-annotation-config,.config-tray.pinned .snap-annotation-config{opacity:0;visibility:hidden;pointer-events:none}.code-snippet-label{color:var(--color-brand);white-space:nowrap;text-overflow:ellipsis;opacity:.85;max-width:100%;font-size:.75rem;font-style:italic;overflow:hidden}.pane-toolbar-anchor{z-index:25;height:0;position:sticky;top:80px}.blog-pane .pane-toolbar-anchor{top:80px}.code-pane .pane-toolbar-anchor{top:0}.pane-toolbar{align-items:center;gap:6px;display:flex;position:absolute;top:.75rem;right:.75rem}.zoom-btn{border:1px solid var(--color-hairline);background:var(--color-panel);width:28px;height:28px;color:var(--color-ink-soft);cursor:pointer;opacity:.7;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:opacity .2s,background-color .2s,color .2s,border-color .2s;display:flex;position:relative}.zoom-btn:hover{opacity:1;background:var(--color-brand);color:#fff;border-color:var(--color-brand)}.zoom-btn.zoomed{opacity:.7;background:var(--color-brand);color:#fff;border-color:var(--color-brand)}.code-pane{background-color:var(--color-panel);border:1px solid var(--color-hairline);max-height:calc(100vh - 80px);box-shadow:0 1px 8px color-mix(in srgb, var(--color-hairline) 25%, transparent);z-index:20;border-radius:8px;flex:auto;align-self:flex-start;margin:1.5rem .75rem 1.5rem .5rem;padding:0;position:sticky;top:80px;overflow-y:auto}.code-pane-wrapper{display:contents}.code-pane-top-bar{justify-content:space-between;align-items:center;gap:.5rem;padding:.25rem .5rem .5rem;display:flex}.code-pane-top-bar-right{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.code-block-wrapper{margin-bottom:0}.code-block-header{background-color:var(--color-panel);border:1px solid var(--color-hairline);font-family:var(--font-sans);color:var(--color-ink-soft);border-bottom:none;border-radius:6px 6px 0 0;justify-content:space-between;align-items:center;padding:.35rem .75rem;font-size:.8rem;display:flex}.split-post-layout:not(.code-zoomed):not(.blog-zoomed) .code-block-header{display:none}.code-block-header-left,.code-block-header-right{align-items:center;gap:.5rem;display:flex}.code-section-label{color:var(--color-ink);margin-bottom:.15rem;font-size:1rem;font-weight:700}.split-post-layout:not(.code-zoomed):not(.blog-zoomed) .code-section-label,.split-post-layout:not(.code-zoomed):not(.blog-zoomed) .code-section-summary,.split-post-layout:not(.code-zoomed):not(.blog-zoomed) .code-section-divider{display:none}.code-section-summary{color:var(--color-ink-soft);margin-bottom:.75rem;font-size:.85rem}.code-section-divider{border:none;border-top:1px solid var(--color-hairline);margin:.5rem 0 .75rem}.lang-select{appearance:none;border:1px solid var(--color-hairline);background-color:var(--color-panel);color:var(--color-ink);font-size:.75rem;font-family:var(--font-sans);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M1 2l3 3 3-3' stroke='%23888' fill='none' stroke-width='1.2'/%3E%3C/svg%3E");background-position:right .4rem center;background-repeat:no-repeat;border-radius:4px;padding:.15rem 1.5rem .15rem .5rem}.lang-select:hover{border-color:var(--color-brand)}.lang-select:focus-visible{outline:2px solid var(--color-brand);outline-offset:1px}.language-availability-notice{color:var(--color-brand);border-left:3px solid var(--color-brand);background-color:color-mix(in srgb, var(--color-brand) 10%, transparent);margin-bottom:.5rem;padding:.25rem .5rem;font-size:.75rem}.diff-code-block{font-family:var(--font-mono);border-left:3px solid var(--color-brand);background-color:var(--color-page);overscroll-behavior:contain;max-height:calc(29em + .5rem);font-size:.85rem;line-height:1.45;overflow:auto}.diff-code-block pre.astro-code{border:none;border-radius:0;margin:0;background-color:#0000!important}.diff-lines-container{box-sizing:border-box;min-width:100%;display:inline-block}.diff-line{box-sizing:border-box;width:100%;min-height:1.45em;padding:0 .5rem;display:flex}.diff-line.unchanged{opacity:var(--diff-unchanged-opacity)}.diff-line.add{background-color:var(--diff-add-bg)}.diff-line.remove{background-color:var(--diff-remove-bg)}.diff-gutter{text-align:right;width:3rem;color:var(--color-ink-soft);opacity:.6;-webkit-user-select:none;user-select:none;flex-shrink:0;padding-right:.5rem;font-size:.8rem}.diff-line.add .diff-gutter{color:var(--diff-add-gutter);opacity:1}.diff-line.remove .diff-gutter{color:var(--diff-remove-gutter);opacity:1}.diff-gutter-sign{text-align:left;width:.8rem;font-weight:700;display:inline-block}.diff-content{white-space:pre;flex:1;overflow-x:visible}.diff-line.gap-line{opacity:.85}.diff-line.gap-line .diff-gutter{opacity:.4}.diff-line.gap-line .diff-content{color:var(--color-ink-soft);font-style:italic}.hide-removed .diff-line.remove{display:none}.diff-stats{color:var(--color-ink-soft);border-top:1px solid var(--color-hairline);background-color:var(--color-panel);font-size:.75rem;font-family:var(--font-sans);padding:.35rem .75rem}.split-post-layout:not(.code-zoomed):not(.blog-zoomed) .diff-stats{display:none}.diff-stats .added{color:var(--diff-add-gutter);font-weight:600}.diff-stats .removed{color:var(--diff-remove-gutter);font-weight:600}.config-panel-wrapper{z-index:26;position:relative}.config-gear{border:1px solid var(--color-hairline);background-color:var(--color-panel);width:28px;height:28px;color:var(--color-ink-soft);cursor:pointer;opacity:.7;border-radius:6px;justify-content:center;align-items:center;font-size:.8rem;transition:opacity .2s,background-color .2s,color .2s;display:flex}.config-gear:hover,.config-gear.pinned{opacity:1;color:var(--color-brand)}.config-tray{background-color:var(--color-panel);border:1px solid var(--color-hairline);opacity:0;visibility:hidden;border-radius:8px;min-width:200px;padding:.75rem 1rem;transition:opacity .15s,visibility .15s,transform .15s;position:absolute;top:0;right:40px;transform:translate(4px);box-shadow:0 4px 12px #0000001a}.config-gear:hover+.config-tray,.config-tray:hover,.config-tray.pinned{opacity:1;visibility:visible;transform:translate(0)}.config-tray-header{color:var(--color-ink);border-bottom:1px solid var(--color-hairline);margin-bottom:.5rem;padding-bottom:.35rem;font-size:.85rem;font-weight:600}.config-toggle-row{color:var(--color-ink);justify-content:space-between;align-items:center;gap:1rem;padding:.3rem 0;font-size:.8rem;display:flex}.config-toggle-label{flex:1}.config-toggle-switch{flex-shrink:0;width:36px;height:20px;position:relative}.config-toggle-switch input{opacity:0;width:0;height:0}.config-toggle-slider{cursor:pointer;background-color:var(--color-hairline);border-radius:10px;transition:background-color .2s;position:absolute;inset:0}.config-toggle-slider:before{content:"";background-color:#fff;border-radius:50%;width:14px;height:14px;transition:transform .2s;position:absolute;bottom:3px;left:3px}.config-toggle-switch input:checked+.config-toggle-slider{background-color:var(--color-brand)}.config-toggle-switch input:checked+.config-toggle-slider:before{transform:translate(16px)}.config-section{border-top:1px solid var(--color-hairline);margin-top:.6rem;padding-top:.5rem}.config-section-label{color:var(--color-ink-soft);margin-bottom:.4rem;font-size:.78rem;font-weight:500}.config-segmented-control{background-color:var(--color-bg-subtle,#0000000d);border:1px solid var(--color-hairline);border-radius:6px;gap:2px;padding:2px;display:flex;position:relative}.segmented-btn{color:var(--color-ink-soft);cursor:pointer;text-align:center;white-space:nowrap;background:0 0;border:none;border-radius:4px;flex:1;padding:4px 6px;font-size:.72rem;font-weight:500;transition:background-color .15s,color .15s,box-shadow .15s}.segmented-btn:hover{color:var(--color-ink)}.segmented-btn.active{background-color:var(--color-panel);color:var(--color-brand);font-weight:600;box-shadow:0 1px 3px #0000001f}.config-toggle-switch input:focus-visible+.config-toggle-slider{outline:2px solid var(--color-brand);outline-offset:2px}.copy-btn,.inline-copy-btn{border:1px solid var(--color-hairline);width:28px;height:28px;color:var(--color-ink-soft);cursor:pointer;opacity:.6;background-color:#0000;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:opacity .2s,background-color .2s,color .2s,border-color .2s;display:flex}.copy-btn:hover,.inline-copy-btn:hover{opacity:1;background-color:var(--color-brand);color:#fff;border-color:var(--color-brand)}.copy-btn.copied,.inline-copy-btn.copied{opacity:1;background-color:var(--diff-add-bg);color:var(--diff-add-gutter);border-color:var(--diff-add-border)}.copy-btn-wrapper{align-items:center;display:inline-flex;position:relative}.snap-annotation-copy{opacity:0;visibility:hidden;pointer-events:none;white-space:nowrap;z-index:30;align-items:center;gap:.25rem;transition:opacity .8s cubic-bezier(.16,1,.3,1),visibility .8s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;bottom:calc(100% + 4px);right:0}.snap-annotation-copy.visible{opacity:.78!important;visibility:visible!important}.split-post-layout.blog-zoomed .blog-pane{flex:100%;max-width:100%}.split-post-layout.blog-zoomed .code-pane,.split-post-layout.blog-zoomed .code-pane-wrapper{display:none}.split-post-layout.blog-zoomed .mobile-inline-code{display:block}.split-post-layout.blog-zoomed .snap-annotation:not(.snap-annotation-config):not(.snap-annotation-copy),.split-post-layout.code-zoomed .snap-annotation:not(.snap-annotation-copy){display:none!important}.split-post-layout.blog-zoomed :is(h1,h2,h3,h4,h5,h6)[data-section]{cursor:default;border-left-color:var(--color-brand)}.code-pane{background-color:var(--color-panel);border:1px solid var(--color-hairline);max-height:calc(100vh - 80px);box-shadow:0 1px 8px color-mix(in srgb, var(--color-hairline) 25%, transparent);z-index:20;border-radius:8px;flex:auto;align-self:flex-start;margin:1.5rem .75rem 1.5rem .5rem;padding:0;transition:opacity .35s cubic-bezier(.16,1,.3,1),transform .35s cubic-bezier(.16,1,.3,1),visibility .35s cubic-bezier(.16,1,.3,1),max-width .4s cubic-bezier(.16,1,.3,1),width .4s cubic-bezier(.16,1,.3,1),flex .4s cubic-bezier(.16,1,.3,1),margin .4s cubic-bezier(.16,1,.3,1),box-shadow .4s cubic-bezier(.16,1,.3,1);position:sticky;top:80px;overflow:visible}.split-post-layout.code-zoomed .code-pane{opacity:1!important;visibility:visible!important;pointer-events:auto!important;transform:none!important}.code-pane-inner{padding:.75rem}.code-pane-body{align-items:stretch;gap:1.25rem;display:flex}.code-block-container{flex:auto;min-width:0}.split-post-layout.code-zoomed .blog-pane{display:none}.split-post-layout.code-zoomed .code-pane-wrapper{flex:auto;width:100%;max-width:1350px;margin:1rem auto;display:flex}.split-post-layout.code-zoomed .code-pane{flex-direction:column;flex:100%;width:calc(100vw - 48px);max-width:1350px;height:calc(100vh - 100px);max-height:calc(100vh - 100px);margin:0 auto;display:flex;box-shadow:0 12px 40px #00000024}.split-post-layout.code-zoomed .code-pane-inner{box-sizing:border-box;flex-direction:column;height:100%;padding:1rem;display:flex}.split-post-layout.code-zoomed .code-pane-body{flex:auto;align-items:stretch;gap:1.5rem;min-height:0;display:flex;overflow:hidden}.split-post-layout.code-zoomed .code-block-container{flex-direction:column;flex:auto;justify-content:center;min-height:0;display:flex;overflow:hidden}.split-post-layout.code-zoomed .diff-code-block{max-height:100%;margin:auto 0;overflow-y:auto}.timeline-column{border-right:1px solid color-mix(in srgb, var(--color-hairline) 60%, transparent);flex-direction:column;flex:0 0 230px;justify-content:space-around;width:230px;padding:1rem .5rem;display:none;position:relative}.split-post-layout.code-zoomed .timeline-column{display:flex}.timeline-thread-svg{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.timeline-thread-path{stroke:color-mix(in srgb, var(--color-brand) 55%, transparent)}.timeline-dot-wrapper{cursor:pointer;z-index:2;flex-direction:row;align-items:center;gap:.75rem;width:100%;padding:.6rem .25rem;transition:transform .35s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative}.timeline-dot-wrapper.active{transform:translate(16px)}.timeline-dot{border:2px solid var(--color-brand);background-color:var(--color-page);z-index:2;border-radius:50%;flex-shrink:0;width:12px;height:12px;transition:background-color .3s,border-color .3s,transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}.timeline-dot-wrapper.active .timeline-dot{background-color:var(--color-brand);box-shadow:0 0 10px color-mix(in srgb, var(--color-brand) 50%, transparent);transform:scale(1.3)}.timeline-dot-wrapper:hover .timeline-dot{background-color:var(--color-brand);transform:scale(1.2)}.timeline-label{color:var(--color-ink-soft);white-space:normal;font-size:.85rem;line-height:1.35;transition:color .2s,font-weight .2s}.timeline-dot-wrapper.active .timeline-label{color:var(--color-brand);font-weight:700}.timeline-tooltip{display:none}.split-post-layout.code-zoomed .code-snippet-label{white-space:normal;-webkit-line-clamp:3;color:var(--color-ink);opacity:.95;-webkit-box-orient:vertical;max-height:4.5em;font-size:.88rem;font-style:normal;line-height:1.45;display:-webkit-box;overflow:hidden}.split-post-layout.code-zoomed .diff-code-block{max-height:calc(100vh - 200px)}@media (width<=1023px){.blog-pane{flex:0 0 60%;max-width:60%;padding:1.5rem 1rem 3rem 1.5rem}.code-section-summary{font-size:.78rem}}.inline-code-wrapper,.mobile-inline-code{background-color:var(--color-panel);border:1px solid var(--color-hairline);box-shadow:0 1px 8px color-mix(in srgb, var(--color-hairline) 25%, transparent);border-radius:8px;margin:1.25rem 0 2.25rem;overflow:visible}.inline-code-wrapper{display:block}.mobile-inline-code{display:none}.inline-code-wrapper .code-pane-inner,.mobile-inline-code .code-pane-inner{padding:.75rem}.inline-code-wrapper .diff-code-block,.mobile-inline-code .diff-code-block{max-height:450px}.article .inline-code-wrapper pre.astro-code,.inline-code-wrapper pre.astro-code,.article .mobile-inline-code pre.astro-code,.mobile-inline-code pre.astro-code{background-color:#0000!important;border:none!important;border-radius:0!important;margin:0!important;padding:0!important}.article .inline-code-wrapper code,.inline-code-wrapper code,.article .mobile-inline-code code,.mobile-inline-code code{background:0 0!important;border:none!important;border-radius:0!important;padding:0!important}.inline-code-wrapper .diff-line,.mobile-inline-code .diff-line{border:none!important}@media (width<=767px){.split-post-layout{flex-direction:column}.blog-pane{flex:auto;max-width:100%;padding:1rem 1rem 2rem}.code-pane-wrapper,.snap-annotation:not(.snap-annotation-config):not(.snap-annotation-copy){display:none!important}.snap-annotation-config{max-width:calc(100vw - 2rem);font-size:.68rem;left:auto;right:0;display:flex!important}:is(h1,h2,h3,h4,h5,h6)[data-section]{cursor:default;border-left-color:var(--color-brand)!important}.mobile-inline-code{display:block}.zoom-btn{display:none!important}}.blog-pane,.code-pane{transition:flex .3s,max-width .3s,margin .3s,box-shadow .3s}.no-js .zoom-btn,.no-js .config-panel-wrapper{display:none}.no-js .split-post-layout{display:block}.no-js .blog-pane{max-width:100%}.no-js .code-pane{max-height:none;margin:1rem;position:static}
