/**
 * 评论按钮样式
 * 颜色通过 --sc-ui-* 变量自动跟随 light/dark 模式
 */
.sc-comment-button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border: var(--sc-menu-border-width, 1px) solid var(--sc-menu-border-color, rgba(0, 0, 0, 0.08));
  border-radius: var(--sc-menu-radius, 8px);
  background: var(--sc-menu-surface, #fff);
  color: var(--sc-ui-text-tertiary, rgba(0, 0, 0, 0.5));
  box-shadow: var(--sc-menu-shadow);
  cursor: pointer;
  pointer-events: auto;
  transition: background 0.15s ease, color 0.15s ease;
}
@media (hover: hover) {
  .sc-comment-button:hover {
    /*
       * 与 block-menu capsule 对齐：hover 只改背景色，图标颜色保持不变。
       * 不直接用透明 hover 色，而是在 surface 基础上混入少量 text 色，
       * 避免胶囊下方文档内容穿透显示。
       */
    background: color-mix(in srgb, var(--sc-menu-surface) 96%, var(--sc-ui-text));
  }
}
.sc-comment-button-icon {
  width: 14px;
  height: 14px;
}

/**
 * 评论面板（aside）布局样式（评论插件维护）
 *
 * 由 plugin 自己用 Portal + DOM 把 `<div class="sc-comment-aside">` 挂到
 * `.sc-editor-content` 末尾；aside 作为该滚动容器的 absolute 子节点钉在右沿，
 * 高度由 plugin 用 JS（ResizeObserver）同步为正文内容总高度。
 *
 * 仅支持 containerScroll 模式（编辑器自身管滚动）。
 *
 * 布局策略：
 * - 评论面板激活时，`.sc-editor-content` 上下左右 padding 全部清零，让
 *   aside 贴住 viewport 的所有内沿；
 * - editable 自身用 padding 把上下左 padding 重新承担起来，padding-right
 *   留给 aside 占位 + gap；
 * - aside 用 `position: absolute; top:0; right:0` 钉在 content 内部右沿，
 *   `top:0` 的原点 = 内容顶部，content 滚动时 absolute 子节点随内容一起位移
 *   （与 `.sc-editor-content-overlay` / FloatingToolbar 同一机制），因此 aside
 *   与正文共享同一滚动容器、单滚动条；height 由 JS 同步为内容总高度。
 *
 * 为什么挂在 .sc-editor-content 而不是 .sc-root-editable：
 *   editable 是 contentEditable=true 根节点，把 aside 挂进去会让它变成富文本 CE
 *   内的「contenteditable=false 岛屿」，浏览器按原子单元处理选区，卡片内文字无法
 *   正常划选。挂到非编辑的 content 后 aside 脱离 CE 选区上下文，文字可正常选中。
 *   代价：content 是 overflow 滚动容器，absolute 子节点 inset 拿不到 scrollHeight，
 *   故 aside 高度改由 JS 同步 editable.offsetHeight。
 *
 * 「关掉面板」语义：
 *   plugin 在 `open=false` 时把 React 子树渲染成 null，但 aside DOM 节点仍然
 *   保留（避免反复挂卸节点）。插件将实际非空状态投影到 editor 根属性：
 *   - aside 有 React 渲染产物（面板打开） → 让 editable 让位 + 撤 content padding
 *   - aside 为空（面板关闭）              → editable 不让位、content 复原默认 padding
 *
 * 所有 class 和 CSS 变量可被外部覆盖：
 *   --sc-comment-aside-width    面板宽度
 *   --sc-comment-aside-gap      编辑区与面板之间的预留按钮位宽度
 *   --sc-comment-aside-border   面板左侧分隔线颜色
 */
/* 面板打开时（aside 内有内容）：清掉 .sc-editor-content 的所有 padding，
 * 让 aside 直接贴住 viewport 的顶/右/底沿，与飞书一致。 */
.sc-editor.is-container-scroll[data-sc-comment-aside-open] > .sc-editor-content {
  padding: 0;
}
/* 面板打开时：editable 自己把上下左 padding 加回来，padding-right 让出 aside 占位。
 * aside 是 content（已 position:relative）的 absolute 子节点，无需 editable 再做
 * 定位上下文，故 editable 仅调整 padding。 */
.sc-editor.is-container-scroll[data-sc-comment-aside-open] > .sc-editor-content > .sc-root-editable {
  padding: var(--sc-editor-padding-top) calc(var(--sc-comment-aside-width, 320px) + var(--sc-comment-aside-gap, 36px)) var(--sc-editor-padding-bottom) var(--sc-editor-padding-left);
}
/* aside 容器：absolute 钉在 content 内部右沿。
 * - top:0 → 原点 = 内容顶部，随内容滚动（content 内 absolute 子节点会随滚动位移）
 * - height → 由 JS 同步为正文内容总高度（= editable.offsetHeight），边框贯穿全文
 * - right:0 → 贴住 content 右沿（padding 已清零，视觉上即 viewport 右边） */
.sc-comment-aside {
  position: absolute;
  top: 0;
  right: 0;
  width: var(--sc-comment-aside-width, 320px);
  border-left: 1px solid var(--sc-comment-aside-border, #e5e7eb);
  pointer-events: auto;
  /* aside 已脱离 editable 的 contenteditable 选区路由（挂在非编辑的 content 下），
   * 这里显式声明 user-select: text，确保卡片内文字可正常选中复制。 */
  -webkit-user-select: text;
          user-select: text;
  transition: width 0.2s ease, border-width 0.2s ease, opacity 0.2s ease;
  /* 面板关闭（容器为空）：插件移除根布局属性，这里仅处理 aside 自身的视觉。 */
}
.sc-comment-aside:empty {
  display: none;
}
/* ── floating-panel 模式：整体面板悬浮在编辑区右侧上层 ──────────────
 *
 * 挂载到 .sc-editor-content（与 aside 同容器），但不设置 aside 布局属性，编辑区全宽。
 *
 * 与 .sc-comment-aside 的区别：
 * - class 名不同 → 不触发 editable padding 让位 → 编辑区保持全宽
 * - 不透明背景 + 阴影 → 面板浮在上层，遮挡右侧内容（但不缩窄编辑区）
 * - height 仍由 JS（useCommentPanelSideEffects）同步为内容总高度
 *
 * absolute + JS 高度同步的机制与 aside 完全一致，因此内部 header 的
 * `sticky top:0` 能正常工作（相对于 .sc-editor-content 滚动视口固定）。
 * 背景必须不透明，否则滚动时编辑器内容透出导致视觉镂空。 */
.sc-comment-panel-floating {
  position: absolute;
  top: 0;
  right: 0;
  width: var(--sc-comment-aside-width, 320px);
  pointer-events: auto;
  -webkit-user-select: text;
          user-select: text;
  background: var(--sc-comment-panel-floating-bg, #fff);
  box-shadow: -2px 0 8px rgba(0, 0, 0, 0.06);
  border-left: 1px solid var(--sc-comment-aside-border, #e5e7eb);
  /* height 由 JS（useCommentPanelSideEffects）同步为 editable.offsetHeight，
   * 使面板与内容等高、左侧边框贯穿全文（与 aside 一致）。 */
}
.sc-comment-panel-floating:empty {
  display: none;
}
/* ── floating-cards 模式：透明容器，卡片各自悬浮 ───────────────────
 *
 * 挂载到 .sc-editor-content-overlay，容器本身透明且 pointer-events: none
 * （不阻挡编辑器交互），业务方渲染的每张卡片各自设 pointer-events: auto。
 * 无高度同步（卡片各自定位，不需要容器贯穿全文）。 */
.sc-comment-cards-floating {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  pointer-events: none;
  -webkit-user-select: text;
          user-select: text;
}
.sc-comment-cards-floating:empty {
  display: none;
}

/**
 * 划词评论（inline discussion）视觉规则
 *
 * 多 mark 嵌套方案：
 * - 每个 `['m', id]` mark 渲染成一个 `discussion-id-<id>` class
 * - level 用 `data-discussion-level` attribute 表达（mark 数量）
 * - 背景色 + 下划线通过 inline style 写入（由 commentFormatRenderer.encodeToken）
 *
 * 与块级评论分开处理，定义独立的 inline token：
 * - --sc-inline-discussion-bg: 正常（单评论）背景色
 * - --sc-inline-discussion-bg-stacked: 重叠（多评论）背景色
 * - --sc-inline-discussion-bg-active: 激活加深背景色
 * - --sc-inline-discussion-underline: 下划线色
 *
 * 设计稿值：背景 #C2B400，下划线 #F3EC91
 */
:root {
  --sc-inline-discussion-bg: rgba(255, 202, 0, 0.3);
  --sc-inline-discussion-bg-stacked: rgba(255, 202, 0, 0.45);
  --sc-inline-discussion-bg-active: rgba(255, 202, 0, 0.3);
  --sc-inline-discussion-underline: #ffca00;
  --sc-inline-discussion-underline-width: 2px;
  --sc-inline-discussion-underline-gap: 1px;
  --sc-inline-discussion-underline-active: #ffca00;
  --sc-inline-selection-highlight-underline: #ffca00;
}
[class*='discussion-id-'] {
  transition: background 0.2s ease, border 0.2s ease;
}
:where([class*='discussion-id-']) {
  padding-bottom: var(--sc-inline-discussion-underline-gap, 1px);
}
.sc-deco-comment-selection-highlight {
  background-color: var(--sc-inline-discussion-bg-active);
  border-bottom: 2px solid var(--sc-inline-selection-highlight-underline);
  padding-bottom: 1px;
}
.sc-deco-comment-selection-highlight::selection {
  background: transparent;
}

/**
 * Review 模式差异样式（评论插件维护）
 *
 * 这套 class 标记由 BlockShell 根据 `block.props.review` / `block.props.discussionIds`
 * 自动附加。本文件由 `@tencent/smart-doc-plugin-comment` 提供并随插件一同被 import 注入，
 * 编辑器核心（packages/editor）不再持有审阅 / 评论的视觉规则。
 *
 * 所有 class 和 CSS 变量均可被外部覆盖。变量命名：--sc-review-{role}-{property}
 *
 * 暗色主题：通过 `:where([data-sc-theme='dark'])` 重写变量默认值，
 * class 本身仅消费变量、无颜色字面量；外部主题覆盖只需改变量即可。
 */
:where(.sc-editor) {
  --sc-review-insert-border: #22c55e;
  --sc-review-insert-bg: rgba(34, 197, 94, 0.08);
  --sc-review-delete-border: #ef4444;
  --sc-review-delete-bg: rgba(239, 68, 68, 0.08);
  --sc-review-update-border: #eab308;
  --sc-review-update-bg: rgba(234, 179, 8, 0.08);
  --sc-review-inline-insert-underline-color: #48dd7f;
  --sc-review-inline-insert-text-color: inherit;
  --sc-review-inline-delete-color: #6b7280;
  --sc-review-inline-format-color: #ca8a04;
  --sc-discussion-bg: rgba(255, 202, 0, 0.3);
  --sc-discussion-underline-color: #ffca00;
  --sc-discussion-container-border: #ffca00;
}
:where([data-sc-theme='dark']) {
  --sc-review-insert-bg: rgba(34, 197, 94, 0.18);
  --sc-review-delete-bg: rgba(239, 68, 68, 0.18);
  --sc-review-update-bg: rgba(234, 179, 8, 0.2);
  --sc-review-inline-insert-underline-color: #43c773;
  --sc-review-inline-insert-text-color: inherit;
  --sc-review-inline-delete-color: #9ca3af;
  --sc-review-inline-format-color: #facc15;
  --sc-discussion-bg: rgba(255, 202, 0, 0.3);
  --sc-discussion-underline-color: #ffca00;
  --sc-discussion-container-border: #ffca00;
}
.sc-review-insert {
  border-left: 2px solid var(--sc-review-insert-border);
  border-radius: 4px;
  padding-left: 4px;
}
.sc-review-delete {
  border-left: 2px solid var(--sc-review-delete-border);
  border-radius: 4px;
  padding-left: 4px;
  text-decoration: line-through;
  opacity: 0.7;
}
.sc-review-update {
  border-left: 2px solid var(--sc-review-update-border);
  border-radius: 4px;
  padding-left: 4px;
}
:where(.sc-review-insert) {
  background-color: var(--sc-review-insert-bg);
}
:where(.sc-review-delete) {
  background-color: var(--sc-review-delete-bg);
}
:where(.sc-review-update) {
  background-color: var(--sc-review-update-bg);
}
.sc-review-insert .sc-review-insert,
.sc-review-insert .sc-review-delete,
.sc-review-insert .sc-review-update,
.sc-review-delete .sc-review-insert,
.sc-review-delete .sc-review-delete,
.sc-review-delete .sc-review-update,
.sc-review-update .sc-review-insert,
.sc-review-update .sc-review-delete,
.sc-review-update .sc-review-update {
  border-left: 0;
  background-color: transparent;
}
.sc-review-locked {
  -webkit-user-select: text;
          user-select: text;
  cursor: pointer;
}
.sc-review-locked [contenteditable='true'] {
  caret-color: transparent;
}
.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-text:not(.sc-block-code) .sc-block-text-content,
.sc-comment-clicked.is-comment-clicked-text:not(.sc-block-code) .sc-block-text-content {
  -webkit-text-decoration: underline solid var(--sc-discussion-underline-color);
          text-decoration: underline solid var(--sc-discussion-underline-color);
  text-underline-offset: 3px;
  text-decoration-thickness: 2px;
  -webkit-text-decoration-skip: ink;
          text-decoration-skip-ink: auto;
}
.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-text:not(.sc-block-code) .sc-block-text-content:empty,
.sc-comment-clicked.is-comment-clicked-text:not(.sc-block-code) .sc-block-text-content:empty {
  text-decoration: none;
}
.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-text:not(.sc-block-code):hover .sc-discussion-text-deco,
.sc-comment-preview.is-comment-preview-text:not(.sc-block-code) .sc-discussion-text-deco,
.sc-comment-clicked.is-comment-clicked-text:not(.sc-block-code) .sc-discussion-text-deco {
  background: var(--sc-discussion-bg);
}
.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed {
  cursor: pointer;
}
.sc-block-image.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed.is-selected .sc-image-media,
.sc-block-image.sc-comment-preview.is-comment-preview-embed.is-selected .sc-image-media,
.sc-block-image.sc-comment-clicked.is-comment-clicked-embed.is-selected .sc-image-media {
  outline-color: var(--sc-discussion-container-border);
}
.sc-block-image.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed .sc-image-media,
.sc-block-image.sc-comment-preview.is-comment-preview-embed .sc-image-media,
.sc-block-image.sc-comment-clicked.is-comment-clicked-embed .sc-image-media {
  border-radius: var(--sc-block-radius);
}
.sc-block-media.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed.is-selected .sc-media-body::before,
.sc-block-media.sc-comment-preview.is-comment-preview-embed.is-selected .sc-media-body::before,
.sc-block-media.sc-comment-clicked.is-comment-clicked-embed.is-selected .sc-media-body::before {
  border-color: var(--sc-discussion-container-border);
}
.sc-block-image.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed .sc-image-media,
.sc-block-image.sc-comment-preview.is-comment-preview-embed .sc-image-media,
.sc-block-image.sc-comment-clicked.is-comment-clicked-embed .sc-image-media,
.sc-block-media.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed .sc-media-body,
.sc-block-media.sc-comment-preview.is-comment-preview-embed .sc-media-body,
.sc-block-media.sc-comment-clicked.is-comment-clicked-embed .sc-media-body {
  box-shadow: 0 0 0 1px var(--sc-discussion-container-border);
  transition: box-shadow 0.15s ease;
}
.sc-block-image.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed:hover .sc-image-media,
.sc-block-image.sc-comment-preview.is-comment-preview-embed .sc-image-media,
.sc-block-image.sc-comment-clicked.is-comment-clicked-embed .sc-image-media,
.sc-block-media.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed:hover .sc-media-body,
.sc-block-media.sc-comment-preview.is-comment-preview-embed .sc-media-body,
.sc-block-media.sc-comment-clicked.is-comment-clicked-embed .sc-media-body {
  box-shadow: 0 0 0 1px var(--sc-discussion-container-border), 0 0 0 2px var(--sc-discussion-container-border);
}
.sc-block-callout.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment),
.sc-block-quote.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment),
.sc-block-callout.sc-comment-preview,
.sc-block-quote.sc-comment-preview,
.sc-block-callout.sc-comment-clicked,
.sc-block-quote.sc-comment-clicked,
.sc-block-code.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment) > .sc-code-block-content,
.sc-block-code.sc-comment-preview > .sc-code-block-content,
.sc-block-code.sc-comment-clicked > .sc-code-block-content,
.sc-block-mermaid.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed .sc-mermaid-editor,
.sc-block-mermaid.sc-comment-preview.is-comment-preview-embed .sc-mermaid-editor,
.sc-block-mermaid.sc-comment-clicked.is-comment-clicked-embed .sc-mermaid-editor,
.sc-block-file.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed .sc-file-card,
.sc-block-file.sc-comment-preview.is-comment-preview-embed .sc-file-card,
.sc-block-file.sc-comment-clicked.is-comment-clicked-embed .sc-file-card {
  border-color: var(--sc-discussion-container-border);
}
.sc-block-callout.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment),
.sc-block-quote.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment),
.sc-block-callout.sc-comment-preview,
.sc-block-quote.sc-comment-preview,
.sc-block-callout.sc-comment-clicked,
.sc-block-quote.sc-comment-clicked,
.sc-block-code.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment) > .sc-code-block-content,
.sc-block-code.sc-comment-preview > .sc-code-block-content,
.sc-block-code.sc-comment-clicked > .sc-code-block-content {
  transition: box-shadow 0.15s ease;
}
.sc-block-file.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed.is-selected .sc-file-card,
.sc-block-file.sc-comment-preview.is-comment-preview-embed.is-selected .sc-file-card,
.sc-block-file.sc-comment-clicked.is-comment-clicked-embed.is-selected .sc-file-card {
  outline-color: var(--sc-discussion-container-border);
}
.sc-block-callout.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment):hover,
.sc-block-quote.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment):hover,
.sc-block-callout.sc-comment-preview,
.sc-block-quote.sc-comment-preview,
.sc-block-callout.sc-comment-clicked,
.sc-block-quote.sc-comment-clicked,
.sc-block-code.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment):hover > .sc-code-block-content,
.sc-block-code.sc-comment-preview > .sc-code-block-content,
.sc-block-code.sc-comment-clicked > .sc-code-block-content,
.sc-block-mermaid.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed:hover .sc-mermaid-editor,
.sc-block-mermaid.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed.is-selected .sc-mermaid-editor,
.sc-block-mermaid.sc-comment-preview.is-comment-preview-embed .sc-mermaid-editor,
.sc-block-mermaid.sc-comment-clicked.is-comment-clicked-embed .sc-mermaid-editor,
.sc-block-file.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed:hover .sc-file-card,
.sc-block-file.sc-has-discussion:is(.is-discussion-active, .sc-comment-anchor-active-comment).is-discussion-embed.is-selected .sc-file-card,
.sc-block-file.sc-comment-preview.is-comment-preview-embed .sc-file-card,
.sc-block-file.sc-comment-clicked.is-comment-clicked-embed .sc-file-card {
  box-shadow: 0 0 0 1px var(--sc-discussion-container-border);
}
[data-fmt-ar='insert'] {
  color: var(--sc-review-inline-insert-text-color);
  text-decoration: underline;
  text-decoration-color: var(--sc-review-inline-insert-underline-color);
  text-underline-offset: 2px;
}
[data-fmt-ar='delete'] {
  color: var(--sc-review-inline-delete-color);
  text-decoration: line-through;
}
[data-fmt-ar='format'] {
  -webkit-text-decoration: underline wavy var(--sc-review-inline-format-color);
          text-decoration: underline wavy var(--sc-review-inline-format-color);
  text-underline-offset: 3px;
  -webkit-text-decoration-skip-ink: none;
          text-decoration-skip-ink: none;
}
:where(.sc-editor) {
  --sc-review-diff-collapsed-bg: rgba(200, 243, 185, 0.08);
  --sc-review-diff-collapsed-border: #c8f3b9;
  --sc-review-diff-collapsed-bg-hover: rgba(200, 243, 185, 0.21);
  --sc-review-diff-collapsed-border-hover: #b4e7a2;
  --sc-review-diff-delete-placeholder: '内容已被删除';
  --sc-review-diff-collapsed-gap: 4px;
}
:where([data-sc-theme='dark']) {
  --sc-review-diff-collapsed-bg: rgba(200, 243, 185, 0.12);
  --sc-review-diff-collapsed-border: #c8f3b9;
  --sc-review-diff-collapsed-bg-hover: rgba(200, 243, 185, 0.25);
  --sc-review-diff-collapsed-border-hover: #b4e7a2;
}
.sc-review-diff-collapsed {
  position: relative;
  border: 1px dashed var(--sc-review-diff-collapsed-border);
  border-radius: 12px;
  padding-left: 4px;
}
.sc-review-diff-collapsed:hover {
  border-color: var(--sc-review-diff-collapsed-border-hover);
}
.sc-review-diff-collapsed::before {
  content: var(--sc-review-diff-collapsed-label, '等待确认');
  position: absolute;
  bottom: calc(100% + 4px);
  right: 0;
  padding: 0 8px;
  font-size: 12px;
  line-height: 22px;
  color: rgba(0, 0, 0, 0.7);
  background: #cbcbcb;
  border-radius: 8px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
  white-space: nowrap;
  z-index: 1;
}
.sc-review-diff-collapsed:hover::before {
  opacity: 1;
}
.sc-review-diff-collapsed [data-fmt-ar='delete'] {
  display: none;
}
.sc-review-diff-collapsed [data-fmt-ar='insert'] {
  text-decoration: none;
  color: inherit;
}
.sc-review-diff-collapsed [data-fmt-ar='format'] {
  text-decoration: none;
}
.sc-block-callout.sc-review-diff-collapsed {
  border: 0;
  border-radius: 0;
  padding-left: 0;
  outline: 1px dashed var(--sc-review-diff-collapsed-border);
  outline-offset: var(--sc-review-diff-collapsed-gap);
  transition: outline-color 0.15s ease, box-shadow 0.15s ease;
  box-shadow: 0 0 0 var(--sc-review-diff-collapsed-gap) var(--sc-review-diff-collapsed-bg);
}
.sc-block-callout.sc-review-diff-collapsed:hover {
  border-color: transparent;
  outline-color: var(--sc-review-diff-collapsed-border-hover);
  box-shadow: 0 0 0 var(--sc-review-diff-collapsed-gap) var(--sc-review-diff-collapsed-bg);
}
.sc-block-callout.sc-review-diff-collapsed::before {
  bottom: calc(100% + var(--sc-review-diff-collapsed-gap) + 5px);
}
:where(.sc-review-diff-collapsed) {
  background-color: var(--sc-review-diff-collapsed-bg);
}
.sc-review-diff-collapsed-delete > * {
  visibility: hidden;
  height: 0;
  overflow: hidden;
  margin: 0;
  padding: 0;
}
.sc-review-diff-collapsed-delete::after {
  content: var(--sc-review-diff-delete-placeholder, '内容已被删除');
  color: #9ca3af;
  font-style: italic;
}
.sc-review-diff-collapsed-delete-hidden {
  display: none;
}
.sc-review-diff-collapsed .sc-review-diff-collapsed {
  border: 0;
  border-radius: 0;
  padding-left: 0;
  background-color: transparent;
  outline: 0;
}
.sc-review-diff-collapsed .sc-review-diff-collapsed:hover {
  background-color: transparent;
  border-color: transparent;
  outline-color: transparent;
}
.sc-review-diff-collapsed .sc-review-diff-collapsed::before {
  content: none;
}
.sc-review-diff-collapsed .sc-review-diff-collapsed-delete::after {
  display: none;
}

