.prose h2[id],.prose h3[id],.prose h4[id]{scroll-margin-top:5rem}.toc-aside{margin-bottom:var(--space-8)}.toc-mobile{display:block;border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-surface)}.toc-mobile-summary{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);font-weight:700;color:var(--color-text-secondary);cursor:pointer;list-style:none;letter-spacing:var(--tracking-wide);min-height:44px}.toc-mobile-summary::-webkit-details-marker{display:none}.toc-mobile-summary:before{content:"+";display:inline-flex;align-items:center;justify-content:center;width:1.25em;height:1.25em;font-weight:700;color:var(--color-accent-muted);flex-shrink:0}.toc-mobile[open]>.toc-mobile-summary:before{content:"−"}.toc-mobile>nav{padding:0 var(--space-4) var(--space-4)}.toc-desktop{display:none}.toc-desktop-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.toc-collapse-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease,transform var(--duration-fast) ease}.toc-collapse-btn:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.toc-collapse-btn:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.toc-collapse-btn[aria-expanded=false] svg{transform:rotate(-90deg)}.toc-list{list-style:none;margin:0;padding:0}.toc-list li{margin:0;padding:0}.toc-depth-2{padding-left:0}.toc-depth-3{padding-left:var(--space-4)}.toc-depth-4{padding-left:var(--space-8)}.toc-link{display:flex;align-items:center;padding:var(--space-1) var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted);text-decoration:none;border-left:2px solid transparent;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease;line-height:var(--leading-relaxed);min-height:44px}.toc-link:hover{color:var(--color-text-primary);border-left-color:var(--color-border-strong)}.toc-link:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}.toc-link[aria-current=true]{color:var(--color-text-primary);border-left-color:var(--color-accent);font-weight:700}.toc-desktop-title{font-size:var(--text-xs);font-weight:700;color:var(--color-text-muted);letter-spacing:var(--tracking-wider);text-transform:uppercase;margin-top:0;margin-bottom:0;border:none;padding:0}.toc-scroll-container{position:relative;display:flex;gap:0}.toc-track{position:relative;flex-shrink:0;width:12px;background-color:var(--color-border);border-radius:1px}.toc-indicator{position:absolute;width:100%;top:var(--toc-top, 0px);height:var(--toc-height, 20px);background-color:var(--color-accent);border-radius:1px;transition:top .4s cubic-bezier(.4,0,.6,1),height .4s cubic-bezier(.4,0,.6,1)}@media(prefers-reduced-motion:reduce){.toc-indicator{transition:none}}.toc-links{flex:1;min-width:0}.toc-desktop .toc-link{border-left:none;padding:var(--space-1-5, .375rem) var(--space-2);min-height:auto;line-height:var(--leading-relaxed)}.toc-desktop .toc-link:hover{border-left:none;color:var(--color-text-primary)}.toc-desktop .toc-link[aria-current=true]{border-left:none;color:var(--color-text-primary);font-weight:700}.toc-desktop .toc-depth-3{padding-left:10px}.toc-desktop .toc-depth-4{padding-left:20px}@media(min-width:1280px){.toc-mobile{display:none}.toc-desktop{display:block}.toc-aside{position:sticky;top:5rem;margin-bottom:0;max-height:calc(100dvh - var(--space-24));overflow-y:auto}.toc-link{min-height:auto;padding:var(--space-1) var(--space-2)}}.post-content{min-width:0;overflow-wrap:break-word}.prose>*+*{margin-top:var(--space-6)}.prose h2{position:relative;font-size:var(--text-xl);font-weight:700;margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--color-border)}.prose h3{position:relative;font-size:var(--text-lg);font-weight:700;margin-top:var(--space-8)}.prose h4{position:relative;font-size:var(--text-base);font-weight:700;margin-top:var(--space-6);text-transform:uppercase;letter-spacing:var(--tracking-wider)}.prose .heading-anchor{position:absolute;right:100%;padding-right:var(--space-1);color:var(--color-accent-muted);text-decoration:none;opacity:0;transition:opacity var(--duration-fast) ease}.prose .heading-anchor:before{content:"#"}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor,.prose h4:hover .heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}.prose p{color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.prose a{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;transition:color var(--duration-fast) ease}.prose a:hover{color:var(--color-text-primary)}.prose ul,.prose ol{padding-left:var(--space-6);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.prose li{margin-top:var(--space-2)}.prose li::marker{color:var(--color-accent-muted)}.prose blockquote{border-left:3px solid var(--color-accent-muted);padding-left:var(--space-4);color:var(--color-text-secondary);font-style:italic}.prose blockquote p{color:inherit}.prose :not(pre)>code{padding:.15em .35em;background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.9em}.prose :not(pre)>code span{color:var(--shiki-dark)}@media(prefers-color-scheme:light){.prose :not(pre)>code span{color:var(--shiki-light)}}.prose :not(pre)>code:not([style]){color:var(--color-text-primary)}.prose .expressive-code,.prose pre.shiki{margin-top:var(--space-6);margin-bottom:var(--space-6);border-left:2px solid var(--color-border-strong);padding-left:var(--space-2);min-width:0;max-width:100%;overflow-x:auto}.prose .expressive-code pre,.prose pre.shiki{overflow-x:auto}.prose pre.shiki{padding:var(--space-4);font-size:var(--text-sm);line-height:1.7;scrollbar-width:thin;scrollbar-color:var(--color-scrollbar-thumb) transparent}.prose pre.shiki::-webkit-scrollbar{display:block;height:6px}.prose pre.shiki::-webkit-scrollbar-track{background:transparent}.prose pre.shiki::-webkit-scrollbar-thumb{background-color:var(--color-scrollbar-thumb);border-radius:3px}.prose pre.shiki::-webkit-scrollbar-thumb:hover{background-color:var(--color-scrollbar-thumb-hover)}.prose pre.shiki,.prose pre.shiki span{color:var(--shiki-dark)}@media(prefers-color-scheme:light){.prose pre.shiki,.prose pre.shiki span{color:var(--shiki-light)}}.prose table{width:100%;border-collapse:collapse;font-size:var(--text-sm);overflow-x:auto;display:block}.prose thead th{text-align:left;font-weight:700;color:var(--color-text-primary);padding:var(--space-2) var(--space-3);border-bottom:2px solid var(--color-border-strong);white-space:nowrap}.prose tbody td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary)}.prose tbody tr:last-child td{border-bottom:none}.prose hr{border:none;border-top:1px solid var(--color-border);margin-block:var(--space-12)}.prose img{display:block;max-width:100%;height:auto;border-radius:var(--radius-md);border:1px solid var(--color-border)}.prose .footnotes{margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--color-border);font-size:var(--text-sm);color:var(--color-text-muted)}.prose .footnotes ol{padding-left:var(--space-4)}.prose .footnotes li{color:var(--color-text-muted)}.prose [data-references]{display:flex;flex-direction:column;gap:var(--space-3);list-style:none;padding-inline-start:0;font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-relaxed)}.prose [data-references] li{margin-top:0;padding-inline-start:var(--space-6);text-indent:calc(-1 * var(--space-6))}.prose [data-references] a{color:var(--color-text-muted);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}.prose [data-references] a:hover{color:var(--color-accent)}.prose strong{font-weight:700;color:var(--color-text-primary)}.prose em{font-style:italic}@media(min-width:640px){.prose h2{font-size:var(--text-2xl)}.prose h3{font-size:var(--text-xl)}.prose table{display:table}}.post-layout{max-width:var(--content-width);margin-inline:auto}.post-hero-image{margin-bottom:var(--space-8);border-radius:var(--radius-md);overflow:hidden;aspect-ratio:16 / 9}.post-hero-image img{width:100%;height:100%;object-fit:cover;display:block}@media(min-width:1280px){.site-main:has(.post-layout){max-width:none}}.post-sidebar{display:none}.post-header{display:flex;flex-direction:column;gap:var(--space-6);padding-bottom:var(--space-8);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-8)}.post-title{font-size:var(--text-2xl);font-weight:700;line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}.post-footer{margin-top:var(--space-12);padding-top:var(--space-8);border-top:1px solid var(--color-border)}.post-comments{max-width:var(--content-width);margin-inline:auto;margin-top:var(--space-12);padding-top:var(--space-8);border-top:1px solid var(--color-border)}.comments-loading{color:var(--color-text-muted);font-size:var(--text-sm)}@media(min-width:640px){.post-header{gap:var(--space-8);padding-bottom:var(--space-12);margin-bottom:var(--space-12)}.post-title{font-size:var(--text-3xl)}}@media(min-width:1024px){.post-title{font-size:var(--text-4xl)}}@media(min-width:1280px){.post-layout{display:grid;grid-template-columns:1fr var(--content-width) 1fr;max-width:none;margin:0}.post-layout>*{grid-column:2}.post-sidebar{display:block;grid-column:3;grid-row:1;width:14rem;padding-top:var(--space-8);padding-left:var(--space-8)}.post .toc-aside{display:none}}.mermaid-figure{display:block;margin-block:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-surface);padding:var(--space-4);overflow:hidden;cursor:pointer;position:relative;transition:border-color var(--duration-fast) ease,background-color var(--duration-fast) ease}.mermaid-figure:hover{border-color:var(--color-border-strong);background-color:var(--color-bg-elevated)}.mermaid-figure:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.mermaid-figure svg{display:block;max-width:100%;height:auto;pointer-events:none}.mermaid-figure figcaption{margin-top:var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted);letter-spacing:var(--tracking-wide);text-align:center;line-height:var(--leading-relaxed);pointer-events:none}.mermaid-figure:after{content:"";position:absolute;top:var(--space-2);right:var(--space-2);width:20px;height:20px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23737373' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M9 21H3v-6'/%3E%3Cline x1='21' y1='3' x2='14' y2='10'/%3E%3Cline x1='3' y1='21' x2='10' y2='14'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;opacity:0;transition:opacity var(--duration-fast) ease;pointer-events:none}.mermaid-figure:hover:after,.mermaid-figure:focus-visible:after{opacity:1}@media(prefers-color-scheme:light){.mermaid-figure:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23737373' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M9 21H3v-6'/%3E%3Cline x1='21' y1='3' x2='14' y2='10'/%3E%3Cline x1='3' y1='21' x2='10' y2='14'/%3E%3C/svg%3E")}}@media(min-width:1024px){.prose .mermaid-figure{float:right;clear:right;width:clamp(16rem,40%,20rem);margin-inline-start:var(--space-8);margin-inline-end:0;margin-block-start:var(--space-2);margin-block-end:var(--space-6)}}.prose:after{content:"";display:table;clear:both}.pdf-download-link[data-astro-cid-63wuwtkh]{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);min-width:44px;min-height:44px;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);text-decoration:none;font-family:inherit;font-size:inherit;cursor:pointer;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease}.pdf-download-link[data-astro-cid-63wuwtkh]:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.pdf-download-link[data-astro-cid-63wuwtkh]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px;border-radius:var(--radius-md)}.pdf-download-link[data-astro-cid-63wuwtkh]:active{color:var(--color-accent);border-color:var(--color-accent-muted)}.pdf-chevron[data-astro-cid-63wuwtkh]{transition:transform var(--duration-fast) ease}.pdf-download-link[data-astro-cid-63wuwtkh][aria-expanded=true] .pdf-chevron[data-astro-cid-63wuwtkh]{transform:rotate(180deg)}.pdf-dropdown[data-astro-cid-63wuwtkh]{position:relative}.pdf-menu[data-astro-cid-63wuwtkh]{position:absolute;top:calc(100% + var(--space-2));right:0;z-index:50;display:none;min-width:11rem;padding:var(--space-1) 0;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-bg-elevated);box-shadow:0 4px 12px #00000040}.pdf-menu[data-astro-cid-63wuwtkh][data-open]{display:block}.pdf-menu-item[data-astro-cid-63wuwtkh]{display:flex;align-items:baseline;gap:var(--space-3);width:100%;min-height:44px;padding:var(--space-2) var(--space-3);color:var(--color-text-secondary);text-decoration:none;white-space:nowrap;transition:background-color var(--duration-fast) ease,color var(--duration-fast) ease}.pdf-menu-item[data-astro-cid-63wuwtkh]:hover,.pdf-menu-item[data-astro-cid-63wuwtkh]:focus-visible{background-color:var(--color-bg-surface);color:var(--color-text-primary);outline:none}.pdf-menu-item[data-astro-cid-63wuwtkh]:focus-visible{box-shadow:inset 2px 0 0 var(--color-focus-ring)}.pdf-menu-label[data-astro-cid-63wuwtkh]{font-size:var(--text-sm);font-weight:600}.pdf-menu-hint[data-astro-cid-63wuwtkh]{font-size:var(--text-xs);color:var(--color-text-muted)}.save-btn[data-astro-cid-bdt4eoy6]{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);font-family:inherit;font-size:var(--text-xs);letter-spacing:var(--tracking-wide);cursor:pointer;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease}.save-btn[data-astro-cid-bdt4eoy6]:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.save-btn[data-astro-cid-bdt4eoy6]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.save-btn[data-astro-cid-bdt4eoy6][aria-pressed=true]{color:var(--color-accent);border-color:var(--color-accent-muted)}.save-btn[data-astro-cid-bdt4eoy6][aria-pressed=true] .save-btn-icon[data-astro-cid-bdt4eoy6]{fill:currentColor}.post-meta[data-astro-cid-qtyrxm4s]{display:flex;flex-direction:column;gap:var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted)}.post-meta-dates[data-astro-cid-qtyrxm4s]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}.post-meta-item[data-astro-cid-qtyrxm4s]{display:inline-flex;align-items:center;gap:var(--space-2)}.post-meta-label[data-astro-cid-qtyrxm4s]{color:var(--color-accent-muted);font-weight:700}.post-meta-updated[data-astro-cid-qtyrxm4s]{color:var(--color-text-secondary)}.post-meta-actions[data-astro-cid-qtyrxm4s]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.post-meta-tag-list[data-astro-cid-qtyrxm4s]{display:flex;flex-wrap:wrap;gap:var(--space-2);list-style:none}.post-meta-tag[data-astro-cid-qtyrxm4s]{display:inline-block;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--color-text-secondary);text-decoration:none;letter-spacing:var(--tracking-wide);transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease,background-color var(--duration-fast) ease}.post-meta-tag[data-astro-cid-qtyrxm4s]:hover{color:var(--color-text-primary);border-color:var(--color-accent-muted);background-color:var(--color-bg-surface)}.post-meta-tag[data-astro-cid-qtyrxm4s]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.related-posts[data-astro-cid-dpgbfi7r]{margin-top:var(--space-12);padding-top:var(--space-8);border-top:1px solid var(--color-border)}.related-posts-title[data-astro-cid-dpgbfi7r]{font-size:var(--text-sm);font-weight:700;color:var(--color-text-muted);letter-spacing:var(--tracking-wider);text-transform:uppercase;margin-bottom:var(--space-4)}.related-posts-list[data-astro-cid-dpgbfi7r]{display:grid;grid-template-columns:1fr;gap:var(--space-3);list-style:none}.related-posts-card[data-astro-cid-dpgbfi7r]{border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--duration-fast) ease}.related-posts-card[data-astro-cid-dpgbfi7r]:hover,.related-posts-card[data-astro-cid-dpgbfi7r]:focus-within{border-color:var(--color-border-strong)}.related-posts-link[data-astro-cid-dpgbfi7r]{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);text-decoration:none;color:inherit;min-height:44px}.related-posts-link[data-astro-cid-dpgbfi7r]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px;border-radius:var(--radius-md)}.related-posts-link-title[data-astro-cid-dpgbfi7r]{font-size:var(--text-base);font-weight:700;color:var(--color-text-primary);line-height:var(--leading-tight)}.related-posts-link-desc[data-astro-cid-dpgbfi7r]{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}@media(min-width:640px){.related-posts-list[data-astro-cid-dpgbfi7r]{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.related-posts-list[data-astro-cid-dpgbfi7r]{grid-template-columns:repeat(3,1fr)}}.post-source[data-astro-cid-mfoheu7s]{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted);letter-spacing:var(--tracking-wide)}.post-source-label[data-astro-cid-mfoheu7s]{color:var(--color-accent-muted);font-weight:700}.post-source-btn[data-astro-cid-mfoheu7s]{color:var(--color-text-muted);text-decoration:none;background:none;border:none;font-family:inherit;font-size:var(--text-xs);letter-spacing:var(--tracking-wide);cursor:pointer;padding:var(--space-1) 0;min-height:44px;display:inline-flex;align-items:center;transition:color var(--duration-fast) ease}.post-source-btn[data-astro-cid-mfoheu7s]:hover{color:var(--color-text-primary)}.post-source-btn[data-astro-cid-mfoheu7s]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}.suggest-modal[data-astro-cid-mfoheu7s]{display:none}.suggest-modal--open[data-astro-cid-mfoheu7s]{display:block}.suggest-modal-backdrop[data-astro-cid-mfoheu7s]{position:fixed;inset:0;background-color:#0009;z-index:200}.suggest-modal-panel[data-astro-cid-mfoheu7s]{position:fixed;inset-inline-start:50%;inset-block-start:50%;transform:translate(-50%,-50%);z-index:201;background-color:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);padding:var(--space-8);width:min(90vw,32rem);max-height:90dvh;overflow-y:auto}.suggest-modal-heading[data-astro-cid-mfoheu7s]{font-size:var(--text-sm);font-weight:700;color:var(--color-text-primary);letter-spacing:var(--tracking-wide);text-transform:uppercase;margin-bottom:var(--space-6)}.suggest-modal-field[data-astro-cid-mfoheu7s]{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.suggest-modal-label[data-astro-cid-mfoheu7s]{font-size:var(--text-xs);font-weight:700;color:var(--color-text-muted);letter-spacing:var(--tracking-wide);text-transform:uppercase}.suggest-modal-input[data-astro-cid-mfoheu7s],.suggest-modal-textarea[data-astro-cid-mfoheu7s]{width:100%;padding:var(--space-2) var(--space-3);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:inherit;font-size:var(--text-base);line-height:var(--leading-normal);transition:border-color var(--duration-fast) ease,box-shadow var(--duration-fast) ease}.suggest-modal-textarea[data-astro-cid-mfoheu7s]{resize:vertical;min-height:8rem}.suggest-modal-input[data-astro-cid-mfoheu7s]:focus,.suggest-modal-textarea[data-astro-cid-mfoheu7s]:focus{border-color:var(--color-focus-ring);box-shadow:0 0 0 1px var(--color-focus-ring);outline:none}.suggest-modal-error[data-astro-cid-mfoheu7s]{font-size:var(--text-xs);color:#dc2626;margin-bottom:var(--space-4);min-height:1.2em}.suggest-modal-actions[data-astro-cid-mfoheu7s]{display:flex;gap:var(--space-3);align-items:center;margin-top:var(--space-2)}.suggest-modal-submit[data-astro-cid-mfoheu7s]{font-family:inherit;font-size:var(--text-xs);letter-spacing:var(--tracking-wide);font-weight:700;cursor:pointer;padding:var(--space-2) var(--space-4);min-height:44px;border-radius:var(--radius-md);background-color:var(--color-accent);color:var(--color-bg-root);border:1px solid var(--color-accent);transition:background-color var(--duration-fast) ease,color var(--duration-fast) ease}.suggest-modal-submit[data-astro-cid-mfoheu7s]:hover{background-color:var(--color-text-primary);border-color:var(--color-text-primary)}.suggest-modal-submit[data-astro-cid-mfoheu7s]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.suggest-modal-submit[data-astro-cid-mfoheu7s]:disabled{opacity:.5;cursor:not-allowed}.suggest-modal-cancel[data-astro-cid-mfoheu7s]{font-family:inherit;font-size:var(--text-xs);letter-spacing:var(--tracking-wide);cursor:pointer;padding:var(--space-2) var(--space-4);min-height:44px;border-radius:var(--radius-md);background:none;color:var(--color-text-muted);border:1px solid var(--color-border);transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease}.suggest-modal-cancel[data-astro-cid-mfoheu7s]:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.suggest-modal-cancel[data-astro-cid-mfoheu7s]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.suggest-modal-close[data-astro-cid-mfoheu7s]{position:absolute;inset-block-start:var(--space-4);inset-inline-end:var(--space-4);font-family:inherit;font-size:var(--text-lg);line-height:1;cursor:pointer;background:none;border:none;color:var(--color-text-muted);min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:color var(--duration-fast) ease}.suggest-modal-close[data-astro-cid-mfoheu7s]:hover{color:var(--color-text-primary)}.suggest-modal-close[data-astro-cid-mfoheu7s]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.suggest-modal-success[data-astro-cid-mfoheu7s]{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed);padding-block:var(--space-4)}@media(prefers-color-scheme:light){.suggest-modal-error[data-astro-cid-mfoheu7s]{color:#b91c1c}}@media(prefers-reduced-motion:reduce){.suggest-modal-backdrop[data-astro-cid-mfoheu7s],.suggest-modal-panel[data-astro-cid-mfoheu7s]{transition:none}}.content-changelog[data-astro-cid-nmfxfpdm]{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border)}.changelog-title[data-astro-cid-nmfxfpdm]{font-size:var(--text-xs);font-weight:700;color:var(--color-text-muted);letter-spacing:var(--tracking-wider);text-transform:uppercase;margin-bottom:var(--space-4)}.changelog-list[data-astro-cid-nmfxfpdm]{list-style:none;display:flex;flex-direction:column;gap:var(--space-2)}.changelog-entry[data-astro-cid-nmfxfpdm]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);font-size:var(--text-xs);padding:var(--space-1) 0;color:var(--color-text-secondary);min-height:44px}.changelog-date[data-astro-cid-nmfxfpdm]{color:var(--color-text-muted);white-space:nowrap;letter-spacing:var(--tracking-wide);flex-shrink:0}.changelog-message[data-astro-cid-nmfxfpdm]{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.changelog-hash[data-astro-cid-nmfxfpdm]{font-family:Commit Mono,ui-monospace,monospace;color:var(--color-accent-muted);text-decoration:none;white-space:nowrap;flex-shrink:0;transition:color var(--duration-fast) ease}.changelog-hash[data-astro-cid-nmfxfpdm]:hover{color:var(--color-text-primary)}.changelog-hash[data-astro-cid-nmfxfpdm]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}@media(min-width:640px){.changelog-entry[data-astro-cid-nmfxfpdm]{min-height:auto}}.fn-popover[data-astro-cid-xdnwyhgm]{position:fixed;margin:0;padding:var(--space-3) var(--space-4);max-width:min(24rem,calc(100vw - var(--space-8)));border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background-color:var(--color-bg-elevated);color:var(--color-text-secondary);font-size:var(--text-sm);line-height:var(--leading-relaxed);z-index:200;box-shadow:0 4px 12px #00000040}.fn-popover[data-astro-cid-xdnwyhgm]:popover-open{display:block}.fn-popover-content[data-astro-cid-xdnwyhgm]{overflow-wrap:break-word}.fn-popover-content[data-astro-cid-xdnwyhgm] a[data-footnote-backref]{display:none}.series-progress[data-astro-cid-bfz3dejc]{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-6)}.series-progress-header[data-astro-cid-bfz3dejc]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.series-progress-label[data-astro-cid-bfz3dejc]{font-size:var(--text-sm);font-weight:700;color:var(--color-text-primary);letter-spacing:var(--tracking-wide);text-decoration:none}.series-progress-label[data-astro-cid-bfz3dejc]:hover{color:var(--color-accent)}.series-progress-label[data-astro-cid-bfz3dejc]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px;border-radius:2px}.series-progress-count[data-astro-cid-bfz3dejc]{font-size:var(--text-xs);color:var(--color-text-muted);letter-spacing:var(--tracking-wider);font-variant-numeric:tabular-nums}.series-progress-track[data-astro-cid-bfz3dejc]{height:4px;background-color:var(--color-bg-surface);border-radius:2px;overflow:hidden}.series-progress-fill[data-astro-cid-bfz3dejc]{height:100%;width:var(--progress-pct);background-color:var(--color-accent);border-radius:2px;transition:width var(--duration-normal) ease}.toc-fab[data-astro-cid-pbqc3s5v]{position:fixed;bottom:var(--space-4);left:var(--space-4);z-index:90;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-elevated);color:var(--color-text-muted);cursor:pointer;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease}.toc-fab[data-astro-cid-pbqc3s5v]:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.toc-fab[data-astro-cid-pbqc3s5v]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.toc-sheet[data-astro-cid-pbqc3s5v]{position:fixed;inset:auto 0 0;z-index:200;max-height:70dvh;overflow-y:auto;margin:0;padding:var(--space-4);border:1px solid var(--color-border);border-bottom:none;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background-color:var(--color-bg-elevated);box-shadow:0 -4px 24px #0000004d}.toc-sheet[data-astro-cid-pbqc3s5v]::backdrop{background-color:#0006}.toc-sheet-header[data-astro-cid-pbqc3s5v]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border)}.toc-sheet-title[data-astro-cid-pbqc3s5v]{font-size:var(--text-sm);font-weight:700;color:var(--color-text-secondary);letter-spacing:var(--tracking-wide);text-transform:uppercase}.toc-sheet-close[data-astro-cid-pbqc3s5v]{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:color var(--duration-fast) ease}.toc-sheet-close[data-astro-cid-pbqc3s5v]:hover{color:var(--color-text-primary)}.toc-sheet-close[data-astro-cid-pbqc3s5v]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}@media(min-width:640px){.toc-fab[data-astro-cid-pbqc3s5v]{bottom:var(--space-6);left:var(--space-6)}}@media(min-width:1280px){.toc-fab[data-astro-cid-pbqc3s5v],.toc-sheet[data-astro-cid-pbqc3s5v]{display:none}}.scroll-top-fab[data-astro-cid-oys6jzhq]{position:fixed;bottom:calc(var(--space-4) + 44px + var(--space-2));right:var(--space-4);z-index:90;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-elevated);color:var(--color-text-muted);cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--duration-fast) ease,color var(--duration-fast) ease,border-color var(--duration-fast) ease}.scroll-top-fab[data-astro-cid-oys6jzhq][data-visible=true]{opacity:1;pointer-events:auto}.scroll-top-fab[data-astro-cid-oys6jzhq]:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.scroll-top-fab[data-astro-cid-oys6jzhq]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}@media(min-width:640px){.scroll-top-fab[data-astro-cid-oys6jzhq]{bottom:calc(var(--space-6) + 44px + var(--space-2));right:var(--space-6)}}.comment-form[data-astro-cid-hbgx5uql]{display:flex;flex-direction:column;gap:var(--space-4)}.comment-form-field[data-astro-cid-hbgx5uql]{display:flex;flex-direction:column;gap:var(--space-1)}.comment-form-label[data-astro-cid-hbgx5uql]{font-size:var(--text-sm);font-weight:700;color:var(--color-text-primary);letter-spacing:var(--tracking-wide)}.comment-form-input[data-astro-cid-hbgx5uql],.comment-form-textarea[data-astro-cid-hbgx5uql]{width:100%;padding:var(--space-2) var(--space-3);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:inherit;font-size:var(--text-base);line-height:var(--leading-normal);transition:border-color var(--duration-fast) ease,box-shadow var(--duration-fast) ease}.comment-form-input[data-astro-cid-hbgx5uql]:focus,.comment-form-textarea[data-astro-cid-hbgx5uql]:focus{border-color:var(--color-focus-ring);box-shadow:0 0 0 1px var(--color-focus-ring);outline:none}.comment-form-textarea[data-astro-cid-hbgx5uql]{resize:vertical;min-height:6rem}.comment-form-meta[data-astro-cid-hbgx5uql]{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}.comment-form-hint[data-astro-cid-hbgx5uql]{font-size:var(--text-xs);color:var(--color-text-muted)}.comment-form-char-count[data-astro-cid-hbgx5uql]{font-size:var(--text-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.comment-form-char-count[data-astro-cid-hbgx5uql][data-over-limit]{color:#dc2626;font-weight:700}.comment-form-error[data-astro-cid-hbgx5uql]:empty{display:none}.comment-form-error[data-astro-cid-hbgx5uql]{font-size:var(--text-sm);color:#dc2626;padding:var(--space-2) var(--space-3);border:1px solid #dc2626;border-radius:var(--radius-md);background-color:var(--color-bg-surface)}.comment-form-submit[data-astro-cid-hbgx5uql]{align-self:flex-start;padding:var(--space-2) var(--space-4);background-color:var(--color-accent);color:var(--color-bg-root);border:1px solid transparent;border-radius:var(--radius-md);font-family:inherit;font-size:var(--text-sm);font-weight:700;letter-spacing:var(--tracking-wide);cursor:pointer;min-height:44px;min-width:44px;transition:background-color var(--duration-fast) ease,opacity var(--duration-fast) ease}.comment-form-submit[data-astro-cid-hbgx5uql]:hover{opacity:.85}.comment-form-submit[data-astro-cid-hbgx5uql]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.comment-form-submit[data-astro-cid-hbgx5uql][disabled]{opacity:.5;cursor:not-allowed}@media(min-width:640px){.comment-form-textarea[data-astro-cid-hbgx5uql]{min-height:8rem}}.comments-section{margin-top:var(--space-12);padding-top:var(--space-8);border-top:1px solid var(--color-border)}.comments-heading{font-size:var(--text-xl);font-weight:700;color:var(--color-text-primary);margin-bottom:var(--space-6)}.comments-loading,.comments-empty{color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-relaxed);padding:var(--space-6) 0}.comments-list{margin-bottom:var(--space-8)}.comments-form-wrapper{padding-top:var(--space-6);border-top:1px solid var(--color-border)}.comments-form-heading{font-size:var(--text-lg);font-weight:700;color:var(--color-text-primary);margin-bottom:var(--space-4)}.comment-thread{padding-left:calc(var(--comment-depth, 0) * var(--space-4));padding-top:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border)}.comment-thread:last-child{border-bottom:none}.comment-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-2)}.comment-author{font-size:var(--text-sm);font-weight:700;color:var(--color-text-primary)}.comment-time{font-size:var(--text-xs);color:var(--color-text-muted)}.comment-edited{font-size:var(--text-xs);color:var(--color-text-muted);font-style:italic}.comment-body{color:var(--color-text-secondary);line-height:var(--leading-relaxed);font-size:var(--text-base)}.comment-body p{white-space:pre-wrap;word-break:break-word}.comment-deleted-text{color:var(--color-text-muted)}.comment-actions{margin-top:var(--space-2);display:flex;gap:var(--space-2);align-items:center}.comment-actions[hidden]{display:none}.comment-reply-toggle{font-size:var(--text-xs);color:var(--color-text-muted);text-decoration:none;letter-spacing:var(--tracking-wide);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-height:44px;min-width:44px;display:inline-flex;align-items:center;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease;background:none;font-family:inherit;cursor:pointer}.comment-reply-toggle:hover,.comment-reply-toggle:focus{color:var(--color-text-primary);border-color:var(--color-border-strong)}.comment-reply-toggle:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.comment-replies{margin-top:var(--space-2)}.comment-action-btn{font-size:var(--text-xs);color:var(--color-text-muted);text-decoration:none;letter-spacing:var(--tracking-wide);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-height:44px;min-width:44px;display:inline-flex;align-items:center;background:none;font-family:inherit;cursor:pointer;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease}.comment-action-btn:hover,.comment-action-btn:focus{color:var(--color-text-primary);border-color:var(--color-border-strong)}.comment-action-btn:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.comment-action-delete:hover{color:#dc2626;border-color:#dc2626}@media(min-width:640px){.comments-section{margin-top:var(--space-16);padding-top:var(--space-12)}.comments-heading{font-size:var(--text-2xl)}.comment-thread{padding-left:calc(var(--comment-depth, 0) * var(--space-6))}}.confirm-dialog[data-astro-cid-n5po6kkq]::backdrop{background-color:#00000080}.confirm-dialog[data-astro-cid-n5po6kkq]{position:fixed;inset:0;margin:auto;width:calc(100% - var(--space-8));max-width:24rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);background-color:var(--color-bg-elevated);color:var(--color-text-primary);padding:0;box-shadow:0 16px 48px #00000059}.confirm-dialog-panel[data-astro-cid-n5po6kkq]{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6)}.confirm-dialog-heading[data-astro-cid-n5po6kkq]{font-size:var(--text-base);font-weight:700;color:var(--color-text-primary);margin:0}.confirm-dialog-body[data-astro-cid-n5po6kkq]{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0}.confirm-dialog-actions[data-astro-cid-n5po6kkq]{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-2)}.confirm-dialog-btn[data-astro-cid-n5po6kkq]{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:var(--space-2) var(--space-6);font-family:inherit;font-size:var(--text-sm);font-weight:600;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--duration-fast) ease,border-color var(--duration-fast) ease,color var(--duration-fast) ease}.confirm-dialog-btn[data-astro-cid-n5po6kkq]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.confirm-dialog-btn-cancel[data-astro-cid-n5po6kkq]{background-color:transparent;border:1px solid var(--color-border-strong);color:var(--color-text-secondary)}.confirm-dialog-btn-cancel[data-astro-cid-n5po6kkq]:hover{background-color:var(--color-bg-surface);border-color:var(--color-border-strong);color:var(--color-text-primary)}.confirm-dialog-btn-delete[data-astro-cid-n5po6kkq]{background-color:#dc2626;border:1px solid #dc2626;color:#fff}.confirm-dialog-btn-delete[data-astro-cid-n5po6kkq]:hover{background-color:#b91c1c;border-color:#b91c1c}.diagram-lb[data-astro-cid-yzq556do]::backdrop{background-color:#0000;transition:background-color var(--duration-normal) ease}.diagram-lb[data-astro-cid-yzq556do].is-open::backdrop{background-color:#000c}@starting-style{.diagram-lb[data-astro-cid-yzq556do].is-open::backdrop{background-color:#0000}}.diagram-lb[data-astro-cid-yzq556do]{position:fixed;inset:0;margin:auto;width:calc(100% - var(--space-8));max-width:90vw;max-height:90vh;padding:0;border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);background-color:var(--color-bg-elevated);color:var(--color-text-primary);box-shadow:0 24px 64px #00000080;overflow:hidden;opacity:0;transform:scale(.96);transition:opacity var(--duration-normal) ease,transform var(--duration-normal) ease,display var(--duration-normal) ease allow-discrete}.diagram-lb[data-astro-cid-yzq556do].is-open{opacity:1;transform:scale(1)}@starting-style{.diagram-lb[data-astro-cid-yzq556do].is-open{opacity:0;transform:scale(.96)}}.diagram-lb-inner[data-astro-cid-yzq556do]{display:flex;flex-direction:column;height:100%;max-height:90vh;padding:var(--space-4);gap:var(--space-3);position:relative}.diagram-lb-controls[data-astro-cid-yzq556do]{position:absolute;top:var(--space-3);right:var(--space-3);display:flex;gap:var(--space-2);z-index:1}.diagram-lb-btn[data-astro-cid-yzq556do]{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-surface);color:var(--color-text-muted);cursor:pointer;font-family:inherit;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease,background-color var(--duration-fast) ease}.diagram-lb-btn[data-astro-cid-yzq556do]:hover{color:var(--color-text-primary);border-color:var(--color-border-strong);background-color:var(--color-bg-elevated)}.diagram-lb-btn[data-astro-cid-yzq556do]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.diagram-lb-svg[data-astro-cid-yzq556do]{flex:1;overflow:visible!important;display:flex;align-items:flex-start;justify-content:flex-start;padding-top:var(--space-8);touch-action:none}.diagram-lb-svg[data-astro-cid-yzq556do] svg{display:block;max-width:100%;max-height:calc(90vh - 8rem);width:auto;height:auto;overflow:visible;pointer-events:auto;user-select:none}.diagram-lb-caption[data-astro-cid-yzq556do]{font-size:var(--text-xs);color:var(--color-text-muted);letter-spacing:var(--tracking-wide);text-align:center;line-height:var(--leading-relaxed);min-height:0}.diagram-lb-caption[data-astro-cid-yzq556do]:empty{display:none}@media(min-width:640px){.diagram-lb-inner[data-astro-cid-yzq556do]{padding:var(--space-6)}.diagram-lb-controls[data-astro-cid-yzq556do]{top:var(--space-4);right:var(--space-4)}.diagram-lb-svg[data-astro-cid-yzq556do]{padding-top:var(--space-12)}}body.reading-mode .site-header,body.reading-mode .site-footer,body.reading-mode .post-sidebar,body.reading-mode .toc-aside{display:none}body.reading-mode .site-main{max-width:none;margin-inline:0;padding-inline:0;padding-top:var(--space-8)}body.reading-mode .post-layout{display:grid;grid-template-columns:1fr min(78ch,90vw) 1fr;max-width:none;margin:0;padding:0}body.reading-mode .post-layout>*{grid-column:2}.reading-toggle[data-astro-cid-bttn337d]{position:fixed;bottom:var(--space-4);right:var(--space-4);z-index:90;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-elevated);color:var(--color-text-muted);cursor:pointer;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease,background-color var(--duration-fast) ease}.reading-toggle[data-astro-cid-bttn337d]:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.reading-toggle[data-astro-cid-bttn337d]:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.reading-toggle[data-astro-cid-bttn337d][aria-pressed=true]{color:var(--color-accent);border-color:var(--color-accent-muted);background-color:var(--color-bg-surface)}.reading-toggle-icon--exit[data-astro-cid-bttn337d],.reading-toggle[data-astro-cid-bttn337d][aria-pressed=true] .reading-toggle-icon--enter[data-astro-cid-bttn337d]{display:none}.reading-toggle[data-astro-cid-bttn337d][aria-pressed=true] .reading-toggle-icon--exit[data-astro-cid-bttn337d]{display:block}@media(min-width:640px){.reading-toggle[data-astro-cid-bttn337d]{bottom:var(--space-6);right:var(--space-6)}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
