.blog-main { padding-top: 2rem; }
.blog-index, .blog-article { padding-bottom: 4rem; }
.blog-index__header, .blog-article__header { max-width: 780px; margin: 1rem auto 2.5rem; }
.blog-index__header { max-width: none; }
.blog-page h1 { font-size: clamp(2.1rem, 4.7vw, 3.7rem); line-height: 1.2; letter-spacing: -.035em; margin: 1rem 0; text-wrap: balance; }
.blog-deck { color: var(--ink-muted); font-size: clamp(1.05rem, 2vw, 1.25rem); line-height: 1.85; }
.blog-breadcrumb, .blog-meta, .blog-languages, .blog-categories { display: flex; flex-wrap: wrap; gap: .8rem 1.2rem; align-items: center; }
.blog-breadcrumb, .blog-meta { font-size: .85rem; color: var(--ink-muted); }
.blog-languages { margin-block: 1.3rem; font-size: .85rem; }
.blog-languages a, .blog-breadcrumb a, .blog-prose a { color: var(--primary-strong); text-underline-offset: .2em; }
.blog-languages a[data-list-link] { color: var(--ink-muted); }
.blog-cover { width: min(100%, 960px); height: auto; margin: 0 auto 3.5rem; border-radius: 1.5rem; }
.blog-reading-layout { display: grid; grid-template-columns: 230px minmax(0, 740px); gap: 3rem; justify-content: center; align-items: start; }
.blog-toc { position: sticky; top: 1.5rem; padding: 1rem; border: 1px solid var(--line); border-radius: 1rem; font-size: .9rem; }
.blog-toc summary { font-weight: 750; cursor: pointer; }
.blog-toc ol { padding-inline-start: 1.2rem; margin-bottom: 0; }
.blog-toc li { margin-block: .65rem; }
.blog-toc a { text-decoration: none; color: var(--ink-muted); }
.blog-prose { min-width: 0; width: 100%; font-size: 1.08rem; line-height: 1.95; overflow-wrap: anywhere; }
.blog-prose h2 { font-size: 1.6rem; margin-top: 2.8rem; line-height: 1.45; scroll-margin-top: 2rem; }
.blog-prose h3 { font-size: 1.2rem; margin-top: 2rem; scroll-margin-top: 2rem; }
.blog-prose li { margin-block: .5rem; }
.blog-prose blockquote, .blog-platform { margin: 1.8rem 0; padding: 1.25rem 1.5rem; background: var(--paper); border-inline-start: 3px solid var(--primary); border-radius: 0 .75rem .75rem 0; }
.blog-prose blockquote p { margin: 0; }
.blog-prose img, .blog-prose video { display: block; max-width: 100%; border-radius: 1rem; height: auto; margin-inline: auto; }
.blog-prose video { width: 100%; min-width: 0; max-width: 100%; height: auto; object-fit: contain; background: #1c1c22; }
.blog-prose table { display: block; max-width: 100%; overflow-x: auto; border-collapse: collapse; font-size: .95rem; margin-block: 1.5rem; }
.blog-prose th, .blog-prose td { border: 1px solid var(--line); padding: .7rem 1rem; text-align: start; min-width: 120px; }
.blog-platform { color: var(--ink-muted); font-size: .9rem; }
.blog-preview { width: min(1180px, calc(100% - 2rem)); margin: 0 auto 1.5rem; padding: .7rem 1rem; background: #fef3c7; color: #713f12; border-radius: .7rem; }
.blog-categories { margin-block: 2rem; }
.blog-categories[hidden], .blog-card[hidden] { display: none; }
.blog-categories button { min-height: 44px; padding: .5rem 1rem; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--ink-muted); cursor: pointer; }
.blog-categories button:hover { border-color: var(--primary); }
.blog-categories button[aria-pressed="true"] { border-color: var(--primary-strong); background: var(--primary-strong); color: #fff; }
.blog-group { margin-block: 3rem; scroll-margin-top: 2rem; }
.blog-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.blog-card { border: 1px solid var(--line); background: var(--paper); border-radius: 1.2rem; overflow: hidden; text-decoration: none; transition: border-color .15s; }
.blog-card:hover { border-color: var(--primary); }
.blog-card img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; height: auto; }
.blog-card__body { padding: 1.4rem; }
.blog-card h3 { margin: .5rem 0; font-size: 1.25rem; line-height: 1.5; }
.blog-card p { color: var(--ink-muted); }
.blog-card time { color: var(--ink-muted); font-size: .8rem; }
.home-blog { padding-block: 4rem; }
.home-blog .section-heading { margin-bottom: 1.5rem; }
.home-blog__all { display: inline-block; margin-top: 1.5rem; color: var(--primary-strong); }
.blog-empty { padding: 2rem; background: var(--paper); border-radius: 1rem; }
a:focus-visible, summary:focus-visible, .blog-categories button:focus-visible { outline: 3px solid var(--primary); outline-offset: 4px; }
@media (max-width: 900px) {
  .blog-reading-layout { grid-template-columns: minmax(0, 740px); gap: 1.5rem; }
  .blog-toc { position: static; }
  .blog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .blog-grid { grid-template-columns: 1fr; }
  .blog-main { padding-top: .5rem; }
  .blog-cover { border-radius: 1rem; margin-bottom: 2rem; }
  .blog-article__header { margin-bottom: 1.5rem; }
  .blog-prose { font-size: 1rem; }
  .blog-languages { gap: .6rem 1rem; }
}
