*,:before,:after{box-sizing:border-box}::selection{background-color:var(--color-primary);color:#fff}.post-content pre ::selection{color:inherit;background-color:#00796b40}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:#00000026;border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--color-primary)}@media (prefers-color-scheme:dark) and (width<=0){::-webkit-scrollbar-thumb{background-color:#fff3}.post-content pre ::selection{color:#fff!important;background-color:#ffffff4d!important}}:root{--color-primary:#00796b;--color-primary-light:#e0f2f1;--color-link-dark:#80cbc4;--color-text:#2c3e50;--color-text-secondary:#555;--color-background:#fff;--color-card:#fff;--color-border:#f0f0f0;--color-text-dark:#ededed;--color-text-secondary-dark:#a8b3bf;--color-background-dark:#121212;--color-card-dark:#1e1e1e;--color-border-light:#333;--color-border-dark:#2a2a2a;--color-code-bg:#f8f9fa;--color-code-bg-dark:#22272e;--color-admonition-note:#00796b;--color-admonition-warn:#fbc02d;--color-admonition-danger:#d32f2f;--color-main-text:var(--color-text);--color-main-subtext:var(--color-text-secondary);--color-main-background:var(--color-background);--color-main-card:var(--color-card);--color-main-border:var(--color-border);--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:40px;--radius-sm:4px;--radius-md:8px;--radius-pill:999px;--content-width:800px;--reading-width:68ch;--header-offset:90px;--header-offset-mobile:82px;--target-offset:132px;--target-offset-mobile:58px;--focus-ring-color:var(--color-primary);--focus-ring-shadow:0 0 0 4px #00796b29;--font-emoji:"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, var(--font-emoji), sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", "Consolas", "Segoe UI Mono", "Liberation Mono", "Menlo", Monaco, var(--font-emoji), monospace}@media (prefers-color-scheme:dark) and (width<=0){:root{--color-main-text:var(--color-text-dark);--color-main-subtext:var(--color-text-secondary-dark);--color-main-background:var(--color-background-dark);--color-main-card:var(--color-card-dark);--color-main-border:var(--color-border-light);--focus-ring-color:var(--color-link-dark);--focus-ring-shadow:0 0 0 4px #80cbc42e}}html{font-family:var(--font-sans);color:var(--color-main-text);background-color:var(--color-main-background);scroll-behavior:smooth;font-size:16px;line-height:1.7}body{flex-direction:column;min-height:100vh;margin:0;padding:0;display:flex}a{color:var(--color-primary);text-underline-offset:3px;outline:none;text-decoration-line:underline;text-decoration-color:#0000;text-decoration-thickness:1px;transition:color .2s,text-decoration-color .2s}a:hover{color:#004d40;text-decoration-color:currentColor}a:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}a:focus:not(:focus-visible){outline:none}@media (prefers-color-scheme:dark) and (width<=0){a{color:var(--color-link-dark)}a:hover{color:#b2dfdb}}header nav a,.site-title,.post-list-item,.tag-badge,.button,.button-secondary,.archive-link,.nav-link,.footer-content a{text-decoration:none}h1,h2,h3,h4,h5,h6{color:var(--color-main-text);scroll-margin-top:var(--header-offset);overflow-wrap:break-word;margin-top:1.5em;margin-bottom:.6em;font-weight:700;line-height:1.25}h1{letter-spacing:-.02em;font-size:2rem;line-height:1.2}h2{letter-spacing:-.01em;font-size:1.6rem}h3{letter-spacing:0;font-size:1.3rem}@media (prefers-color-scheme:dark) and (width<=0){h1,h2,h3,h4,h5,h6{color:var(--color-text-dark)}}.post-content h2+h3,.post-content h3+h4{margin-top:.8em}ul,ol{margin-bottom:1.5em;padding-left:20px}li{margin-bottom:.4em}.container{max-width:var(--content-width);padding:0 var(--space-lg);margin:0 auto}header{padding:var(--space-lg) 0;z-index:100;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-main-border);background-color:#fffffff2;position:sticky;top:0}@media (prefers-color-scheme:dark) and (width<=0){header{background-color:#121212f2}}.header-inner{justify-content:space-between;align-items:center;gap:var(--space-lg);max-width:var(--content-width);padding:0 var(--space-lg);margin:0 auto;display:flex}.site-title{color:var(--color-primary);letter-spacing:-.01em;font-size:1rem;font-weight:700}.site-title:hover,.site-title:focus{color:#004d40}header nav{justify-content:flex-end;align-items:center;gap:var(--space-sm) var(--space-lg);flex-wrap:wrap;display:flex}header nav a{color:var(--color-main-subtext);padding:var(--space-xs) 0;white-space:nowrap;font-size:.9rem}header nav a:hover,header nav a.active-nav-link,header nav a[aria-current=page]{color:var(--color-main-text);font-weight:600}.mobile-nav-menu{display:none}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}main{padding:var(--space-xl) 0 calc(var(--space-xl) * 2);flex-grow:1}.main-layout{justify-content:space-between;gap:var(--space-xl);max-width:var(--content-width);padding:0 var(--space-lg);margin:0 auto;display:flex}.content-area{flex-grow:1;max-width:100%}.toc-area{border-left:1px solid var(--color-main-border);flex-shrink:0;width:200px;max-height:calc(100vh - 120px);padding-left:15px;font-size:.85rem;position:sticky;top:100px;overflow-y:auto}.toc-area h3{text-transform:uppercase;color:var(--color-main-subtext);letter-spacing:.05em;margin:0 0 10px;font-size:.8rem}.toc-area ul{margin:0;padding:0;list-style:none}.toc-area ul ul{border-left:1px dotted var(--color-main-border);margin:5px 0;padding-left:15px}.toc-area ul ul ul{border-left:1px dotted var(--color-main-border);padding-left:15px}.toc-area li a{color:var(--color-main-subtext);border-radius:3px;outline:none;padding:4px 5px;font-weight:500;line-height:1.4;text-decoration:none;transition:all .2s;display:block}.toc-area>ul>li>a{color:var(--color-main-text);padding-top:6px;padding-bottom:6px;font-size:.9rem;font-weight:600}.toc-area ul ul a{color:var(--color-main-subtext);font-size:.85rem}.toc-area li a:hover,.toc-area li a:focus{color:var(--color-primary);background-color:var(--color-primary-light)}@media (prefers-color-scheme:dark) and (width<=0){.toc-area li a:hover,.toc-area li a:focus{color:var(--color-link-dark);background-color:#00796b1a}}.page-post .toc-area{display:block}.page-post .content-area{flex-basis:75%;max-width:75%}.page-index .toc-area,.page-archive .toc-area,.page-tags .toc-area{display:none}.page-index .content-area,.page-archive .content-area,.page-tags .content-area{flex-basis:100%;max-width:100%}.mobile-toc{margin-bottom:var(--space-xl);border:1px solid var(--color-main-border);border-radius:var(--radius-sm);background-color:var(--color-main-card);font-size:.9rem;transition:border-color .2s;display:none}.mobile-toc:hover{border-color:var(--color-primary)}.mobile-toc summary{padding:var(--space-sm) var(--space-md);padding-right:var(--space-xl);cursor:pointer;color:var(--color-main-subtext);outline:none;font-weight:500;list-style:none;transition:color .2s;position:relative}.mobile-toc summary::-webkit-details-marker{display:none}.mobile-toc summary:after{content:"+";color:var(--color-primary);font-size:1.2em;font-weight:700;line-height:1;transition:transform .2s;position:absolute;top:50%;right:15px;transform:translateY(-50%)}.mobile-toc[open]>summary{border-bottom:1px solid var(--color-main-border);color:var(--color-main-text);margin-bottom:10px;padding-bottom:10px}.mobile-toc[open]>summary:after{transform:translateY(-50%)rotate(45deg)}.mobile-toc-content{padding:var(--space-md);border-top:none}.mobile-toc-content ul{padding:0;list-style:none}.mobile-toc-content ul ul{border-left:1px dotted var(--color-main-border);padding-left:15px}.mobile-toc-content a{color:var(--color-main-text);padding:4px 0;text-decoration:none;display:block}.post-content p{color:var(--color-main-text);letter-spacing:.005em;text-align:start;text-rendering:optimizelegibility;margin-bottom:1.6em;line-height:1.75}.post-content p,.post-content ul,.post-content ol,.post-content blockquote,.post-content .admonition{max-width:var(--reading-width);margin-left:auto;margin-right:auto}.post-content ul,.post-content ol{box-sizing:border-box;padding-left:2rem}.post-content h2+p,.post-content h3+p,.post-content h4+p{margin-top:.8em}.page-post .post-content h1,.page-post .post-content h2,.page-post .post-content h3,.page-post .post-content h4,.page-post .post-content h5,.page-post .post-content h6{color:var(--color-primary)}.page-post .post-content h3,.page-post .post-content h4,.page-post .post-content h5,.page-post .post-content h6{font-weight:650}@media (prefers-color-scheme:dark) and (width<=0){.page-post .post-content h1,.page-post .post-content h2,.page-post .post-content h3,.page-post .post-content h4,.page-post .post-content h5,.page-post .post-content h6{color:var(--color-link-dark)}}.post-content h2 a.toclink,.post-content h3 a.toclink,.post-content h4 a.toclink,.post-content h2 a.toclink:hover,.post-content h2 a.toclink:focus,.post-content h3 a.toclink:hover,.post-content h3 a.toclink:focus,.post-content h4 a.toclink:hover,.post-content h4 a.toclink:focus{color:inherit;text-decoration:none}.post-content h2,.post-content h3{position:relative}.post-content h2:before,.post-content h3:before{content:"#";color:var(--color-primary);opacity:0;pointer-events:none;font-weight:400;transition:opacity .2s,transform .2s;position:absolute;top:0;left:-1.2em;transform:translate(10px)}.post-content h2:hover:before,.post-content h3:hover:before{opacity:.6;transform:translate(0)}@media (width<=900px){.post-content h2:before,.post-content h3:before{display:none}}.page-post .post-content ul ul,.page-post .post-content ol ol,.page-index .post-content ul ul,.page-index .post-content ol ol{border-left:1px dotted var(--color-main-border);margin-top:5px;margin-bottom:5px;padding-left:15px}.page-post .post-content ul,.page-post .post-content ol{color:var(--color-main-text)}.page-post .post-content ul li,.page-post .post-content ol li{color:var(--color-main-text);border-bottom:none;margin-bottom:.5em;padding:0}.page-post .post-content ul li:last-child,.page-post .post-content ol li:last-child{border-bottom:none}.page-post .post-content ul li::marker,.page-post .post-content ol li::marker{color:var(--color-primary)}@media (prefers-color-scheme:dark) and (width<=0){.page-post .post-content ul li::marker,.page-post .post-content ol li::marker{color:var(--color-link-dark)}}.post-content img{border-radius:var(--radius-sm);max-width:100%;height:auto;margin:var(--space-lg) auto;border:1px solid var(--color-main-border);transition:opacity .3s;display:block}.post-content img+em{text-align:center;color:var(--color-main-subtext);font-size:.85rem;font-family:var(--font-sans);border-top:1px solid var(--color-main-border);border-bottom:1px solid var(--color-main-border);margin-top:-20px;margin-bottom:var(--space-lg);justify-content:center;align-items:center;gap:6px;padding:8px 0;font-style:normal;display:flex}.post-content img+em:before{content:"▲";opacity:.6;font-size:.6em}.post-content blockquote{border-left:3px solid var(--color-main-border);padding:var(--space-md) var(--space-lg);margin-top:var(--space-lg);margin-bottom:var(--space-lg);color:var(--color-main-subtext);border-radius:var(--radius-sm);background-color:#00000004;font-style:italic;position:relative}.post-content blockquote:before{content:none}.post-content blockquote cite{margin-top:var(--space-sm);color:var(--color-main-subtext);font-size:.9em;font-style:normal;display:block}.post-content blockquote cite:before{content:"— "}@media (prefers-color-scheme:dark) and (width<=0){.post-content blockquote{background-color:#ffffff05}}.post-content code:not(pre code){font-family:var(--font-mono);color:var(--color-text);border-radius:var(--radius-sm);background-color:var(--color-code-bg);border:1px solid #0000000d;padding:2px 4px;font-size:.9em;font-weight:500}.post-content kbd{border:1px solid var(--color-main-border);border-radius:var(--radius-sm);background-color:var(--color-code-bg);min-width:1.8em;color:var(--color-main-text);font-family:var(--font-mono);text-align:center;vertical-align:baseline;border-bottom-width:2px;padding:2px 6px;font-size:.85em;line-height:1.4;display:inline-block}.content-media,.post-content>.content-media-image-link{width:min(100%, var(--reading-width));margin:var(--space-xl) auto}.article-lead{margin-bottom:var(--space-xl);color:var(--color-main-text);font-size:1.12rem;font-weight:500;line-height:1.75}.content-media>img,.content-media-image-link>img{object-fit:contain;border:1px solid var(--color-main-border);border-radius:var(--radius-md);background:#fff;width:100%;max-height:34rem;margin:0;display:block}.content-media-image-link{color:inherit;display:block}.content-embed{aspect-ratio:16/9;border:1px solid var(--color-main-border);border-radius:var(--radius-md);background:#f4f5f7;width:100%;position:relative;overflow:hidden}.content-embed-document,.content-embed-website{aspect-ratio:4/3;min-height:34rem}.content-embed iframe{border:0;width:100%;height:100%}.content-media audio{width:100%}.content-media figcaption{margin-top:var(--space-sm);color:var(--color-main-subtext);font-size:.88rem;line-height:1.5}@media (width<=720px){.content-embed-document,.content-embed-website{min-height:25rem}}.post-content mark{color:inherit;background-color:#fbc02d47;border-radius:2px;padding:0 3px}.post-content .arithmatex{overflow-x:auto}.post-content .katex{color:var(--color-main-text)}@media (prefers-color-scheme:dark) and (width<=0){.post-content .katex{color:var(--color-main-text)}}.post-content div.arithmatex{max-width:var(--reading-width);margin:var(--space-lg) auto;padding:var(--space-sm) 0}@media (prefers-color-scheme:dark) and (width<=0){.post-content code:not(pre code){background-color:var(--color-code-bg-dark);color:var(--color-link-dark);border:1px solid #ffffff1a}.post-content kbd{background-color:var(--color-code-bg-dark);border-color:var(--color-border-light)}.post-content mark{background-color:#fbc02d38}}.post-content .highlight{margin:var(--space-lg) 0;border:1px solid var(--color-main-border);border-radius:var(--radius-md);background-color:var(--color-code-bg);transition:background-color .2s;position:relative;overflow:hidden}.post-content .highlight[data-title],.post-content .highlight[data-lang]{background-image:linear-gradient(#00000004 0 32px,#0000 32px)}.post-content pre{font-family:var(--font-mono);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;background-color:#0000;border:none;border-radius:0;margin:0;padding:15px;font-size:.9rem;position:relative;overflow-x:auto}.post-content .highlight[data-title] pre,.post-content .highlight[data-lang] pre{padding-top:42px}.post-content .highlight .hll{background-color:#0969da14;margin:0 -15px;padding:0 15px;display:block;box-shadow:inset 3px 0 #0969da6b}@media (prefers-color-scheme:dark) and (width<=0){.post-content .highlight{background-color:var(--color-code-bg-dark)}.post-content .highlight .hll{background-color:#6cb6ff1f;box-shadow:inset 3px 0 #6cb6ff85}.post-content .highlight pre.astro-code,.post-content .highlight pre.astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.post-content .highlight pre.astro-code span{background-color:#0000!important}.post-content .highlight pre.astro-code{background-color:var(--shiki-dark-bg,var(--color-code-bg-dark))!important;color:var(--shiki-dark,#adbac7)!important}}.post-content pre:before,.post-content pre:after{content:none}.post-content .highlight[data-title] pre,.post-content .highlight[data-lang] pre{border-top:1px solid #0000000f}.post-content .highlight:before{content:none;z-index:1;max-width:calc(100% - 132px);height:32px;color:var(--color-main-subtext);font-family:var(--font-sans);opacity:.82;pointer-events:none;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;font-weight:600;line-height:32px;position:absolute;top:0;left:15px;overflow:hidden}.post-content .highlight[data-title]:before{content:attr(data-title)}.post-content .highlight:after{content:none;z-index:1;font-size:.72rem;font-weight:700;font-family:var(--font-sans);color:var(--color-main-subtext);opacity:.72;pointer-events:none;text-transform:uppercase;letter-spacing:.05em;line-height:1.7;position:absolute;top:6px;right:15px}@media (prefers-color-scheme:dark) and (width<=0){.post-content .highlight[data-title],.post-content .highlight[data-lang]{background-image:linear-gradient(#cdd9e50e 0 32px,#0000 32px)}.post-content .highlight:before,.post-content .highlight:after{color:#adbac7;opacity:1}.post-content .highlight[data-title] pre,.post-content .highlight[data-lang] pre{border-top-color:#ffffff1f}}.post-content .highlight[data-lang]:after{content:attr(data-lang)}.post-content .highlight:has(code[class*=python]):after,.post-content .highlight:has(code[class*=language-python]):after{content:"PYTHON"}.post-content .highlight:has(code[class*=js]):after,.post-content .highlight:has(code[class*=javascript]):after,.post-content .highlight:has(code[class*=language-javascript]):after{content:"JS"}.post-content .highlight:has(code[class*=css]):after,.post-content .highlight:has(code[class*=language-css]):after{content:"CSS"}.post-content .highlight:has(code[class*=html]):after,.post-content .highlight:has(code[class*=language-html]):after{content:"HTML"}.post-content .highlight:has(code[class*=bash]):after,.post-content .highlight:has(code[class*=shell]):after,.post-content .highlight:has(code[class*=language-bash]):after{content:"SHELL"}.post-content .highlight:has(code[class*=json]):after,.post-content .highlight:has(code[class*=language-json]):after{content:"JSON"}.post-content .highlight:has(code[class*=diff]):after,.post-content .highlight:has(code[class*=patch]):after,.post-content .highlight:has(code[class*=language-diff]):after,.post-content .highlight:has(code[class*=language-patch]):after{content:"DIFF"}.post-content .highlight:has(code[class*=sql]):after,.post-content .highlight:has(code[class*=language-sql]):after{content:"SQL"}.post-content .highlight[data-lang=DIFF] .gi,.post-content .highlight[data-lang=DIFF] .gd{margin:0 -15px;padding:0 15px;display:block}.post-content .highlight[data-lang=DIFF] .gi{background-color:#1a7f371a;box-shadow:inset 3px 0 #1a7f3773}.post-content .highlight[data-lang=DIFF] .gd{background-color:#cf222e1a;box-shadow:inset 3px 0 #cf222e73}@media (prefers-color-scheme:dark) and (width<=0){.post-content .highlight[data-lang=DIFF] .gi{background-color:#57ab5a2e;box-shadow:inset 3px 0 #57ab5a94}.post-content .highlight[data-lang=DIFF] .gd{background-color:#f851492e;box-shadow:inset 3px 0 #f8514994}}.table-wrapper{width:100%;margin:var(--space-lg) 0;border:1px solid var(--color-main-border);border-radius:var(--radius-sm);background-color:var(--color-main-card);outline:none;transition:background-color .2s;overflow-x:auto}.table-wrapper:hover{background-color:#00000003}.table-wrapper:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.table-wrapper:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px;box-shadow:var(--focus-ring-shadow)}@media (prefers-color-scheme:dark) and (width<=0){.table-wrapper:hover{background-color:#ffffff05}.table-wrapper:focus-within{border-color:var(--color-link-dark);box-shadow:0 0 0 2px #00796b4d}}.post-content table{border-collapse:collapse;width:100%;color:var(--color-main-text);border-radius:var(--radius-sm);font-size:.95rem;overflow:hidden}.post-content caption{caption-side:top;padding:var(--space-sm) var(--space-md) calc(var(--space-sm) + 2px);color:var(--color-main-subtext);text-align:left;border-bottom:1px solid var(--color-main-border);font-size:.9rem;font-weight:600;line-height:1.5}.table-caption-prefix{color:var(--color-primary);margin-right:.15em;font-weight:700}@media (prefers-color-scheme:dark) and (width<=0){.table-caption-prefix{color:var(--color-link-dark)}}.post-content th,.post-content td{border-bottom:1px solid var(--color-main-border);text-align:left;padding:12px 15px;line-height:1.5}.post-content .align-left{text-align:left}.post-content .align-center{text-align:center}.post-content .align-right{text-align:right}.post-content th{color:var(--color-main-text);text-transform:none;border-bottom:1px solid var(--color-main-border);z-index:10;background-color:#00000006;font-size:.9rem;font-weight:600;position:sticky;top:0}.post-content tr:nth-child(2n){background-color:#00000005}.post-content tr:last-child td{border-bottom:none}.post-content tr:hover:not(:first-child){background-color:#00000006}@media (prefers-color-scheme:dark) and (width<=0){.post-content th{color:var(--color-main-text);border-bottom:1px solid var(--color-main-border);background-color:#ffffff0a}.post-content tr:nth-child(2n){background-color:#ffffff08}.post-content tr:hover:not(:first-child){background-color:#ffffff0a}}.admonition{margin-top:var(--space-lg);margin-bottom:var(--space-lg);padding:var(--space-md);border:1px solid var(--color-main-border);border-radius:var(--radius-sm);border-left-width:4px}.admonition-title{color:var(--color-primary);margin-bottom:8px;font-size:.95rem;font-weight:700}.admonition.note .admonition-title,.admonition.tip .admonition-title{color:var(--color-admonition-note)}.admonition.warning .admonition-title{color:var(--color-admonition-warn)}.admonition.danger .admonition-title{color:var(--color-admonition-danger)}@media (prefers-color-scheme:dark) and (width<=0){.admonition{background-color:#ffffff08}.admonition.note .admonition-title,.admonition.tip .admonition-title{color:var(--color-link-dark)}.admonition.warning .admonition-title{color:#ffd54f}.admonition.danger .admonition-title{color:#ff8a80}}.admonition.note,.admonition.tip{border-left-color:var(--color-primary)}.admonition.warning{border-left-color:var(--color-admonition-warn)}.admonition.danger{border-left-color:var(--color-admonition-danger)}.post-content details{max-width:var(--reading-width);margin:var(--space-lg) auto;border:1px solid var(--color-main-border);border-radius:var(--radius-sm);background-color:#00000004}.post-content summary{cursor:pointer;padding:var(--space-sm) var(--space-md);color:var(--color-main-text);font-weight:600}.post-content details[open] summary{border-bottom:1px solid var(--color-main-border)}.post-content details>:not(summary){margin-left:var(--space-md);margin-right:var(--space-md)}.post-content dl{max-width:var(--reading-width);margin:var(--space-lg) auto}.post-content dt{color:var(--color-main-text);font-weight:700}.post-content dd{margin:var(--space-xs) 0 var(--space-md) var(--space-lg);color:var(--color-main-subtext);line-height:1.75}.post-content .footnote,.post-content .footnotes{max-width:var(--reading-width);margin:var(--space-xl) auto 0;padding-top:var(--space-md);border-top:1px dashed var(--color-main-border);color:var(--color-main-subtext);font-size:.9rem}.post-content .footnote ol,.post-content .footnotes ol{padding-left:1.4rem}.post-content .footnote li,.post-content .footnotes li{margin-bottom:var(--space-sm)}.post-content .footnote-backref,.post-content [data-footnote-backref]{color:var(--color-main-subtext);text-decoration:none}@media (prefers-color-scheme:dark) and (width<=0){.post-content details{background-color:#ffffff05}}.post-content :target{background-color:var(--color-primary-light);border-radius:var(--radius-sm);box-shadow:0 0 0 4px var(--color-primary-light);scroll-margin-top:var(--target-offset);transition:background-color .5s ease-out,box-shadow .5s ease-out}@media (prefers-color-scheme:dark) and (width<=0){.post-content :target{background-color:#00796b1a;box-shadow:0 0 0 4px #80cbc41f}}.page-header h1{margin-top:0;margin-bottom:15px;font-size:2rem;line-height:1.25}.post-meta{align-items:center;gap:var(--space-sm) var(--space-md);color:var(--color-main-subtext);margin-bottom:var(--space-lg);border-top:2px dashed var(--color-main-border);padding-bottom:0;padding-top:var(--space-md);flex-wrap:wrap;font-size:.9rem;display:flex}.post-meta .tags-wrapper{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:inline-flex}.post-meta .tag-badge{color:var(--color-main-subtext);padding:2px var(--space-sm);border-radius:var(--radius-sm);font-size:.82rem}.post-meta .tag-badge:hover,.post-meta .tag-badge:focus{color:var(--color-primary)}.post-content h2:first-of-type{margin-top:.8em}.meta-container{justify-content:flex-start;align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.meta-date{font-family:var(--font-mono);color:var(--color-main-subtext);opacity:.92;background-color:#0000;border:0;border-radius:0;align-items:center;height:auto;padding:0;font-size:.9rem;line-height:1.2;display:flex}@media (prefers-color-scheme:dark) and (width<=0){.meta-date{background-color:#0000;border-color:#0000}}.meta-tags{align-items:center;line-height:1.2;display:flex}.meta-tags .tags-list{gap:var(--space-sm);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:inline-flex}.meta-tags .tags-list li{border-bottom:none;align-items:center;margin:0;padding:0;line-height:1.2;display:flex}.meta-tags .tag-badge{color:var(--color-main-subtext);font-family:var(--font-sans);padding:3px var(--space-sm);border-radius:var(--radius-sm);background-color:var(--color-code-bg);border:1px solid var(--color-main-border);vertical-align:middle;align-items:center;height:1.8em;font-size:.9rem;font-weight:500;line-height:1.2;text-decoration:none;transition:color .2s,border-color .2s,background-color .2s;display:flex}.meta-tags .tag-badge:hover{color:var(--color-primary);background-color:var(--color-primary-light);border-color:var(--color-primary)}@media (prefers-color-scheme:dark) and (width<=0){.meta-tags .tag-badge{background-color:var(--color-code-bg-dark);border-color:var(--color-border-light)}.meta-tags .tag-badge:hover{color:var(--color-link-dark);border-color:var(--color-link-dark);background-color:#00796b26}}.post-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.pagination{align-items:center;gap:var(--space-md);margin:var(--space-xl) 0;padding-top:var(--space-lg);border-top:1px solid var(--color-main-border);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.pagination-side{min-width:0}.pagination-side-next{text-align:right}.pagination a{font-weight:600}.pagination-status{color:var(--color-main-subtext);white-space:nowrap;font-size:.88rem}@media (width<=600px){.pagination{grid-template-columns:1fr 1fr}.pagination-status{text-align:center;grid-area:1/1/auto/-1}}.post-list-item{padding:var(--space-lg) var(--space-lg) var(--space-lg) calc(var(--space-lg) - 1px);border-bottom:1px dashed var(--color-main-border);margin-left:calc(var(--space-md) * -1);width:calc(100% + var(--space-md));color:inherit;box-shadow:none;background-color:#0000;border-left:none;border-radius:0;text-decoration:none;transition:background-color .2s,border-color .2s;display:block;position:relative}.post-title-link{color:inherit;text-decoration:none}.post-list-item:before{content:"";z-index:1;background-color:#0000;width:4px;transition:background-color .2s;position:absolute;top:0;bottom:-1px;left:0}.post-list-item:hover,.post-list-item:focus{background-color:#00000005;outline:none}.post-list-item:hover:before,.post-list-item:focus:before{background-color:var(--color-primary)}.post-list-item:active{background-color:#0000000d}.post-list-item:last-child{border-bottom:none}.post-list-item .post-title{color:var(--color-main-text);margin:0 0 10px;font-size:1.6rem;font-weight:700;line-height:1.3;transition:color .2s}.post-list-item:hover .post-title-link,.post-title-link:focus{color:var(--color-primary)}.post-list-meta-line{align-items:center;gap:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);color:var(--color-main-subtext);flex-wrap:wrap;font-size:.85rem;line-height:1.4;display:flex}.post-list-meta-line .meta-date-wrapper,.post-list-item .meta-date{font-family:var(--font-mono);font-size:inherit;opacity:.8;background:0 0;border:none;flex-shrink:0;align-items:center;height:auto;margin:0;padding:0;line-height:1.4;display:inline-flex}.post-list-item:hover .meta-date-wrapper,.post-list-item:hover .meta-date{color:var(--color-primary);opacity:1}.post-list-meta-line .tags-wrapper,.post-list-item .tags-list{align-items:center;gap:var(--space-sm);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:inline-flex}.post-list-item .tags-list li{border:none;align-items:center;margin:0;padding:0;display:inline-flex}.post-list-meta-line .tag-badge,.post-list-item .tag-badge{color:var(--color-main-subtext);padding:2px var(--space-sm);border-radius:var(--radius-sm);border:none;align-items:center;height:auto;font-size:.8rem;line-height:1.4;display:inline-flex}.post-list-item:hover .tag-badge{color:var(--color-primary)}.post-list-item .post-excerpt{color:var(--color-main-subtext);font-size:1rem;line-height:1.65;font-family:var(--font-sans);opacity:.9;margin:0}.profile-content-card-inner{gap:var(--space-xl);grid-template-columns:minmax(0,1fr) 12rem;align-items:start;display:grid}.profile-content-card-copy{min-width:0}.profile-content-card-preview{aspect-ratio:3/4;border-radius:var(--radius-sm);background:0 0;border:1px solid #0000;justify-self:center;display:block;overflow:hidden}.profile-content-card-preview img{object-fit:contain;object-position:center center;width:100%;height:100%;display:block}@media (width<=720px){.profile-content-card-inner{grid-template-columns:1fr}.profile-content-card-preview{width:100%;max-width:28rem}}.read-more-link-area{margin-top:var(--space-xl)}@media (prefers-color-scheme:dark) and (width<=0){.post-list-item:hover,.post-list-item:focus{background-color:#ffffff08}.post-list-item:hover:before,.post-list-item:focus:before{background-color:var(--color-link-dark)}.post-list-item:hover .post-title-link,.post-title-link:focus,.post-list-item:hover .meta-date-wrapper,.post-list-item:hover .meta-date{color:var(--color-link-dark)}.post-list-item .tag-badge{color:var(--color-text-secondary-dark)}.post-list-item:hover .tag-badge{color:var(--color-link-dark)}}.tag-cloud{margin-top:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.4rem;display:grid}.tag-count{color:var(--color-main-subtext);margin:0 0 var(--space-lg);font-size:.9rem}.related-content-list li{justify-content:space-between;gap:var(--space-lg);display:flex}.related-content-date{color:var(--color-main-subtext);font-family:var(--font-mono);flex-shrink:0;font-size:.82rem}.tag-meta-info .button-secondary.button-small{color:var(--color-main-subtext);background:0 0;border:0;padding:0;font-size:.85rem;font-weight:400}.tag-meta-info .button-secondary.button-small:hover{color:var(--color-primary);text-decoration-line:underline;text-decoration-color:currentColor}.empty-state{color:var(--color-main-subtext);margin:var(--space-xl) 0;padding:var(--space-xl);border:1px dashed var(--color-main-border);border-radius:var(--radius-sm);text-align:center;background-color:#00000004}.section-divider{border:0;border-top:1px solid var(--color-main-border);margin:var(--space-xl) 0}.tag-cloud-item{justify-content:space-between;align-items:center;gap:var(--space-sm);border:1px solid var(--color-main-border);border-radius:var(--radius-sm);min-width:0;color:var(--color-main-text);background-color:#0000;padding:.45rem .65rem;line-height:1.25;text-decoration:none;transition:border-color .2s,color .2s,background-color .2s;display:flex;font-size:.88rem!important}.tag-cloud-name{min-width:0}.tag-cloud-count{color:var(--color-main-subtext);font-family:var(--font-mono);flex-shrink:0;font-size:.75rem}.tag-cloud-item:hover{border-color:var(--color-primary);color:var(--color-primary);background-color:#00000005}.tag-cloud-item:hover .tag-cloud-count{color:inherit}@media (width<=520px){.tag-cloud{grid-template-columns:repeat(2,minmax(0,1fr))}}.tag-cloud-item:active{box-shadow:inset 0 2px 4px #0000001a}@media (prefers-color-scheme:dark) and (width<=0){.tag-meta-info .button-secondary.button-small:hover{color:var(--color-link-dark)}.empty-state{background-color:#ffffff05}.tag-cloud-item:hover{background-color:#ffffff0d}}.archive-page{max-width:100%}.archive-year{border-bottom:2px solid var(--color-primary-light);color:var(--color-main-text);align-items:baseline;gap:var(--space-sm);margin-top:2rem;margin-bottom:1rem;padding-bottom:.5rem;font-size:1.8rem;display:flex}.archive-year small{color:var(--color-main-subtext);font-size:1rem;font-weight:400}@media (prefers-color-scheme:dark) and (width<=0){.archive-year{border-bottom-color:#ffffff1a}}.archive-list{margin:0 0 var(--space-xl) 0;padding:0;list-style:none}.archive-item{padding:var(--space-sm) var(--space-md);border-bottom:1px dashed var(--color-main-border);border-radius:0;align-items:baseline;margin-bottom:5px;transition:background-color .2s,border-color .2s;display:flex;position:relative}.archive-item:before{content:"";background-color:#0000;width:4px;transition:background-color .2s;position:absolute;top:0;bottom:-1px;left:0}.archive-item:hover:before,.archive-item:focus-within:before{background-color:var(--color-primary)}.archive-item:hover{background-color:#00000005}.archive-item:active{background-color:#0000000d}@media (prefers-color-scheme:dark) and (width<=0){.archive-item:hover{background-color:#ffffff08}.archive-item:hover:before,.archive-item:focus-within:before{background-color:var(--color-link-dark)}}.archive-date{font-family:var(--font-mono);color:var(--color-main-subtext);text-align:right;flex-shrink:0;width:60px;margin-right:20px;font-size:.95rem}.archive-link{color:var(--color-main-text);flex-grow:1;font-size:1.05rem;font-weight:500;text-decoration:none}.archive-link:hover{color:var(--color-primary)}.materials-list{gap:var(--space-lg);margin-top:var(--space-xl);display:grid}.material-card{padding:var(--space-xl);border:1px solid var(--color-main-border);border-radius:var(--radius-md);background:var(--color-main-card)}.material-card h2{margin:var(--space-xs) 0 var(--space-md);font-size:1.35rem}.material-card>p:not(.material-meta){max-width:var(--reading-width);margin-bottom:var(--space-lg);color:var(--color-main-subtext)}.material-meta{color:var(--color-main-subtext);font-family:var(--font-mono);margin:0;font-size:.82rem}.material-links{gap:var(--space-sm) var(--space-lg);flex-wrap:wrap;display:flex}.material-links a{font-weight:600}.feed-page{max-width:var(--reading-width)}.feed-intro{color:var(--color-main-subtext);line-height:1.75}.feed-card{margin:var(--space-xl) 0;padding:var(--space-lg);border:1px solid var(--color-main-border);border-radius:var(--radius-sm);background-color:#00000004}.feed-label{margin:0 0 var(--space-sm);color:var(--color-main-subtext);font-size:.85rem}.feed-url{font-family:var(--font-mono);overflow-wrap:anywhere}.feed-preview-list{margin:var(--space-md) 0 0;padding:0;list-style:none}.feed-preview-item{align-items:baseline;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-bottom:1px dashed var(--color-main-border);transition:background-color .2s;display:flex;position:relative}.feed-preview-item:before{content:"";background-color:#0000;width:4px;transition:background-color .2s;position:absolute;top:0;bottom:-1px;left:0}.feed-preview-item:hover{background-color:#00000005}.feed-preview-item:hover:before,.feed-preview-item:focus-within:before{background-color:var(--color-primary)}.feed-preview-date{color:var(--color-main-subtext);font-family:var(--font-mono);text-align:right;flex-shrink:0;width:6.5rem;font-size:.9rem}.feed-preview-item a{color:var(--color-main-text);text-decoration:none}.feed-preview-item a:hover{color:var(--color-primary)}@media (prefers-color-scheme:dark) and (width<=0){.archive-link:hover{color:var(--color-link-dark)}.feed-card{background-color:#ffffff05}.feed-preview-item:hover{background-color:#ffffff08}.feed-preview-item:hover:before,.feed-preview-item:focus-within:before{background-color:var(--color-link-dark)}.feed-preview-item a:hover{color:var(--color-link-dark)}}@media (width<=600px){.feed-preview-item{gap:var(--space-xs);flex-direction:column}.feed-preview-date{text-align:left;width:auto;font-size:.85rem}.archive-item{flex-direction:column;align-items:flex-start;gap:2px;padding:12px 10px}.archive-date{text-align:left;opacity:.8;width:auto;font-size:.85rem}.archive-link{font-size:1rem}}footer{text-align:center;color:var(--color-main-subtext);border-top:1px solid var(--color-main-border);margin-top:auto;padding:20px 0;font-size:.8rem}.footer-content{max-width:var(--content-width);padding:0 var(--space-lg);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.footer-left,.footer-right{align-items:center;gap:var(--space-md);display:flex}.footer-left{justify-content:flex-start}.footer-right{justify-content:flex-end}.copyright-info,.build-info{margin:0;display:inline-block}.footer-content a{color:var(--color-main-subtext);margin:0 var(--space-sm);background-color:#0000;padding:0;transition:color .2s,text-decoration-color .2s;display:inline-block}.footer-content a:hover{color:var(--color-primary);text-decoration-line:underline;text-decoration-color:currentColor}.footer-links a{color:var(--color-main-subtext);margin:0 var(--space-sm);background-color:#0000;padding:0;transition:color .2s,text-decoration-color .2s;display:inline-block}.footer-links a:hover{color:var(--color-primary);text-decoration-line:underline;text-decoration-color:currentColor}@media (prefers-color-scheme:dark) and (width<=0){.footer-links a{background-color:#0000}.footer-links a:hover{color:var(--color-link-dark)}}.button{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem;transition:color .2s,border-color .2s,background-color .2s,box-shadow .2s;display:inline-block;text-decoration:none!important}.button-secondary{border:1px solid var(--color-main-border);color:var(--color-main-subtext)}.button-secondary:hover{border-color:var(--color-primary);color:var(--color-primary);box-shadow:none;background-color:#00796b0f}.button:active,.button-secondary:focus{box-shadow:none;background-color:#00796b1a}.button-small{padding:var(--space-xs) var(--space-sm);font-size:.85rem}.skip-link{z-index:9999;background-color:var(--color-primary);color:#fff;border-radius:4px;padding:10px 15px;font-weight:700;text-decoration:none;position:absolute;top:10px;left:-9999px}.skip-link:focus{border:2px solid #fff;left:50%;transform:translate(-50%)}a:focus-visible,button:focus-visible,summary:focus-visible,.button:focus-visible,.button-secondary:focus-visible,.tag-badge:focus-visible,.tag-cloud-item:focus-visible,.post-title-link:focus-visible,.archive-link:focus-visible,.feed-url:focus-visible,.toc-area a:focus-visible,.mobile-toc-content a:focus-visible,.mobile-nav-links a:focus-visible,.back-to-top:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px;border-radius:var(--radius-sm);box-shadow:var(--focus-ring-shadow)}a:focus:not(:focus-visible),button:focus:not(:focus-visible),summary:focus:not(:focus-visible){box-shadow:none;outline:none}.post-content pre a:focus-visible,.post-content code a:focus-visible{box-shadow:none;border-radius:0;outline:2px dotted}.post-content pre:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:-4px;box-shadow:inset var(--focus-ring-shadow)}@media (width<=900px){.header-inner{align-items:baseline;gap:var(--space-md);padding:0 var(--space-md);flex-wrap:wrap}header nav{justify-content:flex-end;gap:var(--space-xs) var(--space-md);flex-wrap:wrap;margin-left:auto;display:flex}header nav a{padding:var(--space-xs) 0;margin-left:0;margin-right:0;line-height:1.4}.main-layout{flex-direction:column;gap:30px}.toc-area{display:none!important}.mobile-toc{display:block}.page-post .content-area{flex-basis:100%;max-width:100%}h1{font-size:1.7rem}.page-header h1{font-size:1.65rem;line-height:1.28}.post-content h2{font-size:1.45rem}.post-content h3{font-size:1.2rem}.post-list-item .post-title{font-size:1.4rem}h1,h2,h3,h4,h5,h6{scroll-margin-top:var(--header-offset-mobile)}.post-list-item{padding:var(--space-lg) var(--space-md)}}@media (width<=600px){header{padding:var(--space-sm) 0}.header-inner{align-items:center;gap:var(--space-sm);flex-wrap:nowrap}.desktop-nav{display:none}.mobile-nav-menu{margin-left:auto;display:block;position:relative}.mobile-nav-menu summary{border:1px solid var(--color-main-border);width:38px;height:38px;color:var(--color-main-text);cursor:pointer;user-select:none;border-radius:50%;justify-content:center;align-items:center;padding:0;list-style:none;display:inline-flex}.mobile-nav-menu summary::-webkit-details-marker{display:none}.hamburger-icon,.hamburger-icon:before,.hamburger-icon:after{content:"";border-radius:var(--radius-pill);background-color:currentColor;width:16px;height:2px;transition:transform .2s,opacity .2s;display:block}.hamburger-icon{position:relative}.hamburger-icon:before,.hamburger-icon:after{position:absolute;left:0}.hamburger-icon:before{transform:translateY(-5px)}.hamburger-icon:after{transform:translateY(5px)}.mobile-nav-menu[open] .hamburger-icon{transform:rotate(45deg)}.mobile-nav-menu[open] .hamburger-icon:before{opacity:0;transform:translateY(0)}.mobile-nav-menu[open] .hamburger-icon:after{transform:translateY(0)rotate(90deg)}.mobile-nav-menu summary:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px;box-shadow:var(--focus-ring-shadow)}.mobile-nav-links{top:calc(100% + var(--space-sm));width:min(220px, calc(100vw - var(--space-lg) * 2));padding:var(--space-xs);border:1px solid var(--color-main-border);border-radius:var(--radius-md);background-color:var(--color-main-card);flex-direction:column;align-items:stretch;gap:2px;display:flex;position:absolute;right:0;box-shadow:0 14px 35px #0000001f}.mobile-nav-links a{border-radius:var(--radius-sm);padding:9px 12px;line-height:1.25}.mobile-nav-links a:hover,.mobile-nav-links a:focus,.mobile-nav-links a[aria-current=page]{background-color:var(--color-primary-light);color:var(--color-primary);text-decoration:none}@media (prefers-color-scheme:dark) and (width<=0){.mobile-nav-links{box-shadow:0 14px 35px #00000073}.mobile-nav-links a:hover,.mobile-nav-links a:focus,.mobile-nav-links a[aria-current=page]{color:var(--color-link-dark);background-color:#80cbc41f}}.page-header h1{font-size:1.55rem}.post-list-item .post-title{font-size:1.3rem}.post-content h2{font-size:1.35rem}.post-content h3{font-size:1.15rem}}.task-list-item{padding-left:0;position:relative;list-style-type:none!important}.task-list-item input[type=checkbox]{vertical-align:middle;accent-color:var(--color-primary);margin:0 .5em .2em -1.3em}.task-list-item label{font-weight:inherit}.task-list-item input[type=checkbox]:disabled{cursor:default;opacity:.7}.task-list-item:has(input[type=checkbox]:checked){color:var(--color-main-subtext)}.post-navigation{justify-content:space-between;gap:var(--space-lg);margin-top:calc(var(--space-xl) * 1.5);padding-top:var(--space-lg);border-top:1px solid var(--color-main-border);display:flex}.nav-link{white-space:nowrap;text-overflow:ellipsis;box-shadow:none;border:0;border-radius:0;flex:1;padding:0;transition:color .2s;display:block;overflow:hidden;text-decoration:none!important}.nav-link:hover{box-shadow:none;background-color:#0000}@media (prefers-color-scheme:dark) and (width<=0){.nav-link:hover{box-shadow:none;background-color:#0000}}.nav-link small{color:var(--color-main-subtext);margin-bottom:5px;font-size:.8rem;font-weight:500;display:block}.nav-link h3{color:var(--color-main-text);white-space:nowrap;text-overflow:ellipsis;margin:0;scroll-margin-top:0;font-size:1.1rem;font-weight:600;line-height:1.4;transition:color .2s;overflow:hidden}.nav-link:hover h3{color:var(--color-primary)}.nav-link.nav-prev{text-align:left}.nav-link.nav-next{text-align:right}.nav-link-placeholder{flex:1;min-width:10px}@media (width<=600px){.post-navigation{gap:var(--space-md);margin-top:var(--space-xl);padding-top:var(--space-lg);flex-direction:column}.nav-link.nav-next{text-align:left}.nav-link h3{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;height:auto;display:-webkit-box}.nav-link small{margin-bottom:3px}}.post-license{margin:var(--space-xl) 0 0;padding:var(--space-md) 0 0;border:0;border-top:1px dashed var(--color-main-border);color:var(--color-main-subtext);background-color:#0000;border-radius:0;font-size:.85rem;line-height:1.6}@media (prefers-color-scheme:dark) and (width<=0){.post-license{border-top-color:var(--color-main-border);background-color:#0000}}.post-license p{margin:5px 0;padding:0}.post-license a{text-decoration:underline}.license-icon i{border:1px solid var(--color-main-border);color:var(--color-main-subtext);vertical-align:middle;border-radius:3px;margin-right:2px;padding:0 4px;font-size:.85em;font-style:normal;font-weight:600;line-height:1.5;transition:color .2s,border-color .2s;display:inline-block}@media (prefers-color-scheme:dark) and (width<=0){.license-icon i{border-color:var(--color-main-border);color:var(--color-text-secondary-dark)}.post-license a:hover .license-icon i{color:var(--color-link-dark);background-color:#0000}}.post-license a:hover .license-icon i{color:var(--color-primary);border-color:currentColor}.license-format-code{margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);color:var(--color-main-text);background-color:var(--color-code-bg);border-radius:4px;font-size:.9em;overflow-x:auto}.license-format-code code{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;line-height:1.65;display:block}@media (prefers-color-scheme:dark) and (width<=0){.license-format-code{background-color:var(--color-code-bg-dark)}}@media (width<=600px){.post-license{margin:30px 0 0;padding:15px}}.highlight{color:#24292f}.highlight .hll{background-color:#0969da14}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs,.highlight .go,.highlight .gp{color:#57606a;font-style:italic}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .ow{color:#cf222e;font-weight:650}.highlight .kt,.highlight .nc,.highlight .ne,.highlight .nn,.highlight .nt{color:#8250df;font-weight:650}.highlight .s,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s1,.highlight .s2,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#0a3069}.highlight .m,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .il{color:#0550ae}.highlight .na,.highlight .nb,.highlight .bp,.highlight .no,.highlight .nd,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:#953800}.highlight .nf{color:#8250df}.highlight .o,.highlight .p{color:#57606a}.highlight .cp,.highlight .gh,.highlight .gu{color:#57606a;font-weight:650}.highlight .ge{font-style:italic}.highlight .gs{font-weight:650}.highlight .err,.highlight .gr,.highlight .gt,.highlight .gd{color:#82071e}.highlight .gi{color:#116329}.highlight .w{color:inherit}@media (prefers-color-scheme:dark) and (width<=0){.highlight{color:#adbac7!important;background:0 0!important}.highlight pre{font-family:var(--font-mono)!important;background:0 0!important}.highlight .hll{background-color:#6cb6ff1f}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs,.highlight .go,.highlight .gp{color:#8b949e}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .ow,.highlight .kt,.highlight .nt{color:#f47067}.highlight .s,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s1,.highlight .s2,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#96d0ff}.highlight .m,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .il{color:#6cb6ff}.highlight .na,.highlight .nb,.highlight .bp,.highlight .no,.highlight .nd,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:#f69d50}.highlight .nf{color:#dcbdfb}.highlight .nc,.highlight .ne,.highlight .nn{color:#dcbdfb;font-weight:650}.highlight .o,.highlight .p,.highlight .cp,.highlight .gh,.highlight .gu{color:#adbac7}.highlight .err,.highlight .gr,.highlight .gt,.highlight .gd{color:#ff938a}.highlight .gi{color:#8ddb8c}}@media print{header,footer,.toc-area,.skip-link,.post-navigation,.mobile-toc{display:none!important}.container,.main-layout,.content-area{width:100%!important;max-width:100%!important;margin:0!important;padding:0!important;display:block!important}body,h1,h2,h3,p,li{color:#000!important;background:#fff!important}.post-content pre{white-space:pre-wrap;page-break-inside:avoid;border:1px solid #ccc;padding-top:15px;font-family:var(--font-mono)!important}.post-content pre:before,.post-content pre:after{display:none}.post-content a:after{content:" (" attr(href) ")";color:#555;font-size:.8em;text-decoration:none}a:after{transform:none!important}}.page-404 .content-area{justify-content:center;align-items:center;min-height:50vh;display:flex}.page-404 .post-content{width:100%;max-width:100%}.error-container{text-align:center;padding:var(--space-xl) var(--space-lg);animation:.8s ease-out fadeIn}.error-code{font-family:var(--font-mono);color:var(--color-primary);margin-bottom:var(--space-lg);text-shadow:4px 4px #00796b26;font-size:8rem;font-weight:700;line-height:1;display:inline-block;position:relative}.error-divider{background-color:var(--color-main-border);width:64px;height:4px;margin:var(--space-lg) auto;border-radius:var(--radius-pill)}.error-message{color:var(--color-main-text);margin:0 0 var(--space-md) 0;letter-spacing:-.02em;font-size:1.8rem;font-weight:700}.error-desc{color:var(--color-main-subtext);margin-bottom:var(--space-xl);font-size:1.1rem;line-height:1.6}.error-container .button{padding:var(--space-md) var(--space-xl);background-color:var(--color-primary);color:#fff;border-radius:var(--radius-pill);font-size:1rem;transition:box-shadow .2s,background-color .2s;box-shadow:0 4px 15px #00796b4d}.error-container .button:hover{background-color:#00695c;box-shadow:0 4px 15px #00796b66}.error-container .button:active{background-color:#004d40}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme:dark) and (width<=0){.error-code{color:var(--color-link-dark);text-shadow:4px 4px #00000080}.error-container .button{background-color:var(--color-link-dark);color:var(--color-background-dark);box-shadow:0 4px 15px #80cbc433}.error-container .button:hover{background-color:#b2dfdb;box-shadow:0 6px 20px #80cbc44d}}@media (width<=600px){.error-code{font-size:5rem}.error-message{font-size:1.4rem}.footer-content{text-align:center;flex-direction:column;gap:15px}.footer-left,.footer-right{flex-wrap:wrap;justify-content:center}}.post-content pre code{font-size:inherit;line-height:1.5;font-family:var(--font-mono)!important}.highlight pre,.highlight code{font-size:inherit;font-family:var(--font-mono)!important}@media (prefers-color-scheme:dark) and (width<=0){.highlight pre,.highlight code{font-family:var(--font-mono)!important}}html{scroll-padding-top:0}:target{scroll-margin-top:var(--target-offset)}@media (width<=768px){html{scroll-padding-top:0}:target{scroll-margin-top:var(--target-offset-mobile)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.homepage-with-callout{position:relative}.homepage-primary{min-width:0}.contact-callout-rail{top:0;bottom:0;left:calc(100% + var(--space-xl));width:min(17.5rem, calc((100vw - var(--content-width)) / 2 - var(--space-xl)));position:absolute}.contact-callout{--contact-callout-height:18rem;top:calc(var(--header-offset) + var(--space-lg));color:#fff;background:#00796b;border:1px solid #004d403d;border-radius:1.25rem;padding:clamp(1.35rem,2.4vw,2rem);transition:top .26s;position:sticky;box-shadow:0 1.25rem 2.8rem #004d4033,0 .35rem .9rem #2c3e501f}.contact-callout[data-scroll-direction=up]{top:max(calc(var(--header-offset) + var(--space-lg)), calc(100vh - var(--contact-callout-height) - var(--space-lg)))}.contact-callout h2{margin:0 0 var(--space-md);color:#fff;letter-spacing:-.015em;font-size:1.32rem;line-height:1.28}.contact-callout p{color:#ffffffe6;margin:0;font-size:.94rem;line-height:1.58}.contact-callout .contact-callout-invitation{margin-top:var(--space-md)}.contact-callout-email{margin-top:var(--space-lg);color:#005b50;border-radius:var(--radius-pill);text-align:center;overflow-wrap:anywhere;background:#fff;border:1px solid #ffffffc2;padding:.75rem 2.5rem;font-size:.86rem;font-weight:700;line-height:1.35;text-decoration:none;display:block;position:relative;box-shadow:0 .35rem .8rem #004d402e}.contact-callout-email-icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:1.1rem;height:1.1rem;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.contact-callout-email:hover{color:#003d36;background:#f4fffd;text-decoration:none}.contact-callout-email:focus-visible{outline-offset:3px;outline:3px solid #fff}.contact-callout-email:focus,.contact-callout-email:active{border-radius:var(--radius-pill)}.home-intro{margin-bottom:var(--space-xl);padding-bottom:var(--space-xl);border-bottom:1px solid var(--color-main-border)}.home-intro h1{margin-top:0;margin-bottom:var(--space-md)}.home-intro p{max-width:var(--reading-width);color:var(--color-main-subtext)}.profile-link-row{gap:var(--space-sm) var(--space-lg);margin-top:var(--space-lg);flex-wrap:wrap;display:flex}.home-section{margin-top:var(--space-xl)}.section-heading-row{justify-content:space-between;align-items:baseline;gap:var(--space-lg);margin-bottom:var(--space-md);display:flex}.section-heading-row h2{margin:0}.profile-section-grid{gap:var(--space-md);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.profile-section-link{justify-content:space-between;gap:var(--space-md);min-height:140px;padding:var(--space-lg);color:var(--color-main-text);border:1px solid var(--color-main-border);border-radius:var(--radius-md);background:var(--color-main-card);flex-direction:column;text-decoration:none;display:flex}.profile-section-link:hover,.profile-section-link:focus{border-color:var(--color-primary)}.profile-section-link span,.profile-meta{color:var(--color-main-subtext)}.profile-content-card .profile-meta,.post-meta .profile-meta{font-family:var(--font-mono);font-size:.85rem}@media (width<=1359px){.homepage-with-callout{grid-template-columns:1fr;display:grid}.homepage-primary{display:contents}.home-intro{grid-row:1}.contact-callout-rail{grid-row:2;width:auto;position:static}.homepage-primary>.post-list{grid-row:3}.homepage-primary>.pagination{grid-row:4}.contact-callout{margin-bottom:var(--space-xl);transition:none;position:static}.profile-section-grid{grid-template-columns:1fr}.section-heading-row{align-items:flex-start;gap:var(--space-sm);flex-direction:column}}
