  .blog-section {
    padding: clamp(48px, 7vh, 88px) var(--pad-x) clamp(64px, 10vh, 120px);
    max-width: 1040px;
    margin: 0 auto;
  }

  .blog-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: clamp(28px, 4vw, 40px);
  }
  .blog-filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }
  .blog-filter-pill {
    display: inline-flex;
    align-items: center;
    padding: 10px 22px;
    border-radius: var(--control-radius);
    border: 1px solid var(--border);
    background: #fff;
    font-family: var(--font-jp);
    font-size: 16px;
    font-weight: 500;
    color: var(--fg);
    cursor: pointer;
    transition: background .2s, color .2s, border-color .2s;
  }
  .blog-filter-pill:hover { border-color: var(--fg); color: var(--fg); }
  .blog-filter-pill.is-active {
    background: #26272C;
    border-color: #26272C;
    color: #fff;
    font-weight: 700;
  }

  .blog-search-notice {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 24px;
    font-family: var(--font-jp);
    font-size: 14px;
    color: var(--muted);
  }
  .blog-search-notice a {
    color: var(--accent-deep);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
  }

  .blog-empty {
    text-align: center;
    padding: clamp(48px, 8vw, 80px) 20px;
    color: var(--muted);
    font-family: var(--font-jp);
    font-size: 14px;
    line-height: 2;
  }
  .blog-empty strong {
    display: block;
    color: var(--fg);
    font-size: 17px;
    margin-bottom: 12px;
    font-weight: 700;
  }

  .blog-error {
    background: rgba(179, 38, 30, .07);
    border: 1px solid rgba(179, 38, 30, .18);
    border-radius: var(--radius);
    padding: 18px 22px;
    color: #B3261E;
    font-family: var(--font-jp);
    font-size: 14px;
    line-height: 1.85;
  }

  .blog-error-detail {
    color: var(--muted-soft);
    font-size: 12px;
  }

  .blog-loading {
    text-align: center;
    padding: 48px 20px;
    color: var(--muted-soft);
    font-family: var(--font-en);
    font-size: 12px;
    letter-spacing: 0;
    text-transform: uppercase;
  }

  /* Skeleton grid shown while /api/blog is loading — mirrors .blog-grid's
     card shape so the swap from skeleton to real content doesn't jump. */
  .blog-skeleton-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(20px, 2.4vw, 32px);
  }
  @media (max-width: 880px) {
    .blog-skeleton-grid { grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 600px) {
    .blog-skeleton-grid { grid-template-columns: 1fr; }
  }
  /* Shared skeleton-card geometry lives in blog-components.css. */
  @media (max-width: 760px) {
    .blog-toolbar { align-items: stretch; flex-direction: column; }
    .blog-index-search { flex-basis: auto; }
  }
