.blog-post-skeleton{width:100%;min-height:80vh;padding:20px;display:flex;overflow:hidden}.skeleton-sidebar{flex-shrink:0;width:250px;margin-right:40px;display:none}.skeleton-content{flex:1;max-width:768px;margin:0 auto}@keyframes pulse{0%{opacity:.6}50%{opacity:.8}to{opacity:.6}}.skeleton-header,.skeleton-date,.skeleton-tag,.skeleton-paragraph,.skeleton-heading,.skeleton-code-block,.skeleton-toc-header,.skeleton-toc-item{background-color:#f0f0f0;border-radius:4px;margin-bottom:15px;animation:1.5s infinite pulse}.skeleton-header{width:80%;height:48px;margin-bottom:16px}.skeleton-date{width:30%;height:20px;margin-bottom:24px}.skeleton-tags{gap:10px;margin-bottom:30px;display:flex}.skeleton-tag{border-radius:12px;width:80px;height:24px}.skeleton-paragraph{width:100%;height:16px;margin-bottom:14px}.skeleton-paragraph:nth-child(2n){width:92%}.skeleton-heading{width:60%;height:32px;margin-top:40px;margin-bottom:24px}.skeleton-code-block{width:100%;height:120px;margin:30px 0}.skeleton-toc-header{width:70%;height:32px;margin-bottom:20px}.skeleton-toc-item{width:80%;height:18px;margin-bottom:14px}.skeleton-toc-item:nth-child(odd){width:60%}@media (min-width:1024px){.skeleton-sidebar{display:block}.blog-post-skeleton{padding:40px}}.table-of-contents{background-color:var(--toc-bg,#fafafaf2);border:1px solid var(--toc-border,#e6e6e6cc);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);box-sizing:border-box;border-radius:6px;flex-direction:column;width:100%;min-width:280px;height:100%;max-height:100%;padding:1rem 1rem 1.5rem;font-size:.9rem;transition:all .3s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 8px #0000000a}.table-of-contents::-webkit-scrollbar{width:4px}.table-of-contents::-webkit-scrollbar-track{background:0 0}.table-of-contents::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb,#9696964d);border-radius:4px}.reading-progress-container{background-color:var(--progress-bg,#c8c8c84d);border-radius:4px;flex-shrink:0;align-self:stretch;width:4px;height:auto;margin-right:.75rem;position:relative}.reading-progress-bar{background:linear-gradient(180deg, var(--progress-fill,#42a5f5) 0%, var(--color-accent,#1976d2) 100%);border-radius:4px;width:100%;transition:height .15s ease-out;position:absolute;bottom:0;left:0;box-shadow:0 2px 4px #42a5f54d}.toc-content{overscroll-behavior-y:contain;flex:1;min-width:240px;max-height:100%;padding-bottom:1rem;overflow:hidden auto}.toc-content::-webkit-scrollbar{width:3px}.toc-content::-webkit-scrollbar-track{background:0 0}.toc-content::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb,#9696964d);border-radius:4px}.table-of-contents h2{color:var(--toc-title-color,#3c3c3ce6);word-wrap:break-word;overflow-wrap:break-word;margin:0 0 .75rem;font-size:1rem;font-weight:600}.table-of-contents ul{box-sizing:border-box;width:100%;margin:0;padding:0;list-style:none}.table-of-contents li{box-sizing:border-box;width:100%;margin-bottom:.5rem;padding-left:0;transition:all .2s}.table-of-contents li.heading-1{margin-bottom:.75rem;font-weight:600}.table-of-contents li.heading-2{margin-bottom:.4rem;padding-left:0}.table-of-contents li.heading-3{margin-bottom:.3rem;padding-left:1rem;font-size:.85rem}.table-of-contents li.heading-4{margin-bottom:.25rem;padding-left:1.5rem;font-size:.8rem}.table-of-contents li a{color:var(--toc-link-color,#464646d9);word-wrap:break-word;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;white-space:normal;box-sizing:border-box;border-left:2px solid #0000;border-radius:4px;max-width:100%;padding:.3rem .5rem;line-height:1.4;text-decoration:none;transition:all .2s;display:block;position:relative}.table-of-contents li a:hover{color:var(--toc-link-hover,#1e1e1ef2);border-left-color:var(--toc-border-hover,#64646466);background-color:#42a5f514;transform:translate(2px)}.table-of-contents li a.active{color:var(--toc-active-color,#1976d2);border-left-color:var(--toc-active-border,#42a5f5);background-color:#42a5f51f;font-weight:500;transform:translate(3px)}.table-of-contents li:last-child{margin-bottom:0}@media (max-width:1400px){.table-of-contents{display:none}}.thank-you-message{background-color:var(--thank-you-bg,#fafafaf2);z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--thank-you-border,#c8c8c880);border-radius:8px;max-width:320px;padding:1.5rem;animation:.3s ease-out slide-in;position:fixed;bottom:100px;right:20px;box-shadow:0 4px 12px #0000001a}.thank-you-content{position:relative}.thank-you-close{cursor:pointer;opacity:.6;width:24px;height:24px;color:inherit;background:0 0;border:none;justify-content:center;align-items:center;margin:0;padding:0;font-family:inherit;font-size:1.5rem;line-height:1;display:flex;position:absolute;top:-1rem;right:-1rem}.thank-you-close:hover,.thank-you-close:focus{opacity:1;outline:2px solid var(--color-accent,#1976d2);outline-offset:2px;border-radius:2px}.thank-you-message p{color:var(--thank-you-text,#4a5568);margin:0 0 .75rem;line-height:1.5}.thank-you-link{background-color:var(--thank-you-link-bg,#42a5f51a);color:var(--thank-you-link-color,#1976d2);border:1px solid var(--thank-you-link-border,#42a5f533);border-radius:4px;margin:.5rem 0 1rem;padding:.5rem .75rem;font-weight:500;text-decoration:none;transition:all .2s;display:block}.thank-you-link:hover{background-color:var(--thank-you-link-bg-hover,#42a5f526);border-color:var(--thank-you-link-border-hover,#42a5f54d);transform:translateY(-1px)}.thank-you-share{color:var(--thank-you-text,#4a5568);margin-top:1rem;font-style:italic;margin-bottom:0!important}@keyframes slide-in{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.thank-you-message{max-width:280px;padding:1rem;bottom:100px}}:root{--font-serif:"Playfair Display", "Times New Roman", Georgia, serif;--font-body:"Source Serif Pro", Georgia, serif;--font-sans:"IBM Plex Sans", -apple-system, system-ui, sans-serif;--font-mono:"IBM Plex Mono", monospace;--font-aleph-subscript:"STIX Two Text", "Source Serif Pro", Georgia, serif;--color-paper:#fcfaf7;--color-paper-rgb:252, 250, 247;--color-paper-dark:#f5f2ed;--color-ink-dark:#1a1a1a;--color-ink-dark-rgb:26, 26, 26;--color-ink-medium:#333;--color-ink-medium-rgb:51, 51, 51;--color-ink-light:#666;--color-ink-light-rgb:102, 102, 102;--color-code-bg:#1a1a1a12;--color-code-border:#1a1a1a1f;--color-accent:#d32f2f;--color-accent-hover:#b71c1c;--color-accent-rgb:211, 47, 47;--color-accent-light:rgba(var(--color-accent-rgb), .08)}.blog-post-page{--primary-color:#3498db;--primary-color-light:#5dade2;--code-bg:#f6f8fa;--bg-color-dark:#252526;--font-mono:"Fira Code", "Consolas", monospace;--font-family:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--spacing-xs:.25rem;--spacing-sm:.75rem;--spacing-md:1.25rem;--spacing-lg:1.75rem;--spacing-xl:2.5rem;--content-padding-x:3rem;--content-padding-y:1.5rem;--content-max-width:80ch;--section-spacing:3rem;--sidenote-gap:1rem;--font-size-sm:.875rem;--font-size-base:1.125rem;--font-size-lg:1.25rem;--line-height-base:1.5;--line-height-relaxed:1.75;--line-height-tight:1.2;--max-width:98%;--content-width:75%;--left-column-width:12%;--right-column-width:13%;--border-radius:8px;--transition-base:all .2s ease-in-out;background:var(--color-paper,#fcfaf7);width:100%;margin:0;padding:0;position:relative}.blog-post-page .main-nav{z-index:50;width:100%;font-family:var(--font-serif);font-size:1rem}.blog-post-page .nav-container{padding:0 2rem}.blog-post-container{grid-template-columns:1fr min(950px,100%) 1fr;grid-template-areas:".content.";min-height:100vh;margin-top:1rem;padding-left:260px;display:grid;position:relative}.blog-post-content-wrapper{background-color:var(--color-paper,#fcfaf7);border:2px dotted var(--color-ink-light,#66666680);border-radius:8px;grid-area:content;margin:1rem 0 3rem;padding:2.5rem 3rem 2.5rem 2.5rem;position:relative;box-shadow:0 2px 10px #0000000d}.blog-post-intro{font-family:var(--serif-font);color:var(--color-ink-medium,#333);border-bottom:1px solid #0000001a;margin-bottom:2rem;padding-bottom:1.5rem;font-size:1.1rem;font-style:italic;line-height:1.6}.blog-post-back-link{font-family:var(--font-mono,"Courier New", monospace);letter-spacing:.04em;color:var(--color-ink-light,#8a8a8a);margin-bottom:1rem;font-size:.75rem;text-decoration:none;transition:color .2s;display:inline-block}.blog-post-back-link:hover{color:var(--color-accent,#d32f2f)}.blog-post-meta{font-family:var(--sans-font);color:var(--meta-color,#292929b3);border-bottom:1px solid var(--meta-border,#e6e6e6cc);margin-bottom:2rem;padding-bottom:1rem;font-size:.95rem}.blog-post-published{margin-bottom:.5rem}.blog-post-tags{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.blog-post-tag{background-color:var(--tag-bg,#e6e6e680);color:var(--tag-color,#292929b3);border-radius:4px;padding:.2rem .5rem;font-size:.8rem;text-decoration:none;transition:all .2s}.blog-post-tag:hover{background-color:var(--tag-bg-hover,#d2d2d2b3);color:var(--tag-color-hover,#292929e6)}.blog-post-sidebar{z-index:10;pointer-events:auto;width:320px;height:auto;max-height:calc(100vh - 200px);padding-bottom:30px;padding-right:20px;position:fixed;top:175px;left:calc(50% - 660px)}.blog-post-content{z-index:1;max-width:100%;position:relative}.blog-post-content .footnotes-container{z-index:10;pointer-events:auto;width:16vw;max-width:300px;height:100%;margin-left:5rem;position:absolute;top:0;left:100%}.blog-post-footer{border-top:1px solid var(--footer-border,#e6e6e6cc);font-family:var(--sans-font);grid-area:content;margin:3rem 0;padding-top:2rem}.blog-post-related{margin-top:3rem}.blog-post-related h3{font-size:1.3rem;font-family:var(--sans-font);margin-bottom:1.5rem}.blog-post-related-posts{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.5rem;display:grid}.blog-post-related-post{border:1px solid var(--related-border,#e6e6e6cc);border-radius:6px;padding:1rem;transition:all .2s}.blog-post-related-post:hover{border-color:var(--related-border-hover,#c8c8c8e6);box-shadow:0 2px 8px #0000000a}.blog-post-related-post h4{margin-top:0;font-size:1rem}.blog-post-related-post a{color:inherit;text-decoration:none}@media (max-width:1400px){.blog-post-container{box-sizing:border-box;width:100%;max-width:100%;margin-top:1.5rem;grid-template-columns:1fr!important;grid-template-areas:"content"!important;padding-left:0!important}.blog-post-sidebar{width:0!important;height:0!important;margin:0!important;padding:0!important;display:none!important;position:static!important}.blog-post-content-wrapper{margin:1.5rem 1rem;padding:2rem}.blog-post-content .footnotes-container{width:15vw;max-width:250px;margin-left:4rem}}@media (max-width:768px){.blog-post-container{width:100%;max-width:100%;margin-top:1rem;grid-template-columns:1fr!important;padding-left:0!important}.blog-post-content-wrapper{box-sizing:border-box;max-width:100%;margin:1.5rem 1rem;padding:1.5rem}.blog-post-related-posts{grid-template-columns:1fr}.blog-post-sidebar{visibility:hidden!important;opacity:0!important;pointer-events:none!important;display:none!important}}@media (max-width:480px){.blog-post-container{margin-top:.5rem;padding-left:0!important}.blog-post-meta{font-size:.9rem}.blog-post-content-wrapper{box-sizing:border-box;border-radius:6px;max-width:100%;margin:1rem .75rem;padding:1.25rem}.blog-post-sidebar{visibility:hidden!important;opacity:0!important;pointer-events:none!important;display:none!important}}.blog-post-page .markdown-content{color:var(--text-color,#292929e6);max-width:100%;font-size:1.15rem;line-height:1.7;position:relative}.blog-post-page{--serif-font:"Charter", "Bitstream Charter", "Sitka Text", Cambria, serif;--sans-font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--mono-font:"JetBrains Mono", "Fira Code", Menlo, Monaco, "Courier New", monospace;--heading-color:#292929e6;--text-color:#292929e6;--light-text-color:#292929b3;--link-color:#1976d2;--link-hover-color:#1565c0;--code-color:#d32f2f;--blockquote-color:#29292999;font-family:var(--serif-font);color:var(--text-color);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:1.15rem;line-height:1.7}@media (max-width:768px){.blog-post-page{font-size:1.05rem}}.blog-post-content>*{max-width:680px;margin-left:auto;margin-right:auto}.blog-post-content h1,.blog-post-content h2,.blog-post-content h3,.blog-post-content h4,.blog-post-content h5,.blog-post-content h6{font-family:var(--sans-font);color:var(--heading-color);margin-top:2.5em;margin-bottom:.75em;font-weight:700;line-height:1.3;position:relative}.blog-post-content h1{margin-top:0;margin-bottom:1.5rem;font-size:2.5rem}.blog-post-content h2{font-size:1.8rem}.blog-post-content h3{font-size:1.5rem}.blog-post-content h4{font-size:1.3rem}.blog-post-content h5{font-size:1.1rem}.blog-post-content h6{color:var(--light-text-color);font-size:1rem}.blog-post-content a:not(.footnote){color:var(--link-color);border-bottom:1px solid #1976d24d;text-decoration:none;transition:all .2s}.blog-post-content a:hover:not(.footnote){color:var(--link-hover-color);border-bottom-color:#1565c099}.blog-post-content p{margin-bottom:1.5em}.blog-post-content ul,.blog-post-content ol{margin:0 0 1.5em 2em;padding:0}.blog-post-content li{margin-bottom:.5em}.blog-post-content li p{margin-bottom:.7em}.blog-post-content blockquote{color:var(--blockquote-color);border-left:4px solid #0000001a;margin:2em 0;padding:0 1em;font-style:italic}.blog-post-content blockquote p{font-size:1.1em}.blog-post-content blockquote cite{color:var(--light-text-color);margin-top:1em;font-size:.9em;font-style:normal;font-weight:500;display:block}.blog-post-content :not(pre)>code{font-family:var(--mono-font);color:var(--code-color);white-space:nowrap;background:#0000000d;border-radius:3px;padding:.1em .4em;font-size:.9em;font-weight:500}.blog-post-content img{border-radius:4px;max-width:100%;height:auto;margin:2em auto;display:block}.blog-post-content figure{margin:2.5em 0;max-width:100%!important}.blog-post-content figcaption{text-align:center;color:var(--light-text-color);margin-top:.75em;font-size:.9em;font-style:italic}.blog-post-content table{border-collapse:collapse;width:100%;margin-bottom:2em;font-size:.95em;display:block;overflow-x:auto}.blog-post-content th,.blog-post-content td{text-align:left;border:1px solid #0000001a;padding:.75em 1em}.blog-post-content th{font-weight:600;font-family:var(--sans-font);background-color:#0000000d}.blog-post-content tr:nth-child(2n){background-color:#00000005}.blog-post-content hr{background-color:#0000001a;border:none;height:1px;margin:3em 0}.blog-post-content pre{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.blog-post-content strong,.blog-post-content b{font-weight:700}.blog-post-content em,.blog-post-content i{font-style:italic}.blog-post-content mark{background-color:#ffeb3b66;border-radius:2px;padding:.1em .2em}@media (max-width:768px){.blog-post-content h1{font-size:2rem}.blog-post-content h2{font-size:1.6rem}.blog-post-content h3{font-size:1.3rem}.blog-post-content blockquote{padding-left:.8em}}@media (max-width:480px){.blog-post-content h1{font-size:1.8rem}.blog-post-content h2{font-size:1.4rem}.blog-post-content h3{font-size:1.2rem}}.blog-post-return-link{color:var(--return-link-color,#292929b3);font-family:var(--sans-font);align-items:center;gap:.5rem;font-size:.95rem;text-decoration:none;transition:all .2s;display:flex}.blog-post-return-link:hover{color:var(--return-link-hover,#292929e6)}.blog-post-return-link svg{stroke:currentColor;width:16px;height:16px}.blog-post-share-links{align-items:center;gap:1rem;display:flex}.blog-post-share-link{color:var(--share-color,#29292999);transition:color .2s}.blog-post-share-link:hover{color:var(--share-hover,#292929e6)}.blog-post-share-link svg{stroke:currentColor;width:18px;height:18px}:is(.blog-post-page .blog-post-content) pre{margin:var(--spacing-md) 0;padding:var(--spacing-sm);background:var(--code-bg);border-radius:.5rem;overflow-x:auto}:is(:is(.blog-post-page .blog-post-content) pre) code{background:0 0;border-radius:0;padding:0}:is(.blog-post-page .blog-post-content) code{font:.9em var(--font-mono);background:var(--code-bg);border-radius:.25rem;padding:.2em .4em}.blog-post-page .blog-post-content pre{max-width:100%;overflow-x:auto}.blog-post-page .blog-post-content pre code{white-space:pre-wrap;max-width:100%;padding:1rem;display:block;overflow-x:auto}.blog-post-page .code-block-wrapper{margin:2rem 0;position:relative}.blog-post-page .code-block{background:var(--bg-color-dark);border:1px solid #52525952;border-radius:12px;padding:.25rem;transition:transform .2s,box-shadow .2s;position:relative;box-shadow:0 2px 4px #00000014,0 8px 16px #0000001f}.blog-post-page .code-block:hover{transform:translateY(-1px);box-shadow:0 4px 8px #0000001f,0 12px 24px #00000029}.blog-post-page pre[class*=language-]{background:var(--bg-color-dark);border-radius:8px;margin:0;padding:.75rem;overflow-x:auto}.blog-post-page code[class*=language-]{color:#e1e4e8;-moz-tab-size:2;tab-size:2;-webkit-hyphens:none;hyphens:none;font-family:Fira Code,Space Mono,monospace;font-size:.9em;line-height:1.6;text-shadow:none!important}.blog-post-page .code-title{color:#8b949e;background:var(--bg-color-dark);letter-spacing:.05em;text-transform:lowercase;z-index:1;opacity:.7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #52525952;border-radius:4px;padding:.3rem .8rem;font-family:Space Mono,monospace;font-size:.65em;transition:all .2s;position:absolute;bottom:.75rem;right:.75rem}:is(.blog-post-page .code-title):hover{opacity:.9;transform:translateY(-1px)}.blog-post-page .copy-button{background:var(--bg-color-dark);color:#8b949e;cursor:pointer;opacity:0;z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #52525952;border-radius:6px;justify-content:center;align-items:center;padding:.5rem;transition:all .2s;display:flex;position:absolute;top:.75rem;right:.75rem}.blog-post-page .code-block:hover .copy-button{opacity:.7}.blog-post-page .copy-button:hover{color:var(--text-color);transform:translateY(-1px);box-shadow:0 2px 4px #0000001a;opacity:1!important}.blog-post-page .copy-button.copied{color:#7ee787;background:#7ee7871a;border-color:#7ee78766}.blog-post-page .token.comment,.blog-post-page .token.prolog,.blog-post-page .token.doctype,.blog-post-page .token.cdata{color:#8b949e;font-style:italic}.blog-post-page .token.namespace{opacity:.7}.blog-post-page .token.string,.blog-post-page .token.attr-value{color:#a5d6ff}.blog-post-page .token.punctuation,.blog-post-page .token.operator{color:#79c0ff}.blog-post-page .token.boolean,.blog-post-page .token.number,.blog-post-page .token.constant,.blog-post-page .token.symbol,.blog-post-page .token.deleted{color:#ffa657}.blog-post-page .token.selector,.blog-post-page .token.attr-name,.blog-post-page .token.char,.blog-post-page .token.builtin,.blog-post-page .token.inserted{color:#7ee787}.blog-post-page .token.entity,.blog-post-page .token.url,.blog-post-page .language-css .token.string,.blog-post-page .style .token.string,.blog-post-page .token.variable{color:#79c0ff}.blog-post-page .token.atrule,.blog-post-page .token.attr-value,.blog-post-page .token.keyword{color:#ff7b72}.blog-post-page .token.function{color:#d2a8ff}.blog-post-page .token.regex,.blog-post-page .token.important{color:#a5d6ff}.blog-post-page .token.important,.blog-post-page .token.bold{font-weight:700}.blog-post-page .token.italic{font-style:italic}.blog-post-page [class*=language-] .token{background:0 0!important}.blog-post-page .language-javascript .token.template-string,.blog-post-page .language-typescript .token.template-string{color:#a5d6ff!important}.blog-post-page .language-javascript .token.dom,.blog-post-page .language-typescript .token.dom,.blog-post-page .language-javascript .token.console,.blog-post-page .language-typescript .token.console{color:#79c0ff!important}.blog-post-page .language-python .token.decorator{color:#ff7b72!important}.blog-post-page .language-python .token.string-interpolation{color:#a5d6ff!important}.blog-post-page .language-python .token.self{color:#ff7b72!important}.blog-post-page .language-css .token.property,.blog-post-page .language-scss .token.property{color:#79c0ff!important}.blog-post-page .language-css .token.function,.blog-post-page .language-scss .token.function{color:#d2a8ff!important}.blog-post-page .language-html .token.tag,.blog-post-page .language-xml .token.tag{color:#7ee787!important}.blog-post-page .language-html .token.attr-name,.blog-post-page .language-xml .token.attr-name{color:#79c0ff!important}.blog-post-page .language-glsl .token.keyword{color:#ff7b72!important}.blog-post-page .language-glsl .token.builtin{color:#79c0ff!important}.blog-post-page .language-cpp .token.preprocessor{color:#ff7b72!important}.blog-post-page .language-cpp .token.macro{color:#d2a8ff!important}.blog-post-page .language-markdown .token.title,.blog-post-page .language-markdown .token.title .token.punctuation{font-weight:700;color:#ff7b72!important}.blog-post-page .language-markdown .token.blockquote.punctuation{color:#8b949e}.blog-post-page .language-markdown .token.code{color:#7ee787}.blog-post-page .language-markdown .token.url .token.content{color:#a5d6ff}.blog-post-page .language-json .token.property,.blog-post-page .language-yaml .token.key{color:#79c0ff!important}.blog-post-page .language-shell .token.function{color:#d2a8ff!important}.blog-post-page .token.deleted{color:#ffa198;background:#ff818233}.blog-post-page .token.inserted{color:#7ee787;background:#7ee78733}.blog-post-page .line-number{-webkit-user-select:none;user-select:none;color:#8b949e;border-right:1px solid var(--border-color);margin-right:1rem;padding-right:1rem}.blog-post-page pre::-webkit-scrollbar{width:12px;height:12px}.blog-post-page pre::-webkit-scrollbar-track{background:0 0;border-radius:0 0 12px 12px}.blog-post-page pre::-webkit-scrollbar-thumb{border:4px solid var(--bg-color-dark);background:#4b55634d;border-radius:12px;transition:background .2s}.blog-post-page pre::-webkit-scrollbar-thumb:hover{background:#4b556380}.blog-post-page pre[class*=language-]::-moz-selection{background:#264f7899}.blog-post-page pre[class*=language-] ::-moz-selection{background:#264f7899}.blog-post-page code[class*=language-]::-moz-selection{background:#264f7899}.blog-post-page code[class*=language-] ::-moz-selection{background:#264f7899}.blog-post-page pre[class*=language-]::selection{background:#264f7899}.blog-post-page pre[class*=language-] ::selection{background:#264f7899}.blog-post-page code[class*=language-]::selection{background:#264f7899}.blog-post-page code[class*=language-] ::selection{background:#264f7899}.blog-post-page .blog-post-content h3{writing-mode:horizontal-tb;text-orientation:mixed;color:var(--text-color);border-bottom:2px solid var(--border-color);margin:2rem 0 1rem;padding-bottom:.5rem;font-size:1.5rem}.blog-post-page .blog-post-content :not(pre)>code{vertical-align:middle;color:var(--code-color,#d32f2f);background:#0000000d;border:1px solid #00000014;border-radius:4px;padding:.2em .4em;font-size:.9em}.blog-post-content .footnote{cursor:pointer;color:var(--footnote-color,#546e7a);white-space:nowrap;text-decoration:none;transition:color .2s;position:relative}.blog-post-content .footnote sup{vertical-align:baseline;font-size:.75em;line-height:0;position:relative;top:-.5em}.blog-post-content .footnote:hover{color:var(--footnote-hover-color,#0d47a1)}.blog-post-content .footnote.active{color:var(--footnote-active-color,#1565c0)}.blog-post-footnotes{border-top:1px solid var(--footnote-divider,#e6e6e6cc);color:var(--footnote-list-color,#292929cc);margin-top:3rem;padding-top:1.5rem;font-size:.9rem}.blog-post-footnotes h2{margin-bottom:1.5rem;font-size:1.3rem}.blog-post-footnotes ol{padding-left:1.5rem}.blog-post-footnotes li{margin-bottom:.75rem;line-height:1.5}.blog-post-footnotes p{margin:0}.blog-post-footnotes a{color:var(--footnote-backlink-color,#1976d2);text-decoration:none;transition:color .2s}.blog-post-footnotes a:hover{color:var(--footnote-backlink-hover,#1565c0);text-decoration:underline}.footnote-popup{background-color:var(--footnote-popup-bg,#fafafaf2);z-index:1000;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid var(--footnote-popup-border,#c8c8c880);border-radius:8px;max-height:30vh;padding:1.5rem;font-size:.9rem;line-height:1.6;animation:.3s footnote-slide-up;position:fixed;bottom:20px;left:20px;right:20px;overflow-y:auto;box-shadow:0 4px 12px #0000001a}@keyframes footnote-slide-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.footnote-popup-close{cursor:pointer;width:24px;height:24px;color:var(--footnote-close,#29292980);justify-content:center;align-items:center;transition:color .2s;display:flex;position:absolute;top:10px;right:10px}.footnote-popup-close:hover{color:var(--footnote-close-hover,#292929e6)}.footnote-popup p{margin:0}@media (max-width:768px){.footnote-popup{padding:1rem;font-size:.85rem;bottom:10px;left:10px;right:10px}}.blog-post-sidebar{flex-direction:column;gap:2rem;display:flex}.blog-post-author{background-color:var(--author-bg,#fafafae6);text-align:center;font-family:var(--sans-font);border:1px solid var(--author-border,#e6e6e6cc);border-radius:8px;flex-direction:column;align-items:center;padding:1.5rem;display:flex}.blog-post-author-avatar{object-fit:cover;border-radius:50%;width:80px;height:80px;margin-bottom:1rem}.blog-post-author-name{color:var(--author-name,#292929e6);margin:0 0 .5rem;font-size:1.1rem;font-weight:600}.blog-post-author-bio{color:var(--author-bio,#292929b3);margin:0 0 1rem;font-size:.9rem;line-height:1.5}.blog-post-author-social{gap:1rem;display:flex}.blog-post-author-social a{color:var(--author-social,#29292999);transition:color .2s}.blog-post-author-social a:hover{color:var(--author-social-hover,#292929e6)}.blog-post-author-social svg{stroke:currentColor;width:20px;height:20px}.blog-post-newsletter{background-color:var(--newsletter-bg,#fafafae6);font-family:var(--sans-font);border:1px solid var(--newsletter-border,#e6e6e6cc);border-radius:8px;padding:1.5rem}.blog-post-newsletter h3{color:var(--newsletter-title,#292929e6);margin-top:0;margin-bottom:.75rem;font-size:1.1rem}.blog-post-newsletter p{color:var(--newsletter-text,#292929b3);margin-bottom:1rem;font-size:.9rem;line-height:1.5}.blog-post-newsletter-form{flex-direction:column;gap:.75rem;display:flex}.blog-post-newsletter-input{border:1px solid var(--newsletter-input-border,#c8c8c8cc);border-radius:4px;padding:.75rem;font-family:inherit;font-size:.9rem}.blog-post-newsletter-button{background-color:var(--newsletter-button-bg,#1976d2);color:var(--newsletter-button-text,#fff);cursor:pointer;border:none;border-radius:4px;padding:.75rem;font-family:inherit;font-size:.9rem;font-weight:500;transition:background-color .2s}.blog-post-newsletter-button:hover{background-color:var(--newsletter-button-hover,#1565c0)}@media (max-width:1300px){.blog-post-author{text-align:left;flex-direction:row;align-items:flex-start;padding:1rem}.blog-post-author-avatar{width:60px;height:60px;margin-bottom:0;margin-right:1rem}.blog-post-author-content{flex:1}}pre[class*=language-].line-numbers{counter-reset:linenumber;padding-left:3.8em;position:relative}pre[class*=language-].line-numbers>code{white-space:inherit;position:relative}.line-numbers .line-numbers-rows{pointer-events:none;letter-spacing:-1px;-webkit-user-select:none;user-select:none;border-right:1px solid #999;width:3em;font-size:100%;position:absolute;top:0;left:-3.8em}.line-numbers-rows>span{counter-increment:linenumber;display:block}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;text-align:right;padding-right:.8em;display:block}
