/* ========================================================================== 文章正文排版 · prose 编辑杂志风:衬线标题 / 无衬线正文 / 细线分割 / 纯单色 ========================================================================== */ .prose { font-size: clamp(1rem, 0.4rem + 1.6vw, 1.125rem); line-height: 1.9; color: var(--ink-80); word-wrap: break-word; overflow-wrap: break-word; } .prose > * + * { margin-top: 1.4em; } /* 标题:衬线、常规字重、紧凑字距 */ .prose h2, .prose h3, .prose h4 { font-family: var(--font-display); font-weight: 400; letter-spacing: -0.02em; color: var(--ink); scroll-margin-top: calc(var(--nav-h) + 24px); } .prose h2 { font-size: clamp(1.5rem, 1rem + 2vw, 2rem); margin-top: 2.4em; padding-bottom: 0.45em; border-bottom: 1px solid var(--line); } .prose h3 { font-size: clamp(1.25rem, 0.9rem + 1.3vw, 1.5rem); margin-top: 2em; } .prose h4 { font-size: 1.1rem; margin-top: 1.8em; } .prose p { color: var(--ink-80); } .prose a { color: var(--ink); text-decoration: underline; text-decoration-color: rgba(28, 28, 28, 0.3); text-underline-offset: 3px; transition: text-decoration-color 0.2s; } .prose a:hover { text-decoration-color: var(--ink); } /* 列表 */ .prose ul, .prose ol { padding-left: 1.4em; } .prose ul { list-style: disc; } .prose ol { list-style: decimal; } .prose li { margin-top: 0.4em; } .prose li::marker { color: var(--ink-40); } /* 引用:左侧细线 + 次要灰 */ .prose blockquote { padding: 0.2em 0 0.2em 1.4em; margin: 1.8em 0; border-left: 1px solid var(--ink-40); background: none; color: var(--ink-60); font-style: normal; } .prose blockquote p { color: var(--ink-60); } /* 代码 */ .prose :not(pre) > code { font-family: var(--font-mono); font-size: 0.86em; padding: 2px 6px; border-radius: 0; background: rgba(28, 28, 28, 0.05); color: var(--ink); border: 1px solid rgba(28, 28, 28, 0.08); word-break: break-word; } .prose pre { padding: 1.2em 1.4em; border-radius: 0; overflow-x: auto; border: 1px solid var(--line); background: rgba(28, 28, 28, 0.025); box-shadow: none; font-size: 0.86rem; line-height: 1.75; } .prose pre code { font-family: var(--font-mono); background: none; border: 0; padding: 0; color: inherit; } /* 行内元素 */ .prose strong { font-weight: 600; color: var(--ink); } .prose em { font-style: italic; } .prose del { color: var(--ink-40); } .prose mark { background: var(--ink); color: var(--paper); padding: 1px 5px; border-radius: 0; } .prose kbd { font-family: var(--font-mono); font-size: 0.82em; padding: 2px 6px; border-radius: 0; background: transparent; border: 1px solid var(--ink-20); box-shadow: none; color: var(--ink); } /* 分割线 */ .prose hr { height: 1px; border: 0; margin: 2.6em 0; background: var(--line); } /* 图片:细线相框,不投影 */ .prose img { border-radius: 0; border: 1px solid var(--line); box-shadow: none; margin: 1.8em auto; } /* 表格 */ .prose table { width: 100%; margin: 1.8em 0; font-size: 0.9em; overflow-x: auto; display: block; } .prose thead { background: rgba(28, 28, 28, 0.04); } .prose th, .prose td { padding: 0.6em 0.9em; border: 1px solid var(--line); text-align: left; } .prose tbody tr:nth-child(even) { background: rgba(28, 28, 28, 0.02); } /* 移动端:代码块横向滚动不撑破布局 */ @media (max-width: 768px) { .prose pre { font-size: 0.82rem; padding: 1em; } .prose table { font-size: 0.85rem; } } /* KaTeX 数学公式 */ .prose .katex { font-size: 1.05em; } .prose .katex-display { margin: 1.4em 0; padding: 0.6em 0.2em; overflow-x: auto; overflow-y: hidden; } .prose .katex-display > .katex { font-size: 1.15em; }