/* 心华.com — 正文排版单一来源(SSR 详情页 / 编辑器可视区 / 沙箱预览 iframe 共用)
   作用于 .xhrich 容器: 编辑器可视区 .xh-editor__area、详情页 .detail-content.rich、
   沙箱预览 srcdoc 的 <body> 都挂这个 class, 保证"预览=最终渲染"。
   颜色用字面量(不依赖 :root 变量), 因为沙箱 iframe 拿不到主站样式表变量。 */
.xhrich{
  color:#2b2b46;font-size:1.02rem;line-height:1.95;overflow-wrap:break-word;
}
.xhrich p{margin:10px 0}
.xhrich h1,.xhrich h2,.xhrich h3,.xhrich h4{color:#26264a;line-height:1.35}
.xhrich h1{font-size:1.7rem;font-weight:800;margin:20px 0 10px}
.xhrich h2{font-size:1.5rem;font-weight:800;margin:18px 0 8px}
.xhrich h3{font-size:1.2rem;font-weight:700;margin:14px 0 6px}
.xhrich h4{font-size:1.05rem;font-weight:700;margin:12px 0 4px}
.xhrich blockquote{
  border-left:3px solid #e0407e;margin:14px 0;padding:4px 16px;
  color:#54566e;background:#fff2f7;border-radius:0 10px 10px 0;
}
.xhrich ul,.xhrich ol{margin:10px 0;padding-left:26px}
.xhrich li{margin:4px 0}
.xhrich code{
  background:#f4f2f8;border-radius:6px;padding:1px 7px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.86em;
  color:#b01e5c;
}
.xhrich pre{
  background:#f4f2f8;border-radius:10px;padding:12px 16px;overflow-x:auto;margin:14px 0;
  line-height:1.7;
}
.xhrich pre code{background:none;padding:0;color:inherit;font-size:.88rem}
/* 代码块运行时外壳：详情页、编辑器预览、隔离 iframe 共用。
   工具栏和高亮 span 只由 rich-code.js 临时生成，保存正文时会完整还原源码。 */
.xhrich .xh-code-shell{
  max-width:100%;margin:14px 0;border:1px solid #e5dfed;border-radius:12px;
  overflow:hidden;background:#f7f5fa;box-shadow:0 5px 18px rgba(52,43,82,.07);
}
.xhrich .xh-code-tools{
  min-height:38px;box-sizing:border-box;display:flex;align-items:center;
  justify-content:space-between;gap:12px;padding:5px 7px 5px 14px;
  border-bottom:1px solid #e5dfed;background:#eeeaf4;white-space:nowrap;
  user-select:none;-webkit-user-select:none;
}
.xhrich .xh-code-language{
  min-width:0;overflow:hidden;text-overflow:ellipsis;color:#68647b;
  font:700 .72rem/1.2 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.035em;text-transform:none;
}
.xhrich .xh-code-copy{
  flex:0 0 auto;min-width:62px;min-height:30px;border:1px solid #d5ccdf;
  border-radius:8px;padding:4px 11px;background:#fff;color:#594c73;cursor:pointer;
  font:700 .75rem/1.2 'PingFang SC','Microsoft YaHei',system-ui,sans-serif;
  transition:background .16s,border-color .16s,color .16s,transform .16s;
}
.xhrich .xh-code-copy:hover{background:#fff2f7;border-color:#e0407e;color:#b01e5c}
.xhrich .xh-code-copy:active{transform:translateY(1px)}
.xhrich .xh-code-copy:focus-visible{outline:2px solid #e0407e;outline-offset:2px}
.xhrich .xh-code-copy:disabled{cursor:default;opacity:1}
.xhrich .xh-code-copy.is-ok{border-color:#58a889;color:#24785e;background:#effaf5}
.xhrich .xh-code-copy.is-error{border-color:#d56a6a;color:#a72d2d;background:#fff1f1}
.xhrich .xh-code-shell>pre{
  width:100%;max-width:100%;box-sizing:border-box;margin:0;border-radius:0;
  padding:14px 16px 16px;background:#f7f5fa;overflow-x:auto;
  -webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;
}
.xhrich .xh-code-shell>pre>code{display:block;min-width:max-content;color:#353348}
/* highlight.js token 主题：取站点的靛紫/玫红色系，颜色不用主页面变量以兼容沙箱。 */
.xhrich .hljs-comment,.xhrich .hljs-quote{color:#858197;font-style:italic}
.xhrich .hljs-keyword,.xhrich .hljs-selector-tag,.xhrich .hljs-subst{
  color:#8b35a7;font-weight:700
}
.xhrich .hljs-number,.xhrich .hljs-literal,.xhrich .hljs-variable,
.xhrich .hljs-template-variable,.xhrich .hljs-tag .hljs-attr{color:#c23f69}
.xhrich .hljs-string,.xhrich .hljs-doctag,.xhrich .hljs-regexp,
.xhrich .hljs-addition,.xhrich .hljs-attribute{color:#167e72}
.xhrich .hljs-title,.xhrich .hljs-section,.xhrich .hljs-selector-id,
.xhrich .hljs-selector-class,.xhrich .hljs-function .hljs-title{color:#325fb5;font-weight:700}
.xhrich .hljs-type,.xhrich .hljs-class .hljs-title,.xhrich .hljs-built_in,
.xhrich .hljs-builtin-name,.xhrich .hljs-symbol,.xhrich .hljs-bullet{color:#a15b18}
.xhrich .hljs-meta,.xhrich .hljs-meta .hljs-keyword{color:#7151a4}
.xhrich .hljs-deletion{color:#b52e43;background:#fbe7eb}
.xhrich .hljs-addition{background:#e8f7f1}
.xhrich .hljs-emphasis{font-style:italic}
.xhrich .hljs-strong{font-weight:800}
.xhrich .hljs-link{text-decoration:underline}
.xhrich table{border-collapse:collapse;width:100%;margin:14px 0}
.xhrich th,.xhrich td{border:1px solid #f0dde6;padding:7px 12px;text-align:left}
.xhrich th{background:#faf5f9;font-weight:700}
/* 手机: 表格块级化横滑, 列多不挤烂也不撑破正文 */
@media (max-width:640px){
  .xhrich table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .xhrich .xh-code-shell{border-radius:10px;margin:12px 0}
  .xhrich .xh-code-tools{min-height:36px;padding:4px 5px 4px 12px;gap:8px}
  .xhrich .xh-code-copy{min-width:58px;min-height:30px;padding:4px 9px}
  .xhrich .xh-code-shell>pre{padding:12px 13px 14px}
  .xhrich .xh-code-shell>pre>code{font-size:.82rem}
}
.xhrich img{max-width:100%;height:auto;border-radius:12px;margin:10px 0}
.xhrich figure{margin:16px auto;text-align:center;width:fit-content;max-width:100%}
.xhrich figure img{margin:0 auto;display:block}
.xhrich figcaption{font-size:.82rem;color:#9a9ab0;text-align:center;margin-top:6px}
.xhrich hr{border:0;border-top:1px solid #eae7f0;margin:22px 0}
.xhrich a{color:#b01e5c;text-decoration:underline}
.xhrich u{text-decoration:underline}
.xhrich s{text-decoration:line-through}
.xhrich audio{display:block;width:100%;max-width:420px;margin:10px 0}
/* 附件卡片(编辑器上传的下载卡片/音频块) */
.xhrich .xh-attach{display:inline-block;vertical-align:middle}
.xhrich .xh-attach--audio{display:block;margin:10px 0}
.xhrich a[download],.xhrich .xh-attach--file{
  display:inline-flex;align-items:center;gap:8px;margin:6px 0;padding:9px 16px;
  border:1px solid #f0dde6;border-radius:12px;background:#fff2f7;
  color:#b01e5c;font-weight:600;text-decoration:none;font-size:.9rem;
}
.xhrich a[download]:hover,.xhrich .xh-attach--file:hover{border-color:#e0407e;background:#fce4ee}
.xhrich a[download]::before,.xhrich .xh-attach--file::before{
  content:"";width:16px;height:16px;flex:0 0 auto;background:currentColor;
  -webkit-mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>') center/contain no-repeat;
  mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>') center/contain no-repeat;
}
/* KaTeX 块级公式: 与正文节奏一致, 可横滑 */
.xhrich .katex-display{margin:16px 0;overflow-x:auto;overflow-y:hidden;padding:2px 0}
