﻿:root{--global-bg-color:#fff;--global-code-bg-color:rgba(181,9,172,0.05);--global-text-color:#000;--global-text-color-light:#707070;--global-theme-color:#b71c1c;--global-button-color:#b71c1c;--global-hover-color:#b71c1c;--global-hover-text-color:#fff;--global-footer-bg-color:#fff;--global-footer-text-color:#707070;--global-footer-link-color:#000;--global-distill-app-color:#828282;--global-divider-color:rgba(0,0,0,0.1);--global-card-bg-color:#fff;--global-highlight-color:#b71c1c;--global-back-to-top-bg-color:rgba(0,0,0,0.4);--global-back-to-top-text-color:#fff;--global-newsletter-bg-color:#fff;--global-newsletter-text-color:#000;--global-tip-block:#42b983;--global-tip-block-bg:#e2f5ec;--global-tip-block-text:#215d42;--global-tip-block-title:#359469;--global-warning-block:#e7c000;--global-warning-block-bg:#fff8d8;--global-warning-block-text:#6b5900;--global-warning-block-title:#b29400;--global-danger-block:#c00;--global-danger-block-bg:#ffe0e0;--global-danger-block-text:#600;--global-danger-block-title:#c00}:root #light-toggle-system{padding-left:10px;padding-top:12px;display:block}:root #light-toggle-dark{display:none}:root #light-toggle-light{display:none}:root #back-to-top{color:var(--global-back-to-top-text-color);background:var(--global-back-to-top-bg-color);bottom:30px;right:30px;height:40px;width:40px;z-index:10}html[data-theme=dark]{--global-bg-color:#1c1c1d;--global-code-bg-color:#2c3237;--global-text-color:#e8e8e8;--global-text-color-light:#909090;--global-theme-color:#ff4848;--global-button-color:#d92b2b;--global-hover-color:#ff4848;--global-hover-text-color:#fff;--global-footer-bg-color:#1c1c1d;--global-footer-text-color:#909090;--global-footer-link-color:#e8e8e8;--global-distill-app-color:#e8e8e8;--global-divider-color:#424246;--global-card-bg-color:#212529;--global-back-to-top-bg-color:rgba(255,255,255,0.5);--global-back-to-top-text-color:#000;--global-newsletter-bg-color:#e8e8e8;--global-newsletter-text-color:#1c1c1d;--global-tip-block:#42b983;--global-tip-block-bg:#e2f5ec;--global-tip-block-text:#215d42;--global-tip-block-title:#359469;--global-warning-block:#e7c000;--global-warning-block-bg:#fff8d8;--global-warning-block-text:#6b5900;--global-warning-block-title:#b29400;--global-danger-block:#c00;--global-danger-block-bg:#ffe0e0;--global-danger-block-text:#600;--global-danger-block-title:#c00}html[data-theme-setting=dark] #light-toggle-system{display:none}html[data-theme-setting=dark] #light-toggle-dark{padding-left:10px;padding-top:12px;display:block}html[data-theme-setting=dark] #light-toggle-light{display:none}html[data-theme-setting=dark] #back-to-top{color:var(--global-back-to-top-text-color);background:var(--global-back-to-top-bg-color)}html[data-theme-setting=light] #light-toggle-system{display:none}html[data-theme-setting=light] #light-toggle-dark{display:none}html[data-theme-setting=light] #light-toggle-light{padding-left:10px;padding-top:12px;display:block}body{padding-bottom:70px;color:var(--global-text-color);background-color:var(--global-bg-color)}body h1,body h2,body h3,body h4,body h5,body h6{scroll-margin-top:66px}body.fixed-top-nav{padding-top:56px}body.sticky-bottom-footer{padding-bottom:0}.container{max-width:930px}.profile img{width:100%}p,h1,h2,h3,h4,h5,h6,em,div,li,span,strong{color:var(--global-text-color)}hr{border-top:1px solid var(--global-divider-color)}table td,table th{font-size:1rem;padding:1px 1rem 1px 0}table th{font-weight:bold}.h2-card{background-color:var(--global-card-bg-color);border-radius:8px;box-shadow:0 2px 5px rgba(0,0,0,.1);padding:1.25rem;margin:1.5rem 0}.h2-card h2{margin-top:0;margin-bottom:.75rem}.h2-card-body{padding-top:.5rem}a,table.table a{color:var(--global-theme-color)}a:hover,table.table a:hover{color:var(--global-theme-color);text-decoration:underline}a:hover:after :not(.nav-item.dropdown),table.table a:hover:after :not(.nav-item.dropdown){width:100%}html[data-theme=dark] .table{color:#fff}.table-dark{background-color:rgba(0,0,0,0)}blockquote{background:var(--global-bg-color);border-left:5px solid var(--global-theme-color);margin:1.5em 0;padding:1em;font-size:1.2rem}blockquote p{margin-bottom:0}.equation{margin-bottom:1rem;text-align:center}.caption{font-size:.875rem;margin-top:.75rem;margin-bottom:1.5rem;text-align:center}.card{background-color:var(--global-card-bg-color)}.citation,.citation-number{color:var(--global-theme-color)}.profile{width:100%}@media(min-width:576px){.profile{width:30%}.profile .address p{display:block}}.post-description{margin-bottom:2rem;font-size:.875rem}.post-description a{color:inherit}.post-description a:hover{color:var(--global-theme-color);text-decoration:none}.navbar{box-shadow:none;border-bottom:1px solid var(--global-divider-color);background-color:var(--global-bg-color);opacity:.95}.navbar .dropdown-menu{background-color:var(--global-bg-color);border:1px solid var(--global-divider-color)}.navbar .dropdown-menu a:not(.active){color:var(--global-text-color)}.navbar .dropdown-menu a.active{color:var(--global-theme-color);background-color:rgba(0,0,0,0)}.navbar .dropdown-menu a:hover{color:var(--global-hover-color)}.dropdown-item{color:var(--global-text-color)}.dropdown-item:hover{color:var(--global-hover-color);background-color:var(--global-bg-color)}.navbar .nav-hover .nav-caret{margin-left:.3rem;font-size:.55em;opacity:.55;vertical-align:.2em}@media(min-width:576px){.navbar .nav-hover>.dropdown-menu{top:100%;margin-top:0;min-width:9rem;padding:.4rem 0;border-radius:10px}.navbar .nav-hover>.dropdown-menu::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}.navbar .nav-hover:hover>.dropdown-menu,.navbar .nav-hover:focus-within>.dropdown-menu{display:block}}@media(max-width:575.98px){.navbar .nav-hover>.nav-link{display:none}.navbar .nav-hover>.dropdown-menu{display:block;position:static!important;float:none;padding:0;border:0;background:rgba(0,0,0,0);text-align:right}.navbar .nav-hover .dropdown-item{padding:.5rem 0}}.navbar.navbar-light a:hover{text-decoration:none}.navbar.navbar-light .navbar-brand{color:var(--global-text-color)}.navbar.navbar-light .navbar-nav .nav-item .nav-link{color:var(--global-text-color)}.navbar.navbar-light .navbar-nav .nav-item .nav-link:hover{color:var(--global-hover-color)}.navbar.navbar-light .navbar-nav .nav-item.active>.nav-link{background-color:inherit;font-weight:bolder;color:var(--global-theme-color)}.navbar.navbar-light .navbar-nav .nav-item.active>.nav-link:hover{color:var(--global-hover-color)}.navbar.navbar-light .navbar-brand.social{padding-bottom:0;padding-top:0;font-size:1.7rem}.navbar.navbar-light .navbar-brand.social a i::before{color:var(--global-text-color);transition-property:all .2s ease-in-out}.navbar.navbar-light .navbar-brand.social a:hover i::before{color:var(--global-theme-color)}.navbar-toggler .icon-bar{display:block;width:22px;height:2px;background-color:var(--global-text-color);border-radius:1px;margin-bottom:4px;transition:all .2s}.navbar-toggler .top-bar{transform:rotate(45deg);transform-origin:10% 10%}.navbar-toggler .middle-bar{opacity:0}.navbar-toggler .bottom-bar{transform:rotate(-45deg);transform-origin:10% 90%}.navbar-toggler.collapsed .top-bar{transform:rotate(0)}.navbar-toggler.collapsed .middle-bar{opacity:1}.navbar-toggler.collapsed .bottom-bar{transform:rotate(0)}#light-toggle,#search-toggle{padding:0;border:0;background-color:inherit;color:var(--global-text-color)}#light-toggle:hover,#search-toggle:hover{color:var(--global-hover-color)}.social{text-align:center}.social .contact-icons{font-size:2rem}.social .contact-icons a i::before{color:var(--global-text-color);transition-property:all .2s ease-in-out}.social .contact-icons a:hover i::before{color:var(--global-theme-color)}footer.fixed-bottom{background-color:var(--global-footer-bg-color);font-size:.75rem}footer.fixed-bottom .container{color:var(--global-footer-text-color);padding-top:9px;padding-bottom:8px;text-align:center}footer.fixed-bottom a{color:var(--global-footer-link-color)}footer.fixed-bottom a:hover{color:var(--global-theme-color);text-decoration:none}footer.sticky-bottom{border-top:1px solid var(--global-divider-color);padding-top:40px;padding-bottom:40px;font-size:.9rem}footer.sticky-bottom .container{text-align:center}@media(min-width:768px){.repo{max-width:50%}}.distill a:hover{border-bottom-color:var(--global-theme-color);text-decoration:none}.projects a{text-decoration:none}.projects .card img{width:100%}.projects .col{padding-bottom:1rem}.projects .grid-item{width:250px;margin-bottom:10px}.projects h2.category{color:var(--global-divider-color);border-bottom:1px solid var(--global-divider-color);padding-top:.5rem;margin-top:2rem;margin-bottom:1rem;text-align:right}.publications{margin-top:2rem}.publications h1{color:var(--global-theme-color);font-size:2rem;text-align:center;margin-top:1em;margin-bottom:1em}.publications h2{margin-bottom:1rem}.publications h2 span{font-size:1.5rem}.publications h2.bibliography{color:var(--global-divider-color);border-top:1px solid var(--global-divider-color);padding-top:1rem;margin-top:2rem;text-align:right}.publications ol.bibliography{list-style:none;padding:0;margin-top:0}.publications ol.bibliography li{margin-bottom:1rem}.publications ol.bibliography li .abbr{margin-bottom:.5rem}.publications ol.bibliography li .abbr abbr{display:inline-block;background-color:var(--global-theme-color);margin-bottom:.5rem}.publications ol.bibliography li .abbr abbr a{color:#fff}.publications ol.bibliography li .abbr abbr a:hover{text-decoration:none}.publications ol.bibliography li .abbr .award{color:var(--global-theme-color)!important;border:1px solid var(--global-theme-color)}.publications ol.bibliography li .title{font-weight:bolder}.publications ol.bibliography li .author a{border-bottom:1px dashed var(--global-theme-color)}.publications ol.bibliography li .author a:hover{border-bottom-style:solid;text-decoration:none}.publications ol.bibliography li .author>em{border-bottom:1px solid;font-style:normal}.publications ol.bibliography li .author>span.more-authors{color:var(--global-text-color-light);border-bottom:1px dashed var(--global-text-color-light);cursor:pointer}.publications ol.bibliography li .author>span.more-authors:hover{color:var(--global-text-color);border-bottom:1px dashed var(--global-text-color)}.publications ol.bibliography li .links a.btn{color:var(--global-text-color);border:1px solid var(--global-text-color);padding-left:1rem;padding-right:1rem;padding-top:.25rem;padding-bottom:.25rem;margin-left:0}.publications ol.bibliography li .links a.btn:hover{color:var(--global-theme-color);border-color:var(--global-theme-color)}
.publications ol.bibliography li .links a.award.btn{border-color:var(--global-highlight-color)}.publications ol.bibliography li .hidden{font-size:.875rem;max-height:0;overflow:hidden;text-align:justify;transition-property:.15s ease;-moz-transition:.15s ease;-ms-transition:.15s ease;-o-transition:.15s ease;transition:all .15s ease}.publications ol.bibliography li .hidden p{line-height:1.4em;margin:10px}.publications ol.bibliography li .hidden pre{font-size:1em;line-height:1.4em;padding:10px}.publications ol.bibliography li .hidden.open{max-height:100em;transition-property:.15s ease;-moz-transition:.15s ease;-ms-transition:.15s ease;-o-transition:.15s ease;transition:all .15s ease}.publications ol.bibliography li div.abstract.hidden{border:dashed 1px var(--global-bg-color)}.publications ol.bibliography li div.abstract.hidden.open{border-color:var(--global-text-color)}.publications ol.bibliography div.award.hidden{border:dashed 1px var(--global-bg-color)}.publications ol.bibliography div.award.hidden.open{border-color:var(--global-highlight-color)}figure.highlight{margin:0 0 1rem}pre{color:var(--global-theme-color);background-color:var(--global-code-bg-color);border-radius:6px;padding:6px 12px}pre pre,pre code{background-color:rgba(0,0,0,0);border-radius:0;margin-bottom:0;padding:0}code{color:var(--global-theme-color);background-color:var(--global-code-bg-color);border-radius:3px;padding:3px 3px}html.transition,html.transition *,html.transition *:before,html.transition *:after{transition:all 750ms!important;transition-delay:0!important}.post>article>h2{margin-top:2.5rem}.post .post-meta{color:var(--global-text-color-light);font-size:.875rem;margin-bottom:0}progress{position:fixed;left:0;top:56px;z-index:10;width:100%;height:1px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background-color:rgba(0,0,0,0);color:var(--global-theme-color)}progress::-webkit-progress-bar{background-color:rgba(0,0,0,0)}progress::-webkit-progress-value{background-color:var(--global-theme-color)}progress::-moz-progress-bar{background-color:var(--global-theme-color)}.progress-container{width:100%;background-color:rgba(0,0,0,0);position:fixed;top:56px;left:0;height:5px;display:block}.progress-bar{background-color:var(--global-theme-color);width:0;display:block;height:inherit}.code-display-wrapper{position:relative}.code-display-wrapper .copy{background:var(--global-card-bg-color);border-color:var(--global-bg-color);border-radius:.3rem;border-style:none;color:var(--global-text-color);font-size:medium;opacity:0;position:absolute;right:.2rem;top:.2rem}.code-display-wrapper:active .copy,.code-display-wrapper:focus .copy,.code-display-wrapper:hover .copy{color:var(--global-hover-color);opacity:1}nav[data-toggle=toc]{top:5rem}nav[data-toggle=toc] .nav .nav>li>a{font-size:.75rem}nav[data-toggle=toc] .nav>li>a{color:var(--global-text-color);font-size:.75rem}nav[data-toggle=toc] .nav>li>a:hover{color:var(--global-hover-color);border-left-color:var(--global-hover-color)}nav[data-toggle=toc] .nav-link.active{color:var(--global-theme-color);border-left-color:var(--global-theme-color);font-size:.75rem}nav[data-toggle=toc] .nav-link.active:hover{color:var(--global-hover-color);border-left-color:var(--global-hover-color)}@media(max-width:576px){nav[data-toggle=toc]{visibility:hidden;height:0;top:0}}.unloaded{display:none!important}#toc-sidebar{z-index:1}.echarts{height:400px;width:100%}.map{height:400px;width:100%}ninja-keys{--ninja-accent-color:var(--global-theme-color);--ninja-icon-size:0;--ninja-modal-background:var(--global-bg-color);--ninja-z-index:1031}ninja-keys::part(ninja-input){color:var(--ninja-selected-text-color)}ninja-keys::part(ninja-input-wrapper){background:var(--global-bg-color)}.popover{background-color:var(--global-bg-color);border-color:var(--global-divider-color)}.popover .popover-header{color:var(--global-text-color);border-bottom:1px solid var(--global-divider-color)}.popover .popover-body{color:var(--global-text-color)}::highlight(search){background-color:var(--global-theme-color);color:var(--global-text-color)}mjx-container[display=true]{max-width:100%;overflow-x:auto;overflow-y:hidden}d-byline{border-top-color:var(--global-divider-color)!important}d-byline h3{color:var(--global-text-color)!important}d-byline a,d-article d-byline a{color:var(--global-text-color)!important}d-byline a:hover,d-article d-byline a:hover{color:var(--global-hover-color)!important}d-article{border-top-color:var(--global-divider-color)!important}d-article p,d-article h1,d-article h2,d-article h3,d-article h4,d-article h5,d-article h6,d-article li,d-article table{color:var(--global-text-color)!important}d-article h1,d-article h2,d-article hr,d-article table,d-article table th,d-article table td{border-bottom-color:var(--global-divider-color)!important}d-article a{color:var(--global-theme-color)!important}d-article a:hover{color:var(--global-theme-color)!important}d-article b i{display:inline}d-article blockquote{border-left:2px solid var(--global-theme-color)!important}d-article details{color:var(--global-text-color);background-color:var(--global-code-bg-color);margin-top:0;padding:8px 12px;position:relative;border-radius:6px;display:block;margin-bottom:20px;grid-column:text;overflow:auto;max-width:100%}d-article details summary{color:var(--global-theme-color)}
d-article details p{margin-top:.5rem;margin-bottom:.5rem}d-article d-footnote{scroll-margin-top:66px}d-appendix{border-top-color:var(--global-divider-color)!important;color:var(--global-distill-app-color)!important}d-appendix h3,d-appendix li,d-appendix span{color:var(--global-distill-app-color)!important}d-appendix a,d-appendix a.footnote-backlink{color:var(--global-distill-app-color)!important}d-appendix a:hover,d-appendix a.footnote-backlink:hover{color:var(--global-hover-color)!important}p.location{font-size:.7rem;white-space:nowrap}table.institution{margin-bottom:1rem}div.list-group{display:flex;flex-wrap:wrap;flex-direction:column;align-items:flex-start;margin-bottom:2rem}ul.timeline{margin-top:2rem;margin-bottom:2rem}ul.timeline li{position:relative;min-height:2.2rem;color:var(--global-text-color);list-style-position:inside}ul.timeline li::before{content:"";min-height:2.5rem;width:1px;background:var(--global-text-color);margin:0;padding:0;position:absolute;left:2px;top:-0.5rem}.tab{display:flex;flex-wrap:wrap;margin-left:-20px;padding:0;list-style:none;position:relative}.tab>*{flex:none;padding-left:20px;position:relative}.tab>*>a{display:block;text-align:center;padding:9px 20px;color:var(--global-text-color-light);border-bottom:2px solid rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0);font-size:12px;text-transform:uppercase;transition:color .1s ease-in-out;line-height:20px}.tab>.active>a{color:var(--global-text-color);border-color:var(--global-theme-color)}.tab>li>a{text-decoration:none;cursor:pointer}.tab-content{padding:0}.tab-content>li{display:none}.tab-content>li.active{display:block}.read-next-thumb{display:block;aspect-ratio:1.9047619048;overflow:hidden;border:1px solid var(--cover-line);background-color:var(--cover-bg)}.read-next-thumb img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.post-row-thumb-empty{display:grid;place-items:center;background-image:radial-gradient(var(--global-divider-color) 1px,transparent 1px);background-size:14px 14px}.post-row-thumb-empty span{font-family:monospace;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--global-text-color-light)}.read-next-card:hover .read-next-thumb img{transform:scale(1.03)}.post-page .post-cover{margin:1.25rem 0 1rem}.post-page .post-cover img{display:block;width:100%;height:auto;aspect-ratio:1.9047619048}.post-page .post-byline span,.post-page .post-byline time{color:inherit}.post-page .post-byline:last-child{margin-bottom:2rem}.post-page #markdown-content h2{margin-top:2.75rem}.post-page #markdown-content h3{margin-top:2rem}.post-toc,.post-references{border-top:1px solid var(--global-divider-color);border-bottom:1px solid var(--global-divider-color)}.post-toc summary,.post-references summary{display:flex;align-items:baseline;gap:.75rem;padding:.75rem 0;cursor:pointer;list-style:none}.post-toc summary::-webkit-details-marker,.post-references summary::-webkit-details-marker{display:none}.post-toc summary::after,.post-references summary::after{content:"+";margin-left:auto;font-size:1.3rem;line-height:1;color:var(--global-text-color-light)}
.post-toc[open] summary::after,.post-references[open] summary::after{content:"−"}.post-toc{margin:.5rem 0 2rem}.post-toc summary{font-size:.95rem;color:var(--global-text-color-light)}.post-toc nav{padding:0 0 1rem}.post-toc ul{list-style:none;margin:0;padding-left:0}.post-toc ul ul{padding-left:1.25rem}.post-toc li{margin:.2rem 0}.post-toc a{color:var(--global-text-color);text-decoration:none}.post-toc a:hover{color:var(--global-theme-color)}.post-references{margin:3rem 0 1rem}.post-references summary h2{margin:0!important;font-size:1.5rem}.post-references .post-references-count{font-size:.875rem;color:var(--global-text-color-light)}.post-references .post-references-body{padding-bottom:1rem}#markdown-content{--code-panel:#f6f7f9;--code-fold-line:1.5em}#markdown-content div.highlighter-rouge,#markdown-content figure.highlight{margin:1.25rem 0}#markdown-content pre.highlight,#markdown-content div.highlight>pre,#markdown-content figure.highlight>pre{background-color:var(--code-panel);border:1px solid var(--global-divider-color);border-radius:8px;padding:.85rem 1rem;line-height:var(--code-fold-line)}#markdown-content .code-fold.is-folded pre{max-height:calc(var(--fold-lines)*var(--code-fold-line)+1.7rem);overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent 100%);mask-image:linear-gradient(to bottom,#000 55%,transparent 100%)}#markdown-content .code-fold.is-folded pre.tfs-printed{max-height:calc(var(--fold-lines)*1.45em+.7rem)}#markdown-content .code-fold{margin-bottom:.6rem}#markdown-content .code-fold pre{margin-bottom:0}#markdown-content .code-fold-toggle{display:inline-flex;align-items:center;gap:.4rem;margin:0 0 1.25rem;padding:.2rem .75rem;border:1px solid var(--global-divider-color);border-radius:999px;background:var(--global-bg-color);color:var(--global-text-color-light);font-size:.8rem;cursor:pointer;transition:color .2s ease,border-color .2s ease}#markdown-content .code-fold-toggle::before{content:"+";font-size:.95rem;line-height:1}#markdown-content .code-fold-toggle[aria-expanded=true]::before{content:"−"}#markdown-content .code-fold-toggle:hover{color:var(--global-theme-color);border-color:var(--global-theme-color)}#markdown-content .code-fold-toggle:focus-visible{outline:2px solid var(--global-theme-color);outline-offset:2px}html[data-theme=dark] #markdown-content{--code-panel:#1d2026}#markdown-content{--code-font:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;--code-ink:#2b3240;--code-punct:#5b6575;--code-comment:#7b8494;--code-keyword:#a82d42;--code-string:#0b6b60;--code-number:#8a5508;--code-function:#4b39b5}#markdown-content pre,#markdown-content code{font-family:var(--code-font);font-variant-ligatures:none}#markdown-content pre.highlight,#markdown-content div.highlight>pre,#markdown-content figure.highlight>pre{color:var(--code-ink);font-size:.84rem;tab-size:4}#markdown-content :not(pre)>code{color:var(--code-keyword);background-color:var(--code-panel);border:1px solid var(--global-divider-color);border-radius:4px;padding:.05em .35em;font-size:.86em}#markdown-content .highlight{background:rgba(0,0,0,0)}#markdown-content .highlight span{text-decoration:none}#markdown-content .highlight .n,#markdown-content .highlight .nn,#markdown-content .highlight .nv,#markdown-content .highlight .vi,#markdown-content .highlight .na,#markdown-content .highlight .nt,#markdown-content .highlight .no,#markdown-content .highlight .nl,#markdown-content .highlight .w,#markdown-content .highlight .si{color:var(--code-ink);font-weight:400}#markdown-content .highlight .o,#markdown-content .highlight .p{color:var(--code-punct);font-weight:400}#markdown-content .highlight .k,#markdown-content .highlight .kn,#markdown-content .highlight .kr,#markdown-content .highlight .kt,#markdown-content .highlight .kv,#markdown-content .highlight .ow{color:var(--code-keyword);font-weight:500}#markdown-content .highlight .bp,#markdown-content .highlight .m,#markdown-content .highlight .mi,#markdown-content .highlight .mf,#markdown-content .highlight .mo{color:var(--code-number);font-weight:400}#markdown-content .highlight .s,#markdown-content .highlight .s1,#markdown-content .highlight .s2,#markdown-content .highlight .sa,#markdown-content .highlight .sh,#markdown-content .highlight .sr,#markdown-content .highlight .ss,#markdown-content .highlight .se,#markdown-content .highlight .dl{color:var(--code-string);font-weight:400}#markdown-content .highlight .nf,#markdown-content .highlight .nb,#markdown-content .highlight .nd,#markdown-content .highlight .ne{color:var(--code-function);font-weight:400}
#markdown-content .highlight .nc{color:var(--code-function);font-weight:500}#markdown-content .highlight .c,#markdown-content .highlight .c1,#markdown-content .highlight .cm,#markdown-content .highlight .ch,#markdown-content .highlight .cs,#markdown-content .highlight .cp{color:var(--code-comment);font-style:italic;font-weight:400}#markdown-content .highlight .gp{color:var(--code-comment)}#markdown-content .highlight .go{color:var(--code-punct)}#markdown-content .highlight .err{color:inherit;background:0}html[data-theme=dark] #markdown-content{--code-ink:#d7dbe2;--code-punct:#9aa3b2;--code-comment:#7d8595;--code-keyword:#f2899a;--code-string:#7fdccf;--code-number:#f0b04a;--code-function:#b3a7ff}@media print{#markdown-content .code-fold.is-folded pre{max-height:none;-webkit-mask-image:none;mask-image:none}#markdown-content .code-fold-toggle{display:none}}:root{--cite-color:#d23f57;--cite-tint:rgba(210,63,87,0.1)}html[data-theme=dark]{--cite-color:#f48a9a;--cite-tint:rgba(244,138,154,0.14)}#markdown-content sup.cite{font-size:.7em;line-height:0;vertical-align:super;margin-left:.08em;color:var(--global-text-color-light);white-space:nowrap;font-variant-numeric:tabular-nums}#markdown-content sup.cite a{color:var(--cite-color);font-weight:500;text-decoration:none;padding:0 .08em;border-radius:3px;scroll-margin-top:6rem}#markdown-content sup.cite a:hover,#markdown-content sup.cite a:focus-visible,#markdown-content sup.cite a[aria-expanded=true]{background:var(--cite-tint);text-decoration:none}#markdown-content sup.cite a:focus-visible{outline:2px solid var(--cite-color);outline-offset:1px}#markdown-content ol.tfs-refs{padding-left:2.1rem;font-size:.92rem;line-height:1.5}#markdown-content ol.tfs-refs li{margin:.4rem 0;padding:.1rem .35rem;border-radius:5px;scroll-margin-top:6rem;transition:background-color .6s ease}#markdown-content ol.tfs-refs li::marker{color:var(--cite-color);font-variant-numeric:tabular-nums}#markdown-content ol.tfs-refs li:target{background:var(--cite-tint)}#markdown-content ol.tfs-refs .ref-back{margin-left:.3rem;color:var(--global-text-color-light);text-decoration:none}#markdown-content ol.tfs-refs .ref-back:hover{color:var(--cite-color)}.cite-card{position:absolute;z-index:1050;max-width:min(26rem,100vw - 2rem);padding:.7rem .85rem .75rem;border:1px solid var(--global-divider-color);border-radius:8px;background:var(--global-card-bg-color);color:var(--global-text-color);box-shadow:0 10px 28px rgba(0,0,0,.14);font-size:.85rem;line-height:1.45}.cite-card .cite-card-number{display:block;margin-bottom:.25rem;color:var(--cite-color);font-size:.75rem;font-weight:600;letter-spacing:.04em}.cite-card a{color:var(--global-theme-color)}.cite-card .cite-card-jump{display:inline-block;margin-top:.45rem;color:var(--global-text-color-light);font-size:.78rem;text-decoration:none}.cite-card .cite-card-jump:hover{color:var(--cite-color)}.link-card{width:min(22rem,100vw - 2rem)}.link-card .link-card-cover{display:block;width:100%;aspect-ratio:1200/630;object-fit:cover;margin-bottom:.55rem;border-radius:5px}.link-card .link-card-title{display:block;margin-bottom:.3rem;font-size:.92rem;line-height:1.3}.link-card .link-card-text{margin:0;color:var(--global-text-color-light)}.side-toc{position:fixed;top:96px;max-height:calc(100vh - 140px);overflow-y:auto;padding-left:.9rem;border-left:1px solid var(--global-divider-color);font-size:.8rem;line-height:1.35;scrollbar-width:thin}.side-toc .side-toc-title{display:block;margin-bottom:.5rem;color:var(--global-text-color-light);font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.side-toc ul{margin:0;padding-left:0;list-style:none}.side-toc ul ul{padding-left:.8rem}.side-toc li{margin:.32rem 0}.side-toc a{color:var(--global-text-color-light);text-decoration:none}.side-toc a:hover{color:var(--global-theme-color)}.side-toc a.active{color:var(--global-theme-color);font-weight:600}.read-next{margin:4rem 0 2rem}.read-next-title{margin:0 0 1.25rem;font-size:.75rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--global-text-color-light)}.read-next-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}.read-next-card{display:flex;flex-direction:column;gap:.5rem;text-decoration:none}.read-next-card:hover{text-decoration:none}.read-next-card:focus-visible{outline:2px solid var(--global-theme-color);outline-offset:4px;border-radius:8px}.read-next-meta{margin-top:.25rem;font-size:.75rem;color:var(--global-text-color-light)}.read-next-name{font-size:1.05rem;line-height:1.35;color:var(--global-text-color);transition:color .2s ease}.read-next-card:hover .read-next-name{color:var(--global-theme-color)}@media(max-width:767.98px){.read-next-grid{grid-template-columns:minmax(0,1fr);gap:1.75rem}.read-next-card{display:grid;grid-template-columns:8rem minmax(0,1fr);grid-template-rows:auto 1fr;column-gap:1rem;row-gap:.25rem}.read-next-thumb{grid-row:1/span 2}
.read-next-meta{margin-top:0}}.course-nav{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:1.5rem;margin:4rem 0 0;padding:1.25rem 0;border-top:1px solid var(--global-divider-color);border-bottom:1px solid var(--global-divider-color)}.course-nav-side-next{text-align:right}.course-nav-all{text-align:center}.course-nav-link,.course-nav-all{display:flex;flex-direction:column;gap:.3rem;text-decoration:none}.course-nav-link:hover,.course-nav-all:hover{text-decoration:none}.course-nav-link:focus-visible,.course-nav-all:focus-visible{outline:2px solid var(--global-theme-color);outline-offset:4px;border-radius:6px}.course-nav-label{font-size:.75rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--global-text-color-light)}.course-nav-title{font-size:1rem;line-height:1.35;color:var(--global-text-color);transition:color .2s ease}a.course-nav-link:hover .course-nav-title,a.course-nav-all:hover .course-nav-title{color:var(--global-theme-color)}.course-nav-coming .course-nav-title{color:var(--global-text-color-light)}.course-nav+.read-next{margin-top:3rem}@media(max-width:767.98px){.course-nav{grid-template-columns:minmax(0,1fr);gap:1.25rem}.course-nav-side-next,.course-nav-all{text-align:left}.course-nav-all{order:3}}#markdown-content{--c-accent:var(--global-theme-color);--c-ink:var(--global-text-color);--c-muted:var(--global-text-color-light);--c-line:var(--global-divider-color);--c-tint:color-mix(in srgb,var(--global-theme-color) 4%,var(--global-bg-color));--c-panel:color-mix(in srgb,var(--global-text-color) 2.5%,var(--global-bg-color));--c-warn:#b86e00;--c-warn-tint:color-mix(in srgb,#c27a0e 7%,var(--global-bg-color));--c-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;--c-arrow:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2022%2012'%3E%3Cpath%20d='M1%206h18.5M14.5%201.5%2019.5%206l-5%204.5'%20fill='none'%20stroke='%23000'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E")}html[data-theme=dark] #markdown-content{--c-tint:color-mix(in srgb,var(--global-theme-color) 5%,var(--global-bg-color));--c-panel:color-mix(in srgb,var(--global-text-color) 4%,var(--global-bg-color));--c-warn:#e6a23c;--c-warn-tint:color-mix(in srgb,#f0b04a 9%,var(--global-bg-color))}#markdown-content .tldr{position:relative;margin:.75rem 0 3rem;padding:1.6rem 1.8rem 1.5rem;border:1px solid var(--c-line);border-radius:12px;background:var(--c-tint)}#markdown-content .tldr::before{content:"";position:absolute;top:-1px;left:1.8rem;width:2.4rem;height:3px;border-radius:0 0 2px 2px;background:var(--c-accent)}#markdown-content .tldr .tldr-label{display:flex;align-items:center;gap:.55rem;margin:0 0 .7rem;font-family:var(--c-mono);font-size:.7rem;font-weight:500;line-height:1.2;letter-spacing:.09em;text-transform:uppercase;color:var(--c-muted)}#markdown-content .tldr .tldr-label::before{content:"";flex:none;width:.42rem;height:.42rem;border-radius:50%;background:var(--c-accent)}#markdown-content .tldr>p:not(.tldr-label){margin-bottom:.7rem;font-size:1.05rem;line-height:1.65;color:var(--c-ink)}#markdown-content .tldr .stats{margin:1.4rem 0 0}#markdown-content .tldr>:last-child{margin-bottom:0}#markdown-content .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(10.5rem,1fr));gap:1.1rem 1.6rem;margin:2rem 0}#markdown-content .stat{padding-top:.8rem;border-top:1px solid var(--c-line)}#markdown-content .stat .stat-value{display:block;font-size:2.05rem;font-weight:300;line-height:1.05;letter-spacing:-0.01em;font-variant-numeric:tabular-nums;color:var(--c-accent)}#markdown-content .stat .stat-label{display:block;margin-top:.45rem;font-size:.86rem;line-height:1.45;color:var(--c-muted)}#markdown-content .callout{margin:2rem 0;padding:1.05rem 1.4rem 1.1rem;border-left:2px solid color-mix(in srgb,var(--c-muted) 55%,transparent);border-radius:0 10px 10px 0;background:var(--c-panel)}#markdown-content .callout .callout-label{display:flex;align-items:center;gap:.55rem;margin:0 0 .7rem;font-family:var(--c-mono);font-size:.7rem;font-weight:500;line-height:1.2;letter-spacing:.09em;text-transform:uppercase;color:var(--c-muted)}#markdown-content .callout .callout-label::before{content:"";flex:none;width:.42rem;height:.42rem;border-radius:50%;background:var(--c-muted)}#markdown-content .callout p{margin-bottom:.65rem}#markdown-content .callout>:last-child{margin-bottom:0}#markdown-content .callout.callout-key{border-left-color:var(--c-accent);background:var(--c-tint)}#markdown-content .callout.callout-key .callout-label{display:flex;align-items:center;gap:.55rem;margin:0 0 .7rem;font-family:var(--c-mono);font-size:.7rem;font-weight:500;line-height:1.2;letter-spacing:.09em;text-transform:uppercase;color:var(--c-accent)}#markdown-content .callout.callout-key .callout-label::before{content:"";flex:none;width:.42rem;height:.42rem;border-radius:50%;background:var(--c-accent)}#markdown-content .callout.callout-warn{border-left-color:var(--c-warn);background:var(--c-warn-tint)}
#markdown-content .callout.callout-warn .callout-label{display:flex;align-items:center;gap:.55rem;margin:0 0 .7rem;font-family:var(--c-mono);font-size:.7rem;font-weight:500;line-height:1.2;letter-spacing:.09em;text-transform:uppercase;color:var(--c-warn)}#markdown-content .callout.callout-warn .callout-label::before{content:"";flex:none;width:.42rem;height:.42rem;border-radius:50%;background:var(--c-warn)}#markdown-content details.method{margin:2rem 0;border:1px solid var(--c-line);border-radius:10px;background:var(--c-panel)}#markdown-content details.method>summary{display:flex;align-items:center;gap:.8rem;padding:.85rem 1.25rem;cursor:pointer;list-style:none;font-size:.98rem;line-height:1.4;color:var(--c-ink)}#markdown-content details.method>summary::-webkit-details-marker{display:none}#markdown-content details.method>summary::before{content:"Method";flex:none;padding:.12rem .55rem;border:1px solid color-mix(in srgb,var(--c-accent) 40%,transparent);border-radius:999px;font-family:var(--c-mono);font-size:.66rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--c-accent)}#markdown-content details.method>summary::after{content:"+";margin-left:auto;padding-left:.5rem;font-size:1.3rem;line-height:1;color:var(--c-muted);transition:transform .2s ease}#markdown-content details.method>summary:hover::after{color:var(--c-accent)}#markdown-content details.method[open]>summary{border-bottom:1px solid var(--c-line)}#markdown-content details.method[open]>summary::after{content:"−"}#markdown-content details.method>:not(summary){margin-left:1.25rem;margin-right:1.25rem;font-size:.95rem}#markdown-content details.method>summary+*{margin-top:1.1rem}#markdown-content details.method>:last-child{margin-bottom:1.15rem}#markdown-content details.method.cite{margin-top:3rem}#markdown-content details.method.cite>summary::before{content:"Cite"}#markdown-content details.method.cite>p.cite-ref{font-size:1rem;line-height:1.6}#markdown-content details.method.cite>p.cite-ref a{overflow-wrap:anywhere}#markdown-content details.method.cite pre{padding:.9rem 1.1rem;border-radius:6px;background:var(--global-code-bg-color)}#markdown-content details.method.cite pre code{padding:0;background:0;color:var(--global-text-color);font-size:.85rem}#markdown-content .takeaway{position:relative;margin:1.3rem 0 2rem;padding-left:2.1rem;font-size:1.08rem;line-height:1.55;color:var(--c-ink)}#markdown-content .takeaway::before{content:"";position:absolute;top:.42em;left:0;width:1.35rem;height:.75rem;background:var(--c-accent);-webkit-mask:var(--c-arrow) no-repeat center/contain;mask:var(--c-arrow) no-repeat center/contain}#markdown-content .flow{display:flex;flex-wrap:wrap;align-items:center;row-gap:.7rem;margin:1.75rem 0}#markdown-content .flow>span{position:relative;display:inline-flex;align-items:center;padding:.32rem .9rem;border:1px solid var(--c-line);border-radius:999px;background:var(--global-bg-color);font-size:.9rem;line-height:1.35;color:var(--c-ink)}#markdown-content .flow>span:not(:last-child){margin-right:2.3rem}#markdown-content .flow>span:not(:last-child)::after{content:"";position:absolute;top:50%;right:-1.95rem;width:1.5rem;height:.75rem;transform:translateY(-50%);background:var(--c-muted);-webkit-mask:var(--c-arrow) no-repeat center/contain;mask:var(--c-arrow) no-repeat center/contain}#markdown-content .flow>span:last-child{border-color:color-mix(in srgb,var(--c-accent) 55%,transparent);background:var(--c-tint);color:var(--c-accent)}#markdown-content blockquote.pull{position:relative;margin:2.5rem 0;padding:.2rem 0 .2rem 2.4rem;border:0;background:0;font-size:1.4rem;font-weight:300;line-height:1.45;color:var(--c-ink)}#markdown-content blockquote.pull::before{content:"“";position:absolute;top:-0.35rem;left:0;font-family:Georgia,"Times New Roman",serif;font-size:3.4rem;line-height:1;color:var(--c-accent)}#markdown-content blockquote.pull p{margin-bottom:.4rem}#markdown-content blockquote.pull cite{display:block;margin-top:.8rem;font-family:var(--c-mono);font-size:.7rem;font-style:normal;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--c-muted)}#markdown-content a.arrow-link::after{content:"";display:inline-block;width:1.05em;height:.6em;margin-left:.35em;background:currentColor;-webkit-mask:var(--c-arrow) no-repeat center/contain;mask:var(--c-arrow) no-repeat center/contain;transition:transform .2s ease}#markdown-content a.arrow-link:hover{text-decoration:none}#markdown-content a.arrow-link:hover::after{transform:translateX(3px)}@media(max-width:575px){#markdown-content .tldr{padding:1.35rem 1.2rem 1.2rem}#markdown-content .tldr::before{left:1.2rem}#markdown-content .stats{grid-template-columns:minmax(0,1fr);gap:0}
#markdown-content .stat{display:grid;grid-template-columns:5.6rem minmax(0,1fr);column-gap:.9rem;align-items:baseline;padding:.7rem 0 .75rem}#markdown-content .stat .stat-value{font-size:1.65rem}#markdown-content .stat .stat-label{margin-top:0}#markdown-content details.method>summary{padding:.8rem 1rem}#markdown-content details.method>:not(summary){margin-left:1rem;margin-right:1rem}#markdown-content blockquote.pull{padding-left:1.9rem;font-size:1.2rem}}:root{--font-sans:"Inter",-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;--font-serif:"Charis SIL",Charter,"Bitstream Charter",Georgia,"Times New Roman",serif;--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--global-code-font:var(--font-mono);--c-mono:var(--font-mono)}body,.navbar,.btn,input,select,button,textarea{font-family:var(--font-sans)}.social-icons{display:inline-flex;align-items:center;gap:.8rem}.social-icons a{display:inline-flex;color:var(--global-text-color-light);opacity:.75;transition:color .2s ease,opacity .2s ease}.social-icons a:hover{color:var(--global-theme-color);opacity:1}.social-icons svg{width:14px;height:14px;fill:currentColor}footer .social-icons{display:flex;justify-content:center;gap:1.15rem;margin:0 0 1rem}footer .social-icons svg{width:16px;height:16px}.post-page .post-header .post-share{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .8rem;margin-top:.6rem;color:var(--global-text-color-light)}.post-page .post-header .post-share .post-share-label{margin-right:.05rem;color:inherit}.post-page .post-header .post-share a,.post-page .post-header .post-share button{display:inline-flex;align-items:center;padding:0;border:0;background:0;color:var(--global-text-color-light);opacity:.75;cursor:pointer;transition:color .2s ease,opacity .2s ease}.post-page .post-header .post-share a:hover,.post-page .post-header .post-share a:focus-visible,.post-page .post-header .post-share button:hover,.post-page .post-header .post-share button:focus-visible{color:var(--global-theme-color);opacity:1}.post-page .post-header .post-share svg{width:14px;height:14px;fill:currentColor}.post-page .post-header .post-share [hidden],.post-page .post-header .post-share .icon-done,.post-page .post-header .post-share .is-done .icon-link{display:none}.post-page .post-header .post-share .is-done{color:var(--global-theme-color);opacity:1}.post-page .post-header .post-share .is-done .icon-done{display:inline}.post-page .post-header .post-share .post-share-status{font-size:.8rem;color:var(--global-theme-color)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6,.post-title,.bh-title{font-family:var(--font-sans)}code,kbd,pre{font-family:var(--font-mono)}.post-page #markdown-content>p,.post-page #markdown-content>ul,.post-page #markdown-content>ol,.post-page #markdown-content>blockquote,.post-page #markdown-content>dl,.post-page #markdown-content .callout p:not(.callout-label),.post-page #markdown-content .tldr p:not(.tldr-label),.post-page #markdown-content .tldr li,.post-page #markdown-content details.method p,.post-page #markdown-content details.method li{font-family:var(--font-serif);font-size:1.16rem;font-weight:400;line-height:1.66;color:var(--post-ink)}.post-page #markdown-content em{font-weight:inherit}.post-page #markdown-content h2{font-family:var(--font-sans);font-size:1.45rem;font-weight:700;letter-spacing:-0.015em}.post-page #markdown-content h3{font-family:var(--font-sans);font-weight:600;letter-spacing:-0.01em}:root{--global-bg-color:#fbf9f4;--global-text-color:#1d2430;--global-text-color-light:#5b6575;--post-ink:#363d49;--global-footer-bg-color:#fbf9f4;--global-footer-text-color:#5b6575;--global-footer-link-color:#1d2430;--global-card-bg-color:#fffefb;--global-divider-color:rgba(29,36,48,0.11);--global-code-bg-color:#f3efe6;--global-newsletter-bg-color:#fbf9f4;--global-newsletter-text-color:#1d2430;--cover-bg:#f6f3ec;--cover-line:rgba(29,36,48,0.1);--plate-dot:#e8e6e0;--cat-ml:#6a55d8;--cat-cog:#0f8c7e;--cat-money:#b06d0b;--cat-systems:#3c6e9e;--cat-security:#5b6575;--cat-philosophy:#a23d68}html[data-theme=dark]{--global-bg-color:#111419;--global-text-color:#e7eaf0;--global-text-color-light:#9aa3b2;--post-ink:#cdd2da;--global-footer-bg-color:#111419;--global-footer-text-color:#9aa3b2;--global-footer-link-color:#e7eaf0;--global-card-bg-color:#1a1f26;--global-divider-color:#2c333d;--global-code-bg-color:#1a1f26;--global-newsletter-bg-color:#1a1f26;--global-newsletter-text-color:#e7eaf0;--cover-bg:#161618;--cover-line:#2c333d;--plate-dot:#232327;--cat-ml:#9c8cf5;--cat-cog:#3cc2b0;--cat-money:#f0b04a;--cat-systems:#7fb0e0;--cat-security:#9aa3b2;--cat-philosophy:#e58ab0}body,.navbar,.navbar.fixed-top,footer,.sticky-bottom{background-color:var(--global-bg-color)!important}.navbar-nav .nav-item.active>.nav-link{position:relative}.navbar-nav .nav-item.active>.nav-link::after{content:"";position:absolute;left:50%;bottom:.15rem;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:var(--global-theme-color)}
.side-toc a.active{position:relative}.side-toc a.active::before{content:"";position:absolute;left:-1.22rem;top:.42em;width:7px;height:7px;border-radius:50%;background:var(--global-theme-color)}.post-page .post-header{margin-bottom:1.6rem}.post-page .post-header .post-kicker{justify-self:start;display:inline-flex;align-items:center;gap:.5rem;margin:0 0 1.1rem;font-family:var(--font-sans);font-size:.8rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--global-text-color-light)}.post-page .post-header .post-kicker a{color:inherit}.post-page .post-header .post-kicker::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--global-theme-color)}.post-page .post-header .post-title{margin-bottom:.7rem;font-family:var(--font-serif);font-size:clamp(2rem,4vw,2.6rem);font-weight:700;line-height:1.12;letter-spacing:-0.015em}.post-page .post-header .post-dek{max-width:46rem;margin:0 0 1rem;font-family:var(--font-serif);font-size:1.22rem;line-height:1.5;color:var(--global-text-color-light)}.post-page .post-header .post-byline{margin:0 0 1.4rem;font-family:var(--font-sans);font-size:.86rem;color:var(--global-text-color-light)}.post-page .post-header .post-cover{margin:0;aspect-ratio:16/9;overflow:hidden;border:1px solid var(--cover-line);background:var(--cover-bg)}.post-page .post-header .post-cover img{width:100%;height:100%;object-fit:cover;object-position:100% 50%}.post-page .post-header .post-cover.post-art{aspect-ratio:5/4;background-image:radial-gradient(circle,var(--plate-dot) .9px,transparent 1.4px);background-position:center;background-size:14px 14px}.post-page .post-header .post-cover.post-art img{object-fit:contain;object-position:50% 50%;mix-blend-mode:darken}@media(min-width:900px){.post-page .post-header.has-cover{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);grid-template-rows:auto auto auto 1fr auto;column-gap:2.4rem}.post-page .post-header.has-cover>*{grid-column:1}.post-page .post-header.has-cover .post-byline{grid-row:5;align-self:end;margin-bottom:0}.post-page .post-header.has-cover .post-cover{grid-column:2;grid-row:1/span 5;align-self:start;aspect-ratio:600/630}.post-page .post-header.has-cover .post-cover.post-art{align-self:stretch;width:100%;aspect-ratio:5/4}}.post-page #markdown-content>p.tfs-links{font-family:var(--font-sans);font-size:.92rem}.post-page .post-tags-end{margin:2.5rem 0 0;padding-top:1rem;border-top:1px solid var(--global-divider-color);font-family:var(--font-mono);font-size:.78rem;line-height:2}.post-page .post-tags-end a{display:inline-block;margin:0 .35rem .35rem 0;padding:.05rem .55rem;border:1px solid var(--global-divider-color);border-radius:6px;color:var(--global-text-color-light);text-decoration:none}.post-page .post-tags-end a:hover{color:var(--global-theme-color);border-color:var(--global-theme-color)}.post-content figure.post-figure{width:fit-content;max-width:100%;margin:1.8rem auto 2rem}.post-content figure.post-figure>p{margin:0}.post-content figure.post-figure>img,.post-content figure.post-figure>p>img{display:block;max-width:100%;height:auto;margin:0 auto}.post-content figure.post-figure figcaption{contain:inline-size;margin-top:.55rem;font-family:var(--font-serif);font-size:.98rem;line-height:1.45;color:var(--global-text-color-light)}.post-content figure.post-figure figcaption b{margin-right:.35rem;font-family:var(--font-sans);font-weight:700;color:var(--global-text-color)}html:not([data-theme=dark]) .post-content figure.post-figure img{mix-blend-mode:multiply}html[data-theme=dark] .post-page .post-cover.post-art img{mix-blend-mode:lighten}.cover-plate{position:absolute;inset:0;overflow:hidden;background-color:var(--cover-bg);background-image:radial-gradient(circle,var(--plate-dot) .9px,transparent 1.4px);background-position:center;background-size:12px 12px}.cover-plate img{position:absolute;inset:-7%;width:114%;height:114%;max-width:none;object-fit:contain;mix-blend-mode:darken}html[data-theme=dark] .cover-plate img{mix-blend-mode:lighten}html:not([data-theme=dark]) .post-content figure.post-figure .tfs-dark,html[data-theme=dark] .post-content figure.post-figure .tfs-light{display:none}.math-glue{white-space:nowrap}.side-toc-shown .post-openers>#table-of-contents{display:none}.post-page #markdown-content{counter-reset:cell}.post-page #markdown-content div.language-python.highlighter-rouge{counter-increment:cell;position:relative}.post-page #markdown-content div.language-python.highlighter-rouge::after{content:"In [" counter(cell) "]";position:absolute;top:.55rem;right:.8rem;z-index:2;font-family:var(--font-mono);font-size:.7rem;color:var(--global-text-color-light);pointer-events:none}.post-content pre.tfs-printed{border:1px solid var(--global-divider-color);border-left:3px solid var(--global-text-color-light);border-radius:0 8px 8px 0;background:var(--global-card-bg-color);font-family:var(--font-mono)}
.bh-chip{--chip-color:var(--global-theme-color)}.bh-chip[data-filter=machine-learning],.bh-chip[data-category=machine-learning]{--chip-color:var(--cat-ml)}.bh-chip[data-filter=cognitive-science],.bh-chip[data-category=cognitive-science]{--chip-color:var(--cat-cog)}.bh-chip[data-filter=crypto],.bh-chip[data-category=crypto],.bh-chip[data-filter=finance],.bh-chip[data-category=finance]{--chip-color:var(--cat-money)}.bh-chip[data-filter=system-design],.bh-chip[data-category=system-design],.bh-chip[data-category=code]{--chip-color:var(--cat-systems)}.bh-chip[data-filter=cybersecurity],.bh-chip[data-category=cybersecurity]{--chip-color:var(--cat-security)}.bh-chip[data-filter=philosophy],.bh-chip[data-category=philosophy]{--chip-color:var(--cat-philosophy)}.bh-chip[aria-pressed=true]:not([data-filter=all]){border-color:var(--chip-color)!important;color:var(--chip-color)!important;background:color-mix(in srgb,var(--chip-color) 9%,transparent)!important}.post-page .post-openers{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.6rem;margin:0 0 2.2rem}.post-page .post-openers>details{margin:0;border:0}.post-page .post-openers>details>summary{display:inline-flex;align-items:center;gap:.55rem;padding:.38rem .8rem;border:1px solid var(--global-divider-color);border-radius:8px;font-family:var(--font-mono);font-size:.8rem;color:var(--global-text-color-light);cursor:pointer;list-style:none}.post-page .post-openers>details>summary::-webkit-details-marker{display:none}.post-page .post-openers>details>summary::after{content:"+";margin-left:.2rem;font-size:1rem;line-height:1}.post-page .post-openers>details>summary:hover{color:var(--global-theme-color);border-color:var(--global-theme-color)}.post-page .post-openers>details[open]{flex-basis:100%;order:2}.post-page .post-openers>details[open]>summary{color:var(--global-text-color)}.post-page .post-openers>details[open]>summary::after{content:"−"}.post-page .post-openers .tldr-fold aside.tldr{margin:.9rem 0 0}.post-page .post-openers+*{margin-top:0}.post-page .post-openers .post-toc nav{padding:.9rem 0 .4rem}.tldr-fold>summary::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--global-theme-color)}html[data-theme=dark] .theme-light-only{display:none!important}html:not([data-theme=dark]) .theme-dark-only{display:none!important}/*!
 * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2024 Fonticons, Inc.
 */.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa-solid,.fa-brands,.fas,.far,.fab,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-solid,.far{font-family:"Font Awesome 6 Free"}.fab,.fa-brands{font-family:"Font Awesome 6 Brands"}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1,1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,0.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,0.95)) translateY(0)}57%{transform:scale(1,1) translateY(var(--fa-bounce-rebound,-0.125em))}64%{transform:scale(1,1) translateY(0)}100%{transform:scale(1,1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,0.4)}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,100%{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fa-square-rss::before{content:""}.fa-server::before{content:""}.fa-clipboard::before{content:""}.fa-shield-halved::before{content:""}.fa-chart-line::before{content:""}.fa-arrow-right::before{content:""}.fa-clipboard-check::before{content:""}.fa-eye::before{content:""}.fa-envelope::before{content:""}.fa-arrow-down::before{content:""}.fa-chevron-down::before{content:""}.fa-hashtag::before{content:"\#"}.fa-calendar::before{content:""}.fa-briefcase::before{content:""}.fa-brain::before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}/*!
 * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2024 Fonticons, Inc.
 */:root,:host{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url("../webfonts/fa-brands-400.woff2") format("woff2"),url("../webfonts/fa-brands-400.ttf") format("truetype")}.fab,.fa-brands{font-weight:400}.fa-x-twitter:before{content:""}.fa-linkedin:before{content:""}.fa-kaggle:before{content:""}.fa-github:before{content:""}.fa-telegram:before{content:""}/*!
 * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2024 Fonticons, Inc.
 */:root,:host{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url("../webfonts/fa-solid-900.woff2") format("woff2"),url("../webfonts/fa-solid-900.ttf") format("truetype")}.fas,.fa-solid{font-weight:900}/*!
 * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2024 Fonticons, Inc.
 */:root,:host{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url("../webfonts/fa-regular-400.woff2") format("woff2"),url("../webfonts/fa-regular-400.ttf") format("truetype")}.far{font-weight:400}/*!
 * Tabler Icons 3.16.0 by tabler - https://tabler.io
 * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE
 */@font-face{font-family:"tabler-icons";font-style:normal;font-weight:400;src:url("../fonts/tabler-icons.woff2?v3.16.0") format("woff2"),url("../fonts/tabler-icons.woff?") format("woff"),url("../fonts/tabler-icons.ttf?v3.16.0") format("truetype")}.ti{font-family:"tabler-icons"!important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ti-moon-filled:before{content:"\f684"}.ti-search:before{content:"\eb1c"}.ti-sun-filled:before{content:"\f6a9"}.ti-sun-moon:before{content:"\f4a3"}/*!
 * Tabler Icons 3.16.0 by tabler - https://tabler.io
 * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE
 */@font-face{font-family:"tabler-icons";font-style:normal;font-weight:400;src:url("../fonts/tabler-icons-filled.woff2?v3.16.0") format("woff2"),url("../fonts/tabler-icons-filled.woff?") format("woff"),url("../fonts/tabler-icons-filled.ttf?v3.16.0") format("truetype")}.ti{font-family:"tabler-icons"!important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}/*!
 * Tabler Icons 3.16.0 by tabler - https://tabler.io
 * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE
 */@font-face{font-family:"tabler-icons";font-style:normal;font-weight:400;src:url("../fonts/tabler-icons-outline.woff2?v3.16.0") format("woff2"),url("../fonts/tabler-icons-outline.woff?") format("woff"),url("../fonts/tabler-icons-outline.ttf?v3.16.0") format("truetype")}.ti{font-family:"tabler-icons"!important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ti-search:before{content:"\eb1c"}.ti-sun-moon:before{content:"\f4a3"}