article time { color: var(--color-muted); }

.reading-progress {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: var(--color-accent);
  transform-origin: 0 50%;
  z-index: 100;
  animation: read-scale linear;
  animation-timeline: scroll(root);
}

@keyframes read-scale {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

pre[class*="language-"],
code[class*="language-"] {
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 0.9em;
  color: var(--color-code-fg);
  background: var(--color-code-bg);
}

pre[class*="language-"] {
  padding: 1rem;
  overflow-x: auto;
  border-radius: 4px;
}

:not(pre) > code { padding: 0.1em 0.3em; border-radius: 3px; background: var(--color-code-bg); }

/* Map Prism tokens → Vim highlight groups (Vim links: String/Number/Boolean→Constant, Keyword/Operator→Statement, Function→Identifier) */
.token.comment, .token.prolog, .token.doctype, .token.cdata { color: var(--color-syntax-comment); }
.token.string, .token.char, .token.regex, .token.number, .token.boolean, .token.constant, .token.attr-value { color: var(--color-syntax-constant); }
.token.keyword, .token.operator, .token.selector, .token.important, .token.atrule { color: var(--color-syntax-statement); font-weight: bold; }
.token.function, .token.variable, .token.property, .token.attr-name { color: var(--color-syntax-identifier); font-weight: bold; }
.token.class-name, .token.builtin { color: var(--color-syntax-type); font-weight: bold; }
.token.tag, .token.namespace, .token.symbol { color: var(--color-syntax-preproc); }
.token.entity, .token.url { color: var(--color-syntax-special); }
.token.punctuation { color: var(--color-code-fg); }
