.article-body{overflow-wrap:break-word}.article-body>*+*{margin-top:1.2em}.article-body h2,.article-body h3,.article-body h4{line-height:1.5;position:relative}.article-body h2{margin-top:2.8em;font-size:1.25rem;font-weight:600}.article-body h3{margin-top:2.2em;font-size:1.0625rem;font-weight:600}.article-body h4{color:var(--text-muted);margin-top:1.8em;font-size:1rem;font-weight:600}.article-body :is(h2,h3,h4)+*{margin-top:.7em}.heading-anchor{width:1em;font-family:var(--font-sans);color:var(--text-faint);text-align:right;opacity:0;transition:opacity var(--duration-fast) var(--easing);font-weight:400;position:absolute;top:0;left:-1.4em}.article-body :is(h2,h3,h4):hover .heading-anchor{opacity:1}.heading-anchor:hover{color:var(--accent-color)}@media (hover:none){.heading-anchor{display:none}}.article-body a:not(.heading-anchor){text-decoration:underline;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint);text-underline-offset:.3em;transition:color var(--duration-fast) var(--easing), text-decoration-color var(--duration-fast) var(--easing);text-decoration-thickness:1px}.article-body a:not(.heading-anchor):hover{color:var(--accent-color);text-decoration-color:currentColor}.article-body strong{font-weight:600}.article-body ul,.article-body ol{padding-left:1.4em}.article-body li+li{margin-top:.4em}.article-body li::marker{color:var(--text-faint)}.article-body blockquote{border-left:1px solid var(--heri);color:var(--text-muted);padding-left:1.2em}.article-body blockquote>*+*{margin-top:.8em}.article-body hr{text-align:center;border:0;height:auto;margin:3em 0}.article-body hr:before{content:"·  ·  ·";white-space:pre;color:var(--text-faint)}.article-body table{border-collapse:collapse;width:max-content;max-width:100%;font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-size:.875rem;display:block;overflow-x:auto}.article-body th,.article-body td{border-bottom:1px solid var(--border-color);text-align:left;padding:6px 16px 6px 0}.article-body th{color:var(--text-muted);font-weight:500}.article-body img{border-radius:2px;max-width:100%;height:auto;display:block}.article-body img.is-previewable{cursor:zoom-in}.article-body p:has(>img:only-child){margin-top:2em}.article-body p:has(>img:only-child)+p:has(>em:only-child){font-family:var(--font-sans);font-size:var(--text-small);text-align:center;color:var(--text-muted);margin-top:.8em}.article-body p:has(>img:only-child)+p>em:only-child{font-style:normal}.article-body :not(pre)>code{background-color:var(--surface-color);font-family:var(--font-mono);border-radius:3px;padding:.1em .3em;font-size:.85em}.article-body .code-block{margin-top:2em;margin-bottom:2em}.code-block-caption{min-height:1.5em;font-family:var(--font-mono);color:var(--text-faint);justify-content:space-between;align-items:baseline;margin-bottom:6px;font-size:.75rem;display:flex}.code-block-copy{font:inherit;color:inherit;cursor:pointer;opacity:0;transition:opacity var(--duration-fast) var(--easing), color var(--duration-fast) var(--easing);background:0 0;border:0;padding:0}.code-block:hover .code-block-copy,.code-block-copy:focus-visible,.code-block-copy[data-copied]{opacity:1}.code-block-copy:hover,.code-block-copy[data-copied]{color:var(--accent-color)}@media (hover:none){.code-block-copy{opacity:1}}.article-body pre{background-color:var(--surface-color);scrollbar-width:thin;border-radius:4px;padding:18px 20px;overflow-x:auto}.article-body pre code{min-width:max-content;font-family:var(--font-mono);color:var(--code-text);white-space:pre;font-size:.8125rem;line-height:1.75;display:block}.article-body .hljs-comment,.article-body .hljs-quote{color:var(--code-comment);font-style:italic}.article-body .hljs-keyword,.article-body .hljs-selector-tag,.article-body .hljs-built_in,.article-body .hljs-type,.article-body .hljs-literal{color:var(--code-keyword)}.article-body .hljs-title,.article-body .hljs-function,.article-body .hljs-name,.article-body .hljs-attr,.article-body .hljs-property{color:var(--code-title)}.article-body .hljs-string,.article-body .hljs-regexp,.article-body .hljs-addition{color:var(--code-string)}.article-body .hljs-number,.article-body .hljs-symbol,.article-body .hljs-deletion{color:var(--code-number)}
.article-header{margin-bottom:64px}.article-header-title{letter-spacing:.01em;font-size:clamp(1.625rem,4vw,2.125rem);font-weight:500;line-height:1.45}.article-header-meta{flex-wrap:wrap;gap:4px 12px;margin-top:16px;display:flex}.article-header-meta>*+:before{content:"·";color:var(--text-faint);margin-right:12px}.article-header-room:hover{color:var(--accent-color)}
.comments{min-width:0;margin-top:96px}.comments-heading{margin-bottom:24px}.comments h2{margin-bottom:4px;font-size:1.0625rem;font-weight:600}.comments-heading p,.comments-fallback,.comments-status{font-family:var(--font-sans);font-size:var(--text-small);color:var(--text-muted);overflow-wrap:anywhere;line-height:1.7}.comments giscus-widget,#comments::part(iframe){width:100%;min-width:0;display:block}.comments a{text-decoration:underline;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint);text-underline-offset:.3em}.comments a:hover{color:var(--accent-color)}
.image-preview-overlay{z-index:180;background-color:var(--image-preview-backdrop);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:100vw;height:100dvh;position:fixed;top:0;left:0}.image-preview-content{z-index:181;outline:none;grid-template-rows:auto minmax(0,1fr);gap:12px;width:100vw;height:100dvh;padding:32px;display:grid;position:fixed;top:0;left:0}.image-preview-title{color:#dce0e5;max-width:min(780px,100vw - 120px);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;background-color:#141820cc;border:1px solid #ffffff24;border-radius:4px;justify-self:center;padding:6px 10px;font-size:.78rem;font-weight:500;overflow:hidden}.image-preview-frame{background-color:var(--bg-color);border:1px solid #ffffff2e;border-radius:4px;place-self:center;width:min(100%,1280px);height:calc(100vh - 116px);position:relative;overflow:hidden}.image-preview-media{cursor:zoom-out;object-fit:contain}.image-preview-close{z-index:182;color:#dce0e5;cursor:pointer;width:34px;height:34px;transition:background-color var(--duration-fast) var(--easing), border-color var(--duration-fast) var(--easing);background-color:#141820d1;border:1px solid #ffffff29;border-radius:4px;justify-content:center;align-items:center;display:inline-flex;position:fixed;top:22px;right:22px}.image-preview-close:hover{background-color:#232936f0;border-color:#ffffff47}@media (max-width:767px){.image-preview-content{padding:18px}.image-preview-title{max-width:calc(100vw - 88px)}.image-preview-frame{height:calc(100vh - 96px)}}
.loop-nav{border-top:1px solid var(--border-color);margin-top:96px;padding-top:32px}.loop-nav ul{gap:16px;list-style:none;display:grid}.loop-nav-link{grid-template-columns:6.5em minmax(0,1fr);align-items:baseline;gap:16px;display:grid}.loop-nav-label{color:var(--text-faint)}.loop-nav-title{transition:color var(--duration-fast) var(--easing)}.loop-nav-link:hover .loop-nav-title{color:var(--accent-color)}@media (max-width:640px){.loop-nav-link{grid-template-columns:minmax(0,1fr);gap:0}}
.toc{display:none}@media (min-width:1240px){.toc{top:30vh;left:calc(50% - var(--measure) / 2 - 232px);scrollbar-width:none;width:176px;max-height:60vh;display:block;position:fixed;overflow-y:auto}}.toc-list{list-style:none}.toc-link{font-family:var(--font-sans);color:var(--text-faint);transition:color var(--duration-fast) var(--easing);padding:3px 0;font-size:.75rem;line-height:1.5;display:block}.toc-link[data-depth="3"]{padding-left:12px}.toc-link:hover,.toc-link[aria-current]{color:var(--text-color)}
.post-view-tags{color:var(--text-faint);flex-wrap:wrap;gap:4px 12px;margin-top:64px;display:flex}
