.post-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:2rem;padding-block:2.5rem 1rem;display:grid}.post-layout:not(.has-toc){max-width:calc(var(--prose-width) + 2.5rem);margin-inline:auto}.post-main{min-width:0}@media (width>=1120px){.post-layout.has-toc{grid-template-columns:minmax(0,1fr) 15.5rem;gap:4rem}}.reading-progress{z-index:60;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.reading-progress__bar{transform-origin:0;background:linear-gradient(90deg, var(--accent), var(--accent-2));width:100%;height:100%;transform:scaleX(0)}.post-header{border-bottom:1px solid var(--border);margin-bottom:2.25rem;padding-bottom:2rem}.post-title{letter-spacing:-.028em;font-size:clamp(1.75rem,4.2vw,2.5rem);font-weight:800;line-height:1.25}.post-lead{color:var(--text-muted);margin-top:.9rem;font-size:1.02rem;line-height:1.75}.post-meta{margin-top:1.25rem;font-size:.85rem}.post-tags{flex-wrap:wrap;gap:.4rem;margin-top:1rem;display:flex}.post-series{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--bg-subtle);margin-top:2.5rem;padding:1.25rem 1.4rem}.post-series__title{color:var(--text-muted);margin-bottom:.6rem;font-size:.85rem;font-weight:700}.post-series__list{flex-direction:column;gap:.3rem;padding:0;font-size:.9rem;list-style:none;display:flex}.post-series__list li{align-items:baseline;gap:.5rem;display:flex}.post-series__index{color:var(--text-faint);font-family:var(--font-mono);flex-shrink:0;font-size:.78rem}.post-series__list a{color:var(--text-muted);transition:color .15s var(--ease)}.post-series__list a:hover{color:var(--accent)}.post-series__list [aria-current=page]{color:var(--accent);font-weight:600}.toc{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle);order:-1;padding:.75rem 1.1rem 1rem;font-size:.86rem}@media (width>=1120px){.toc{top:calc(var(--header-height) + 2rem);max-height:calc(100dvh - var(--header-height) - 4rem);overscroll-behavior:contain;order:0;position:sticky;overflow-y:auto}}.toc__summary{color:var(--text-muted);letter-spacing:.02em;cursor:pointer;align-items:center;gap:.45rem;padding-block:.2rem;font-size:.82rem;font-weight:700;list-style:none;display:flex}.toc__summary::-webkit-details-marker{display:none}.toc__summary:after{content:"";width:6px;height:6px;transition:transform .2s var(--ease);border-bottom:1.6px solid;border-right:1.6px solid;margin-left:auto;transform:rotate(45deg)translateY(-2px)}.toc[open]>.toc__summary:after{transform:rotate(-135deg)translateY(-1px)}.toc__list{border-left:1px solid var(--border);flex-direction:column;gap:.1rem;margin-top:.75rem;padding:0;list-style:none;display:flex}.toc__item--3{padding-left:.85rem}.toc__item--4{padding-left:1.7rem}.toc__link{color:var(--text-faint);transition:color .15s var(--ease), border-color .15s var(--ease);border-left:2px solid #0000;margin-left:-1px;padding:.22rem 0 .22rem .8rem;line-height:1.5;display:block}.toc__link:hover{color:var(--text)}.toc__link.is-active{color:var(--accent);border-left-color:var(--accent);font-weight:600}@media (width>=1120px){.toc__summary:after{display:none}}.prose{max-width:var(--prose-width);color:var(--text);overflow-wrap:break-word;font-size:1rem;line-height:1.85}.prose>*+*{margin-top:1.15rem}.prose h2,.prose h3,.prose h4{scroll-margin-top:calc(var(--header-height) + 1.5rem);letter-spacing:-.015em;font-weight:700;position:relative}.prose h2{border-bottom:1px solid var(--border);margin-top:3rem;padding-bottom:.5rem;font-size:1.45rem}.prose h3{margin-top:2.25rem;font-size:1.18rem}.prose h4{margin-top:1.75rem;font-size:1.02rem}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.9rem}.heading-anchor{color:var(--text-faint);opacity:0;transition:opacity .15s var(--ease), color .15s var(--ease);margin-left:.4rem;font-weight:400;text-decoration:none}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor,.prose h4:hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}.heading-anchor:hover{color:var(--accent)}.prose a:not(.heading-anchor):not(.link-chip){color:var(--accent);text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);text-underline-offset:3px;transition:text-decoration-color .15s var(--ease)}.prose a:not(.heading-anchor):hover{text-decoration-color:var(--accent)}.prose ul,.prose ol{padding-left:1.4rem}.prose li+li,.prose li>ul,.prose li>ol{margin-top:.4rem}.prose ul>li::marker{color:var(--text-faint)}.prose ol>li::marker{color:var(--text-faint);font-variant-numeric:tabular-nums}.prose input[type=checkbox]{accent-color:var(--accent);margin-right:.45rem}.prose li:has(>input[type=checkbox]){margin-left:-1.2rem;list-style:none}.prose :not(pre)>code{background:var(--bg-inset);color:var(--accent);border:1px solid var(--border);white-space:break-spaces;border-radius:5px;padding:.14em .4em;font-size:.86em}.prose kbd{background:var(--bg-inset);border:1px solid var(--border-strong);color:var(--text-muted);border-bottom-width:2px;border-radius:5px;padding:.1em .4em;font-size:.8em}.prose blockquote{border-left:3px solid var(--accent);background:linear-gradient(90deg, var(--accent-soft), transparent 65%);color:var(--text-muted);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:.35rem 0 .35rem 1.15rem}.prose blockquote>*+*{margin-top:.8rem}.prose table{border-collapse:collapse;width:100%;font-size:.9rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:.55rem .85rem}.prose thead th{background:var(--bg-subtle);white-space:nowrap;font-weight:700}.prose tbody tr:nth-child(2n){background:color-mix(in srgb, var(--bg-subtle) 55%, transparent)}.prose img{border-radius:var(--radius);border:1px solid var(--border);margin-inline:auto}.prose figure{margin-inline:0}.prose figcaption{text-align:center;color:var(--text-faint);margin-top:.6rem;font-size:.84rem}.prose iframe,.prose video{border-radius:var(--radius);border:1px solid var(--border);width:100%}.prose .footnotes{border-top:1px solid var(--border);color:var(--text-muted);margin-top:3rem;padding-top:1.5rem;font-size:.88rem}.prose .footnotes h2{border:none;margin-top:0;font-size:.95rem}.prose [data-footnote-ref]{font-weight:600;text-decoration:none}.prose details{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle);padding:.75rem 1rem}.prose summary{cursor:pointer;font-weight:600}.prose hr{margin-block:2.75rem}.prose .astro-code,.prose .astro-code span{color:var(--shiki-light);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight);text-decoration:var(--shiki-light-text-decoration)}.prose .astro-code{background-color:var(--shiki-light-bg)}:root[data-theme=dark] .prose .astro-code,:root[data-theme=dark] .prose .astro-code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight);text-decoration:var(--shiki-dark-text-decoration)}:root[data-theme=dark] .prose .astro-code{background-color:var(--shiki-dark-bg)}.prose pre.astro-code{border:1px solid var(--border);border-radius:var(--radius);tab-size:4;overscroll-behavior-x:contain;margin-block:1.5rem;padding:1rem 1.15rem;font-size:.855rem;line-height:1.72;position:relative}.prose pre.astro-code code{font-size:inherit;background:0 0;border:none;padding:0;display:block}.prose .astro-code .line{border-radius:3px;width:100%;display:inline-block}.prose .astro-code .line.highlighted{background-color:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.prose .astro-code .line.diff.add{background-color:var(--success-soft);box-shadow:inset 3px 0 0 var(--success)}.prose .astro-code .line.diff.remove{background-color:var(--danger-soft);box-shadow:inset 3px 0 0 var(--danger)}.prose .astro-code .line.focused{background-color:var(--bg-inset);box-shadow:inset 3px 0 0 var(--accent-2)}.prose .astro-code .line.error{background-color:var(--danger-soft);box-shadow:inset 3px 0 0 var(--danger)}.prose .astro-code .line.warning{background-color:var(--warn-soft);box-shadow:inset 3px 0 0 var(--warning)}.prose .astro-code.has-focused .line:not(.focused){opacity:.45;transition:opacity .2s var(--ease)}.prose .astro-code.has-focused:hover .line:not(.focused){opacity:1}.prose pre.astro-code[data-language]:after{content:attr(data-language);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);background-color:var(--bg-inset);border:1px solid var(--border);pointer-events:none;user-select:none;border-radius:999px;padding:.05rem .5rem;font-size:.68rem;line-height:1.5;position:absolute;top:.6rem;right:.85rem}.prose pre.astro-code[data-language]:not([data-code-title]){padding-top:2.15rem}.prose pre.astro-code[data-code-title]{padding-top:3.2rem}.prose pre.astro-code[data-code-title]:before{content:attr(data-code-title);height:2.3rem;font-family:var(--font-mono);color:var(--text-muted);background-color:var(--bg-inset);border-bottom:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;white-space:nowrap;text-overflow:ellipsis;padding-inline:1.15rem;align-items:center;padding-right:5.5rem;font-size:.78rem;display:flex;position:absolute;inset:0 0 auto;overflow:hidden}.post-footer{margin-top:3rem}.post-updated{border-radius:var(--radius-sm);background:var(--bg-subtle);border:1px solid var(--border);color:var(--text-muted);align-items:center;gap:.45rem;margin-top:1.5rem;padding:.7rem 1rem;font-size:.84rem;display:flex}.post-nav{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:1rem;margin-top:3rem;display:grid}.post-nav__item{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);transition:border-color .18s var(--ease), transform .18s var(--ease);flex-direction:column;gap:.3rem;padding:1rem 1.15rem;display:flex}.post-nav__item:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--border));transform:translateY(-2px)}.post-nav__label{color:var(--text-faint);align-items:center;gap:.3rem;font-size:.76rem;display:inline-flex}.post-nav__title{font-size:.94rem;font-weight:600;line-height:1.5}.post-nav__item:hover .post-nav__title{color:var(--accent)}.post-nav__item--next{text-align:right}.post-nav__item--next .post-nav__label{justify-content:flex-end}.post-nav__placeholder{opacity:.55;border-style:dashed}.post-related,.comments{border-top:1px solid var(--border);margin-top:3.5rem;padding-top:2rem}.comments__title{margin-bottom:1.25rem;font-size:1.05rem;font-weight:700}.comments__hint{color:var(--text-faint);border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--bg-subtle);padding:1.25rem;font-size:.86rem}.comments__hint code{font-size:.85em}
