
.article-hero {
  padding-top: calc(var(--header-h) + clamp(3rem, 7vw, 5.5rem));
  padding-bottom: var(--space-7);
}
.article-hero__inner { max-width: 800px; display: grid; gap: var(--space-5); }
.article-hero h1 { font-size: var(--fs-3xl); }
.article-meta {
  display: flex; flex-wrap: wrap; gap: var(--space-4) var(--space-5);
  align-items: center;
  padding-top: var(--space-4);
  border-top: 1px solid var(--line);
  font-size: var(--fs-sm); color: var(--text-muted);
}
.article-meta__author { display: flex; align-items: center; gap: var(--space-3); }
.article-meta__avatar { width: 38px; height: 38px; border-radius: 50%; overflow: hidden; background: var(--surface-2); flex: none; }
.article-meta__avatar img { width: 100%; height: 100%; object-fit: cover; }

.article-cover { border-radius: var(--r-lg); overflow: hidden; aspect-ratio: 21/9; background: var(--surface-2); }
.article-cover img { width: 100%; height: 100%; object-fit: cover; }

/* ---- Layout with sidebar ------------------------------------------------- */
.article-layout { display: grid; gap: var(--space-7); }
@media (min-width: 1060px) {
  .article-layout { grid-template-columns: 220px minmax(0, 1fr); gap: clamp(3rem, 6vw, 6rem); align-items: start; }
}

.toc { display: none; }
@media (min-width: 1060px) {
  .toc { display: grid; gap: var(--space-3); position: sticky; top: calc(var(--header-h) + 3rem); }
}
.toc__title {
  font-family: var(--font-mono); font-size: var(--fs-xs);
  letter-spacing: .14em; text-transform: uppercase; color: var(--text-muted);
  padding-bottom: var(--space-3); border-bottom: 1px solid var(--line);
}
.toc a {
  font-size: var(--fs-sm); color: var(--text-muted);
  padding-left: var(--space-3);
  border-left: 2px solid var(--line);
  padding-block: .3rem;
  transition: color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
  display: block;
}
.toc a:hover { color: var(--text); }
.toc a.is-active { color: var(--accent); border-left-color: var(--accent); }

/* ---- Prose --------------------------------------------------------------- */
.prose { max-width: 68ch; }
.prose > * + * { margin-top: var(--space-5); }
.prose p { font-size: var(--fs-md); line-height: 1.75; color: var(--text); }
.prose h2 {
  font-size: var(--fs-xl);
  margin-top: var(--space-8);
  scroll-margin-top: calc(var(--header-h) + 2rem);
}
.prose h3 { font-size: var(--fs-lg); margin-top: var(--space-7); }
.prose a { color: var(--accent); border-bottom: 1px solid color-mix(in srgb, var(--accent) 40%, transparent); }
.prose a:hover { border-bottom-color: var(--accent); }
.prose strong { font-weight: 600; }
.prose ul, .prose ol { display: grid; gap: var(--space-3); padding-left: 1.15rem; }
.prose ul li { list-style: disc; }
.prose ol li { list-style: decimal; }
.prose li { font-size: var(--fs-md); line-height: 1.7; }
.prose li::marker { color: var(--accent); }

.prose blockquote {
  border-left: 2px solid var(--accent);
  padding: var(--space-2) 0 var(--space-2) var(--space-5);
  margin-block: var(--space-7);
  font-family: var(--font-display);
  font-size: var(--fs-lg);
  line-height: 1.45;
  letter-spacing: -0.015em;
}
.prose figure { margin-block: var(--space-7); }
.prose figure img { border-radius: var(--r-md); width: 100%; }
.prose figcaption { font-size: var(--fs-xs); color: var(--text-muted); margin-top: var(--space-3); }
.prose hr { height: 1px; background: var(--line); border: 0; margin-block: var(--space-7); }

.pull {
  font-family: var(--font-display);
  font-size: var(--fs-xl);
  line-height: 1.35;
  letter-spacing: -0.02em;
  color: var(--accent);
  padding-block: var(--space-6);
  border-block: 1px solid var(--line);
  margin-block: var(--space-7);
}

/* ---- Share / footer ------------------------------------------------------ */
.article-foot {
  margin-top: var(--space-8);
  padding-top: var(--space-6);
  border-top: 1px solid var(--line);
  display: flex; flex-wrap: wrap; gap: var(--space-5);
  justify-content: space-between; align-items: center;
}
.share { display: flex; gap: var(--space-2); align-items: center; }

.author-box {
  display: flex; gap: var(--space-5); align-items: flex-start;
  padding: var(--space-6);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--surface);
  margin-top: var(--space-7);
}
.author-box__avatar { width: 64px; height: 64px; border-radius: 50%; overflow: hidden; flex: none; background: var(--surface-2); }
.author-box__avatar img { width: 100%; height: 100%; object-fit: cover; }
.author-box h3 { font-size: var(--fs-md); font-family: var(--font-body); font-weight: 500; letter-spacing: 0; }
.author-box p { font-size: var(--fs-sm); color: var(--text-muted); margin-top: var(--space-2); }
