body.page-blog-post{--page-max: var(--container-app);--header-max: var(--page-max)}body.page-blog-post main{--post-sidebar-width: clamp(14.5rem, 17vw, 18.5rem);--post-column-gap: clamp(.75rem, 1.2vw, 1.25rem);--post-sidebar-offset: clamp(5.25rem, 8vh, 6.75rem);--post-copy-width: 80cqw;--post-wide-width: 92cqw;width:min(var(--site-safe-width),var(--page-max));max-width:none;padding-bottom:5rem}body.page-blog-post .reading-progress{--reading-progress: 0;position:fixed;top:0;left:0;right:0;z-index:1200;height:2px;pointer-events:none;background:#362b1f14}body.page-blog-post .reading-progress span{display:block;width:100%;height:100%;transform:scaleX(var(--reading-progress));transform-origin:left center;background:linear-gradient(90deg,rgba(var(--accent-rgb),.52),var(--accent-strong));box-shadow:0 0 8px rgba(var(--accent-rgb),.22);transition:transform .12s linear}body.page-blog-post .post-head,body.page-blog-post .post-layout,body.page-blog-post .post-mobile-panels{animation:postFadeUp .45s ease}body.page-blog-post .post-head{margin-bottom:1.5rem}body.page-blog-post .post-head__content{display:grid;grid-template-columns:minmax(0,1.35fr);gap:var(--layout-gap);padding:var(--panel-padding)}body.page-blog-post .post-head--with-hero .post-head__content{grid-template-columns:minmax(0,1.3fr) minmax(min(100%,18rem),.9fr);align-items:start}body.page-blog-post .post-head__copy{display:grid;gap:.9rem}body.page-blog-post .post-head__path,body.page-blog-post .post-share-status,body.page-blog-post .post-summary-card__label,body.page-blog-post .post-summary-card__note,body.page-blog-post .post-sidebar__hint,body.page-blog-post .post-related-list span,body.page-blog-post .post-mobile-panel summary{font-family:var(--font-mono)}body.page-blog-post .post-head__path{margin:0;color:var(--text-muted);font-size:.8rem}body.page-blog-post .post-head h1{margin:0;max-width:14ch;font-size:4.2rem;line-height:.98}body.page-blog-post .post-head__description{margin:0;max-width:58ch;font-size:1.02rem;color:var(--text-secondary)}body.page-blog-post .post-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));gap:.9rem}body.page-blog-post .post-summary-card{display:grid;gap:.25rem;padding:1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:#fffcf7bd}body.page-blog-post .post-summary-card__label{color:var(--text-muted);font-size:.78rem;text-transform:lowercase}body.page-blog-post .post-summary-card__value{font-size:1.05rem;color:var(--text-primary)}body.page-blog-post .post-summary-card__note{color:var(--text-secondary);font-size:.78rem}body.page-blog-post .post-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;padding-top:.35rem}body.page-blog-post .post-toolbar__tags,body.page-blog-post .post-toolbar__actions,body.page-blog-post .post-sidebar__tags{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem}body.page-blog-post .post-toolbar__link,body.page-blog-post .post-share-button,body.page-blog-post .post-sidebar__footer-link{display:inline-flex;align-items:center;justify-content:center;padding:.72rem 1rem;border-radius:var(--radius-pill);border:1px solid var(--border-color);background:#fffcf7db;color:var(--text-secondary);text-decoration:none;font-family:var(--font-mono);font-size:.84rem;transition:transform .2s ease,border-color .2s ease,color .2s ease,background-color .2s ease}body.page-blog-post .post-toolbar__link:hover,body.page-blog-post .post-share-button:hover,body.page-blog-post .post-sidebar__footer-link:hover{transform:translateY(-1px);color:var(--accent);border-color:var(--border-hover);background:rgba(var(--accent-rgb),.06)}body.page-blog-post .post-share-button{cursor:pointer}body.page-blog-post .post-share-status{font-size:.78rem;color:var(--text-muted)}body.page-blog-post .post-tag-chip{text-decoration:none}body.page-blog-post .post-hero-card{display:grid;gap:.75rem;align-self:stretch;padding:1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:linear-gradient(180deg,#ffffffc2,#f7eee5eb)}body.page-blog-post .post-hero-card__meta{display:flex;flex-wrap:wrap;gap:.6rem}body.page-blog-post .post-hero-card__figure{padding:.45rem;border:1px dashed rgba(var(--accent-rgb),.22);border-radius:calc(var(--radius-md) - 4px);background:#ffffffb8}body.page-blog-post .post-hero-card__figure img{display:block;width:100%;height:auto;border-radius:calc(var(--radius-md) - 8px)}body.page-blog-post .post-mobile-panels{display:none;margin-bottom:1rem;gap:.8rem}body.page-blog-post .post-mobile-panel{border:1px solid var(--border-color);border-radius:var(--radius-md);background:#fffcf7cc;box-shadow:var(--shadow-crisp);overflow:hidden}body.page-blog-post .post-mobile-panel summary{padding:.95rem 1rem;cursor:pointer;color:var(--text-primary);list-style:none}body.page-blog-post .post-mobile-panel summary::-webkit-details-marker{display:none}body.page-blog-post .post-mobile-panel .post-outline,body.page-blog-post .post-mobile-panel .post-related-list{padding:0 1rem 1rem}body.page-blog-post .post-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--post-column-gap);align-items:start;position:relative}body.page-blog-post .post-layout--with-toc{grid-template-columns:var(--post-sidebar-width) minmax(0,1fr)}body.page-blog-post .post-layout__content{display:grid;gap:1.2rem;min-width:0}body.page-blog-post .post-afterword{display:grid;grid-template-columns:minmax(0,1fr);margin-top:0}body.page-blog-post .post-afterword__content{display:grid;gap:1.2rem;min-width:0}body.page-blog-post .post-reader,body.page-blog-post .post-reader__main,body.page-blog-post .post-layout__content,body.page-blog-post .post-sidebar{min-width:0}body.page-blog-post .post-reader__body{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--post-column-gap);align-items:start;padding:clamp(1.2rem,2vw,1.65rem);scroll-margin-top:8rem}body.page-blog-post .post-reader__main{container-type:inline-size;width:100%}body.page-blog-post .post-sidebar{position:sticky;top:var(--post-sidebar-offset);align-self:start;max-height:calc(100svh - var(--post-sidebar-offset) - 1rem);overflow:hidden}body.page-blog-post .post-sidebar__body{display:grid;gap:.82rem;max-height:calc(100svh - var(--post-sidebar-offset) - 4.9rem);overflow:auto;padding:1rem}body.page-blog-post .post-sidebar__heading,body.page-blog-post .post-support__intro{display:flex;flex-wrap:nowrap;align-items:flex-end;justify-content:space-between;gap:.7rem}body.page-blog-post .post-support__intro{flex-wrap:wrap;align-items:flex-start;gap:.85rem}body.page-blog-post .post-sidebar__heading{padding-bottom:.64rem;border-bottom:1px solid rgba(54,43,31,.08)}body.page-blog-post .post-sidebar__heading strong{display:block;font-size:.9rem}body.page-blog-post .post-sidebar__eyebrow,body.page-blog-post .post-sidebar__progress,body.page-blog-post .post-support-card span{font-family:var(--font-mono)}body.page-blog-post .post-sidebar__eyebrow{display:block;margin-bottom:.2rem;color:var(--text-muted);font-size:.68rem}body.page-blog-post .post-sidebar__heading>div{min-width:0}body.page-blog-post .post-sidebar__progress{flex:0 0 auto;padding:.32rem .56rem;border:1px solid rgba(var(--accent-rgb),.24);border-radius:6px;background:#fffcf7d1;color:var(--text-primary);font-size:.76rem;line-height:1;white-space:nowrap}body.page-blog-post .post-sidebar__hint{margin:0;color:var(--text-muted);font-size:.74rem;line-height:1.6}body.page-blog-post .post-support,body.page-blog-post .post-comments{margin-top:0}body.page-blog-post .post-comments__body{display:grid;gap:1rem;padding:1.2rem}body.page-blog-post .post-comments__mount{min-height:1px}body.page-blog-post .post-comments__body h2{margin:0;font-size:1.7rem}body.page-blog-post .post-comments__body p{margin:.45rem 0 0;max-width:64ch;color:var(--text-secondary)}body.page-blog-post .post-comments__env-list{margin:0;padding-left:1.1rem;color:var(--text-secondary)}body.page-blog-post .post-comments__env-list li+li{margin-top:.45rem}body.page-blog-post .post-comments__status{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.9rem;padding:.95rem 1rem;border:1px dashed rgba(var(--accent-rgb),.22);border-radius:var(--radius-md);background:#fffcf7c7;color:var(--text-secondary);font-family:var(--font-mono);font-size:.82rem}body.page-blog-post .post-comments__status[data-mode=loading]{border-style:solid}body.page-blog-post .post-comments__status[data-mode=error]{border-color:#af5f4059;color:var(--accent-strong)}body.page-blog-post .post-comments__load-button,body.page-blog-post .post-comments__discussion-link{display:inline-flex;align-items:center;justify-content:center;padding:.62rem .95rem;border:1px solid var(--border-color);border-radius:var(--radius-pill);background:#fffcf7eb;color:var(--text-primary);font-family:var(--font-mono);font-size:.78rem;line-height:1;text-decoration:none;cursor:pointer;transition:transform .2s ease,border-color .2s ease,background-color .2s ease}body.page-blog-post .post-comments__load-button:hover,body.page-blog-post .post-comments__discussion-link:hover{transform:translateY(-1px);border-color:var(--border-hover);background:rgba(var(--accent-rgb),.08)}body.page-blog-post .post-comments__discussion-link{border-color:rgba(var(--accent-rgb),.22);color:var(--accent-strong)}body.page-blog-post .post-comments .giscus,body.page-blog-post .post-comments .giscus-frame{width:100%}body.page-blog-post .post-support__body{display:grid;gap:1rem;padding:1.2rem}body.page-blog-post .post-support__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:.9rem}body.page-blog-post .post-support-card{display:grid;gap:.5rem;padding:1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:#fffcf7b3;color:var(--text-secondary);text-decoration:none;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease,background-color .2s ease}body.page-blog-post .post-support-card:hover{transform:translateY(-2px);border-color:var(--border-hover);background:#fff9f2eb;box-shadow:var(--shadow-crisp)}body.page-blog-post .post-support-card strong{color:var(--text-primary);font-size:1rem}body.page-blog-post .post-support-card p{margin:0;font-size:.92rem;color:var(--text-secondary)}body.page-blog-post .post-outline,body.page-blog-post .post-related-list{list-style:none;margin:0;padding:0;display:grid;gap:.48rem}body.page-blog-post .post-sidebar .post-outline{position:relative;gap:.34rem;padding-left:.48rem;padding-right:.1rem}body.page-blog-post .post-sidebar .post-outline:before{content:"";position:absolute;top:.24rem;bottom:.24rem;left:0;width:1px;background:linear-gradient(180deg,#362b1f0f,#362b1f29)}body.page-blog-post .post-outline li,body.page-blog-post .post-related-list li{margin:0}body.page-blog-post .post-outline li[data-depth="2"]{padding-left:.48rem}body.page-blog-post .post-outline li[data-depth="3"]{padding-left:.92rem}body.page-blog-post .post-outline a,body.page-blog-post .post-related-list a{position:relative;display:grid;gap:.2rem;min-width:0;text-decoration:none;color:var(--text-secondary);font-size:.84rem;line-height:1.55;transition:color .2s ease,transform .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease}body.page-blog-post .post-outline a{border:1px solid transparent;border-radius:8px;padding:.36rem .54rem}body.page-blog-post .post-sidebar .post-outline a{display:block;color:var(--text-secondary);font-size:.78rem;overflow-wrap:anywhere;white-space:normal}body.page-blog-post .post-sidebar .post-outline a:before{content:"";position:absolute;top:50%;left:-.56rem;width:.28rem;height:1px;background:#362b1f2e;transform:translateY(-50%);transition:width .2s ease,background-color .2s ease}body.page-blog-post .post-outline a:hover,body.page-blog-post .post-related-list a:hover{color:var(--accent);transform:translate(2px)}body.page-blog-post .post-sidebar .post-outline a:hover{transform:none}body.page-blog-post .post-outline a.is-active,body.page-blog-post .post-outline a[aria-current=true]{border-color:rgba(var(--accent-rgb),.24);background:rgba(var(--accent-rgb),.08);color:var(--accent-strong);font-weight:700;box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.05)}body.page-blog-post .post-sidebar .post-outline a.is-active,body.page-blog-post .post-sidebar .post-outline a[aria-current=true]{color:var(--text-primary);background:rgba(var(--accent-rgb),.1)}body.page-blog-post .post-sidebar .post-outline a.is-active:before,body.page-blog-post .post-sidebar .post-outline a[aria-current=true]:before{width:.42rem;background:var(--accent-strong)}body.page-blog-post .post-related-list strong{font-size:.95rem;font-weight:600;color:var(--text-primary)}body.page-blog-post .post-related-list span{font-size:.74rem;color:var(--text-muted)}body.page-blog-post .post-content{background:transparent!important;color:var(--text-primary);max-width:100%;margin:0 auto;padding:0!important;font-family:var(--font-sans)!important;font-size:1rem;line-height:1.82}body.page-blog-post .post-content>*{width:100%;max-width:var(--post-copy-width);margin-left:auto;margin-right:auto}body.page-blog-post .post-content>.expressive-code,body.page-blog-post .post-content>pre,body.page-blog-post .post-content>.katex-display,body.page-blog-post .post-content>table,body.page-blog-post .post-content>figure{width:100%;max-width:var(--post-wide-width)}body.page-blog-post .post-content>p:first-of-type{font-size:1.08rem;color:var(--text-primary)}body.page-blog-post .markdown-body :where(h2,h3,h4,h5,h6){margin-top:3rem;margin-bottom:1rem;scroll-margin-top:8rem}body.page-blog-post .markdown-body h2{padding-top:1rem;border-top:1px solid var(--border-color)}body.page-blog-post .markdown-body p,body.page-blog-post .markdown-body li{color:var(--text-secondary)}body.page-blog-post .markdown-body ul,body.page-blog-post .markdown-body ol{padding-left:1.25rem}body.page-blog-post .markdown-body li+li{margin-top:.45rem}body.page-blog-post .markdown-body blockquote{margin:2rem auto;padding:1rem 1.2rem;border-left:3px solid var(--accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:rgba(var(--accent-rgb),.06)}body.page-blog-post .markdown-body hr{width:min(100%,54%);max-width:none;margin:2.5rem auto}body.page-blog-post .markdown-body table{display:block;overflow-x:auto;border:1px solid var(--border-color);border-radius:var(--radius-md);background:#fffcf7b3}body.page-blog-post .markdown-body table th,body.page-blog-post .markdown-body table td{padding:.85rem 1rem;border-color:var(--border-color)}body.page-blog-post .markdown-body table th{font-family:var(--font-mono);font-size:.82rem;font-weight:600;color:var(--text-primary);background:rgba(var(--accent-rgb),.07)}body.page-blog-post .markdown-body img{display:block;margin:2rem auto;padding:.45rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:#fffc;box-shadow:var(--shadow-crisp);cursor:zoom-in;transition:transform .2s ease,box-shadow .2s ease}body.page-blog-post .markdown-body img:hover,body.page-blog-post .post-zoomable:hover{transform:translateY(-2px);box-shadow:var(--shadow-soft)}body.page-blog-post .markdown-body .expressive-code{margin:2rem auto}body.page-blog-post .markdown-body .expressive-code .frame{border-radius:22px;overflow:hidden;border:1px solid rgba(54,43,31,.12);box-shadow:0 14px 28px #3d2c1714}body.page-blog-post .markdown-body .expressive-code .header{display:flex;align-items:center;min-height:0;padding:.82rem 1rem;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.02em}body.page-blog-post .markdown-body .expressive-code pre{margin:0;padding:.95rem 1.05rem;border:none;border-radius:0;box-shadow:none;max-height:none}body.page-blog-post .markdown-body .expressive-code .copy button{border-radius:999px;border:1px solid rgba(54,43,31,.12);background:#ffffffb8}body.page-blog-post .markdown-body .expressive-code .copy button:hover{background:rgba(var(--accent-rgb),.08)}body.page-blog-post .markdown-body pre:not(.expressive-code pre){width:min(100%,var(--post-wide-width));max-width:none;margin:2rem auto}body.page-blog-post .markdown-body .expressive-code code{font-size:.92rem}body.page-blog-post .markdown-body code:not(pre code){padding:.16em .42em;border-radius:6px;background:var(--bg-code);color:var(--text-primary)}body.page-blog-post .markdown-body .katex-display{overflow-x:auto;padding:.4rem 0}body.page-blog-post .lightbox{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:2rem;background:#110e0ae0;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;pointer-events:none;transition:opacity .24s ease;z-index:1400}body.page-blog-post .lightbox.active{opacity:1;pointer-events:auto}body.page-blog-post .lightbox__frame{max-width:min(1100px,calc(100vw - 4rem));max-height:calc(100vh - 4rem);padding:.8rem;border:1px solid rgba(255,255,255,.16);border-radius:28px;background:#201810bd;box-shadow:0 24px 55px #00000057}body.page-blog-post .lightbox img{display:block;max-width:100%;max-height:calc(100vh - 5.6rem);margin:0 auto;border-radius:20px}body.page-blog-post .lightbox-close{position:absolute;top:1.25rem;right:1.25rem;width:3rem;height:3rem;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:#ffffff14;color:#fff6eb;font-size:1.75rem;line-height:1;cursor:pointer;transition:transform .2s ease,background-color .2s ease}body.page-blog-post .lightbox-close:hover{transform:translateY(-1px);background:#ffffff29}@keyframes postFadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(min-width:2100px){body.page-blog-post main{--post-sidebar-width: clamp(260px, 11vw, 320px)}body.page-blog-post .post-sidebar .post-outline a{font-size:.8rem}}@media(min-width:3000px){body.page-blog-post main{--post-sidebar-width: clamp(292px, 9vw, 360px)}}@media(max-width:48rem){body.page-blog-post main{--post-sidebar-width: 0px;--post-column-gap: 0px;--page-max: var(--container-wide)}body.page-blog-post .post-head--with-hero .post-head__content,body.page-blog-post .post-layout--with-toc{grid-template-columns:1fr}body.page-blog-post .post-sidebar{display:none}body.page-blog-post .post-mobile-panels{display:grid}}@media(max-width:64rem){body.page-blog-post .post-head--with-hero .post-head__content{grid-template-columns:1fr}}@media(max-width:720px){body.page-blog-post main{--post-copy-width: 100%;--post-wide-width: 100%;padding-bottom:4rem}body.page-blog-post .shell-window__bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.55rem}body.page-blog-post .shell-window__title,body.page-blog-post .shell-chip{white-space:nowrap}body.page-blog-post .shell-window__title{min-width:0;overflow:hidden;text-overflow:ellipsis}body.page-blog-post .shell-window__bar .shell-chip{padding:.28rem .55rem;font-size:.72rem}body.page-blog-post .post-head__content,body.page-blog-post .post-reader__body{padding:1rem}body.page-blog-post .post-head h1{max-width:none;font-size:2.9rem}body.page-blog-post .post-head__path{font-size:.74rem;word-break:break-all}body.page-blog-post .post-summary-grid{grid-template-columns:1fr}body.page-blog-post .post-toolbar,body.page-blog-post .post-toolbar__actions{flex-direction:column;align-items:stretch}body.page-blog-post .post-share-button{width:100%}body.page-blog-post .lightbox{padding:1rem}body.page-blog-post .lightbox__frame{max-width:calc(100vw - 2rem);padding:.55rem;border-radius:20px}}
