.post-shell{display:grid;grid-template-columns:minmax(0,1fr);row-gap:3.5rem}.post-main,.post-foot{min-width:0;max-width:44rem}.post-aside .skill-toc{display:none}@media(min-width:1024px){.post-shell{grid-template-columns:minmax(0,44rem) 18rem;justify-content:space-between;column-gap:clamp(2.5rem,5vw,5rem);row-gap:4rem}.post-main{grid-column:1;grid-row:1}.post-foot{grid-column:1;grid-row:2}.post-aside{grid-column:2;grid-row:1 / span 2}.post-aside-inner{position:sticky;top:5.5rem;display:flex;flex-direction:column;gap:2rem;max-height:calc(100vh - 7rem);overflow-y:auto}.post-aside .skill-toc{display:block}}@media(prefers-reduced-motion:no-preference){html:has(.post-shell){scroll-behavior:smooth}}.post-title{font-family:var(--font-display);font-size:clamp(1.875rem,1.2rem + 2.4vw,2.875rem);font-weight:700;letter-spacing:-.03em;line-height:1.08;color:var(--color-ink);text-wrap:balance}.post-lede{font-size:clamp(1.0625rem,1rem + .35vw,1.1875rem);line-height:1.55;color:var(--color-ink-3);max-width:60ch}.post-cta{background:var(--color-bg-2);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:1.25rem}.post-cta-title{font-family:var(--font-display);font-size:1.0625rem;font-weight:600;letter-spacing:-.01em;line-height:1.3;color:var(--color-ink)}.post-cta-body{margin-top:.5rem;font-size:.875rem;line-height:1.5;color:var(--color-ink-3)}.post-cta-actions{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem}@media(min-width:1024px){.post-cta-actions{flex-direction:column}.post-cta-actions>a{justify-content:center}}.post-cta-actions>a{font-size:.875rem;padding:.625rem 1rem}.post-nav{display:grid;gap:1rem;padding-top:2.5rem;border-top:1px solid var(--color-line)}@media(min-width:768px){.post-nav{grid-template-columns:repeat(2,minmax(0,1fr))}}.post-nav-card{display:flex;flex-direction:column;gap:.375rem;padding:1rem 1.25rem;border:1px solid var(--color-line);border-radius:var(--radius-lg);background:var(--color-bg);text-align:left;transition:border-color .15s ease}.post-nav-card:hover{border-color:var(--color-line-2)}.post-nav-card:focus-visible{outline:none;box-shadow:var(--ring)}.post-nav-label{font-size:.8125rem;font-weight:500;color:var(--color-ink-3)}.post-nav-title{font-size:1.0625rem;font-weight:600;line-height:1.35;letter-spacing:-.01em;color:var(--color-ink);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;transition:color .15s ease}.post-nav-card:hover .post-nav-title{color:var(--color-indigo)}.blog-image{border:1px solid var(--color-line);border-radius:var(--radius-lg);overflow:hidden}.prose-blog{color:var(--color-ink-2);font-family:var(--font-sans);font-size:1.0625rem;line-height:1.65}.prose-blog>*+*{margin-top:1.25rem}.prose-blog h2{font-family:var(--font-display);font-weight:700;font-size:clamp(1.5rem,1.2rem + 1vw,1.75rem);line-height:1.2;letter-spacing:-.02em;color:var(--color-ink);margin-top:2.5rem;margin-bottom:.5rem}.prose-blog h3{font-family:var(--font-display);font-weight:600;font-size:clamp(1.1875rem,1.1rem + .35vw,1.3125rem);line-height:1.3;letter-spacing:-.01em;color:var(--color-ink);margin-top:2rem;margin-bottom:.25rem}.prose-blog :is(h2,h3){scroll-margin-top:5.5rem}.prose-blog p{color:var(--color-ink-2)}.prose-blog a:not(.btn-primary,.btn-secondary,.btn-ghost){color:var(--color-indigo);text-decoration:underline;text-decoration-color:var(--color-line-2);text-underline-offset:.2em}.prose-blog a:not(.btn-primary,.btn-secondary,.btn-ghost):hover{color:var(--color-indigo-hover);text-decoration-color:var(--color-indigo-hover)}.prose-blog strong{font-weight:600;color:var(--color-ink)}.prose-blog em{font-style:italic}.prose-blog code{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-2);color:var(--color-ink);padding:.1em .4em;border-radius:4px}.prose-blog pre{background:var(--color-bg-2);color:var(--color-ink);border:1px solid var(--color-line);padding:1.5rem;overflow-x:auto;border-radius:var(--radius-md);font-family:var(--font-mono);font-size:.85rem;line-height:1.6;margin:1.75rem 0}.prose-blog pre code{display:block;background:transparent;color:inherit;padding:0}.prose-blog ul{padding-left:1.4em;list-style:disc}.prose-blog ul li+li{margin-top:.4rem}.prose-blog ol{list-style:none;padding-left:0;counter-reset:prose-counter;margin:2rem 0}.prose-blog ol>li{counter-increment:prose-counter;position:relative;padding:1.25rem 0 1.25rem 3.5em;border-top:1px solid var(--color-line);margin-top:0}.prose-blog ol>li:last-child{border-bottom:1px solid var(--color-line)}.prose-blog ol>li:before{content:counter(prose-counter,decimal-leading-zero);position:absolute;left:0;top:1.4rem;font-family:var(--font-mono);font-size:.8125rem;letter-spacing:.02em;font-weight:600;color:var(--color-indigo)}.prose-blog blockquote{border-left:3px solid var(--color-indigo);padding-left:1.2rem;color:var(--color-ink-3);margin:1.75rem 0}.prose-blog hr{border:none;border-top:1px solid var(--color-line);margin:2.5rem 0}.prose-blog .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.prose-blog table{width:100%;border-collapse:collapse;font-size:.9375rem;line-height:1.45}.prose-blog th,.prose-blog td{text-align:left;vertical-align:top;padding:.6rem .75rem .6rem 0;border-bottom:1px solid var(--color-line)}.prose-blog th{font-weight:600;color:var(--color-ink);border-bottom-color:var(--color-line-2)}.prose-blog .table-scroll:focus-visible{outline:2px solid var(--color-indigo);outline-offset:4px;border-radius:4px}.prose-blog .table-scroll table{min-width:34rem}.prose-blog img{max-width:100%;height:auto;margin:1.75rem 0;border-radius:var(--radius-md);border:1px solid var(--color-line)}.prose-blog .table-scroll{margin:1.5rem 0}.prose-blog .table-scroll table{width:100%;border-collapse:collapse;font-size:.875rem;line-height:1.5;font-variant-numeric:tabular-nums}.prose-blog .table-scroll thead th{text-align:left;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-3);padding:0 1rem .5rem 0;border-bottom:1px solid var(--color-line-2);vertical-align:bottom}.prose-blog .table-scroll tbody td{padding:.55rem 1rem .55rem 0;border-bottom:1px solid var(--color-line);color:var(--color-ink-2);vertical-align:baseline}.prose-blog .table-scroll tbody tr>td:first-child{color:var(--color-ink);font-weight:500;white-space:nowrap}
