.blog-shell{min-height:100vh;padding-top:56px;position:relative;z-index:1}.blog-main{min-width:0;padding:var(--space-xl) clamp(var(--space-xl),5vw,80px) var(--space-2xl);max-width:960px;width:100%;margin:0 auto}.has-toc .blog-main{margin:0}.blog-hero-image{width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;border:1px solid var(--color-border);margin-bottom:var(--space-lg)}.blog-article-header{margin-bottom:var(--space-xl);padding:0 0 var(--space-lg);border:none;border-bottom:1px solid var(--color-border);background:none}.blog-kicker{margin:0 0 var(--space-md);font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase}.blog-kicker a{color:var(--color-text-muted);text-decoration:none;transition:color var(--dur) var(--ease)}.blog-kicker a:hover{color:var(--color-text-bright)}.blog-article-header h1{margin:0;font-family:var(--font-display);text-transform:none;font-size:clamp(1.5rem,3.5vw,2rem);letter-spacing:.01em;line-height:1.25;color:var(--color-text-bright)}.blog-meta{display:flex;align-items:center;gap:var(--space-md);margin-top:var(--space-md);font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted)}.blog-meta-separator{color:var(--color-border-strong)}.blog-description{margin:var(--space-md) 0 0;max-width:65ch;font-family:var(--font-mono);font-size:.875rem;color:var(--color-text-muted);line-height:1.7}.blog-tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-md)}.blog-tag{display:inline-block;padding:3px 10px;font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.06em;color:var(--color-text-muted);border:1px solid var(--color-border-strong);border-radius:3px;text-decoration:none;text-transform:lowercase;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.blog-tag:hover{color:var(--color-text-bright);border-color:var(--color-text-muted);background:var(--color-glow)}.blog-content-grid{max-width:1400px;width:100%;margin:0 auto}.blog-content-grid.has-toc{display:grid;grid-template-columns:220px 1fr;gap:0 var(--space-xl)}.blog-toc-rail{display:none}.blog-sidebar-sticky{position:sticky;top:80px;display:flex;flex-direction:column;max-height:calc(100vh - 96px);padding:var(--space-xl) 0 var(--space-lg) var(--space-lg)}.blog-toc-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}.blog-toc-label{margin:0 0 var(--space-md);font-family:var(--font-display);font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-muted)}.blog-toc-list{list-style:none;padding:0;margin:0}.blog-toc-list li{margin:0}.blog-toc-list a{display:block;padding:4px 0 4px var(--space-sm);font-family:var(--font-mono);font-size:.6875rem;line-height:1.5;color:var(--color-text-muted);text-decoration:none;border-left:1px solid transparent;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.blog-toc-list a:hover{color:var(--color-text-bright)}.blog-toc-list a[data-active]{color:var(--color-text-bright);border-left-color:var(--color-text-bright)}.blog-toc-sub a{padding-left:calc(var(--space-sm) + var(--space-sm));font-size:.625rem}.blog-toc-inline{margin-bottom:var(--space-xl);padding:var(--space-md) var(--space-lg);border:1px solid var(--color-border);border-radius:.5rem;background:var(--color-surface)}.blog-prose p{font-family:var(--font-mono);font-size:.9375rem;line-height:1.85;color:var(--color-text);margin-bottom:var(--space-lg)}.blog-prose h2{font-size:1.125rem;text-transform:none;letter-spacing:.02em;margin-top:var(--space-2xl);margin-bottom:var(--space-md);padding:0 0 var(--space-sm);border-bottom:1px solid var(--color-border)}.blog-prose h2:before{display:none}.blog-prose h3{font-size:.9375rem;text-transform:none;letter-spacing:.02em;margin-top:var(--space-xl);border-left:none;padding-left:0}.blog-prose h4{font-size:.9375rem}.blog-prose li{font-size:.9375rem;line-height:1.85;margin-bottom:6px}.blog-prose strong{color:var(--color-text-bright);font-weight:600}.blog-prose a{color:var(--color-text-bright);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--color-border-strong);transition:text-decoration-color var(--dur) var(--ease)}.blog-prose a:hover{color:var(--color-accent);text-decoration-color:var(--color-accent)}.blog-prose code,.blog-prose pre code{font-size:.875rem}.blog-prose blockquote p{font-size:.9375rem}.blog-pager{margin-top:var(--space-2xl);margin-bottom:var(--space-xl);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.blog-pager-link,.blog-pager-spacer{min-height:74px;border:1px solid var(--color-border);border-radius:.5rem;background:none}.blog-pager-link{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:var(--space-md);text-decoration:none;transition:border-color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.blog-pager-link:hover{border-color:var(--color-border-strong);background:var(--color-glow)}.blog-pager-label{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.11em;color:var(--color-text-muted);text-transform:uppercase}.blog-pager-title{font-family:var(--font-display);font-size:.8125rem;letter-spacing:.02em;color:var(--color-text-bright);text-transform:none}.blog-index-header{margin-bottom:var(--space-xl);padding:0 0 var(--space-lg);border:none;border-bottom:1px solid var(--color-border);background:none}.blog-index-header h1{margin:0;font-family:var(--font-display);text-transform:uppercase;font-size:clamp(1.5rem,3vw,2.2rem);letter-spacing:.05em;color:var(--color-text-bright)}.blog-index-header p{margin:var(--space-sm) 0 0;font-family:var(--font-mono);font-size:.875rem;color:var(--color-text-muted);line-height:1.7}.blog-index{display:grid;grid-template-columns:1fr;gap:0}.blog-card{display:block;border:none;border-bottom:1px solid var(--color-border);background:none;padding:var(--space-lg) 0;text-decoration:none;transition:background-color var(--dur) var(--ease)}.blog-card:first-child{padding-top:0}.blog-card:last-child{border-bottom:none}.blog-card:hover{background:var(--color-glow);padding-left:var(--space-md);padding-right:var(--space-md);margin-left:calc(-1 * var(--space-md));margin-right:calc(-1 * var(--space-md))}.blog-card-image{width:100%;height:auto;aspect-ratio:2 / 1;object-fit:cover;border:1px solid var(--color-border);border-radius:3px;margin-bottom:var(--space-sm)}.blog-card-date{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);letter-spacing:.06em;margin:0 0 var(--space-xs)}.blog-card h2{margin:0 0 var(--space-sm);font-family:var(--font-display);font-size:1.125rem;font-weight:600;letter-spacing:.02em;text-transform:none;color:var(--color-text-bright)}.blog-card p{margin:0 0 var(--space-sm);font-family:var(--font-mono);font-size:.875rem;line-height:1.7;color:var(--color-text)}.blog-card-tags{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.blog-prose{font-size:15px}@media(min-width:1025px){.blog-toc-rail{display:block}.blog-toc-inline{display:none}}@media(max-width:1024px){.blog-content-grid.has-toc{display:block}.blog-toc-rail{display:none}.has-toc .blog-main{margin:0 auto}}@media(max-width:900px){.blog-main{padding:var(--space-xl) var(--space-lg)}.blog-pager{grid-template-columns:1fr}}.blog-share{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-md)}.blog-share-label{font-family:var(--font-display);font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-muted);margin-right:var(--space-xs)}.blog-share-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--color-border-strong);border-radius:3px;background:none;color:var(--color-text-muted);text-decoration:none;cursor:pointer;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.blog-share-btn:hover{color:var(--color-text-bright);border-color:var(--color-text-muted);background:var(--color-glow)}.blog-share-btn svg{width:14px;height:14px}.blog-share-btn .blog-share-check-icon,.blog-share-btn.copied .blog-share-copy-icon{display:none}.blog-share-btn.copied .blog-share-check-icon{display:block}.blog-share-btn.copied{color:var(--color-success);border-color:var(--color-success)}.blog-recommended{flex:0 0 auto;margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.blog-recommended-list{list-style:none;padding:0;margin:0}.blog-recommended-list li{margin:0}.blog-recommended-list li+li{margin-top:var(--space-sm)}.blog-recommended-link{display:block;text-decoration:none;transition:opacity var(--dur) var(--ease)}.blog-recommended-link:hover{opacity:.85}.blog-recommended-img{display:block;width:100%;height:auto;aspect-ratio:2 / 1;object-fit:cover;border:1px solid var(--color-border);margin-bottom:6px}.blog-recommended-title{display:block;font-family:var(--font-mono);font-size:.6875rem;line-height:1.4;color:var(--color-text-muted);transition:color var(--dur) var(--ease)}.blog-recommended-link:hover .blog-recommended-title{color:var(--color-text-bright)}.blog-recommended-mobile{margin-top:var(--space-xl);padding:var(--space-lg);border:1px solid var(--color-border);border-radius:.5rem;background:var(--color-surface)}.blog-recommended-mobile .blog-recommended-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-md)}.blog-recommended-mobile .blog-recommended-title{font-size:.8125rem}@media(min-width:1025px){.blog-recommended-mobile{display:none}}
