
/* Direct port of Octo-Web MessageInput and ContextMenus component contracts. */
.wk-messageinput-box{width:100%;position:relative;display:flex;flex-direction:column;padding:0 16px 8px;box-sizing:border-box;flex:none}
.wk-messageinput-card{width:100%;min-height:40px;display:flex;flex-direction:column;background:var(--wk-bg-surface,var(--input-bg,#fff));border-radius:var(--eva-radius-panel);border:1px solid var(--eva-border-subtle);padding:var(--eva-space-3) var(--eva-space-4);box-sizing:border-box;cursor:text}
.wk-messageinput-card:focus-within{border-color:var(--eva-border-focus);box-shadow:0 0 0 2px var(--eva-action-primary-08)}
.wk-messageinput-row{display:flex;flex-direction:row;align-items:center;width:100%;min-height:24px}
.wk-messageinput-inputbox{position:relative;cursor:text;flex:1;min-width:0;display:flex;align-items:center;margin-right:16px}
.wk-messageinput-editor{width:100%;flex:1;min-width:0}
.wk-messageinput-editor .ProseMirror{padding:0;font-size:15px;line-height:24px;min-height:24px;max-height:120px;overflow-y:auto;outline:none;color:var(--wk-text-primary,var(--text-primary,#1c1c23));box-sizing:border-box;white-space:pre-wrap;overflow-wrap:anywhere}
.wk-messageinput-editor .ProseMirror.is-empty::before{content:attr(data-placeholder);float:left;color:var(--text-tertiary,#999);pointer-events:none;height:0}
.wk-messageinput-actionbox{display:flex;align-items:center;justify-content:flex-end;flex-shrink:0;gap:8px}
.wk-messageinput-actionitem{width:32px;height:32px;flex-shrink:0;display:flex;justify-content:center;align-items:center;cursor:pointer;color:var(--wk-icon-muted,#1c1c2366);transition:color .15s,opacity .15s;border-radius:var(--eva-radius-control)}
.wk-messageinput-actionitem:hover{color:var(--wk-text-primary,#1c1c23)}
.wk-messageinput-actionitem:active{opacity:.7}
.wk-messageinput-actionitem.wk-messageinput-hasValue{color:var(--wk-text-primary,#1c1c23)}
.wk-contextmenus{position:fixed;top:100px;left:0;background:var(--eva-surface-glass);backdrop-filter:blur(var(--eva-blur-floating));border:1px solid var(--eva-border-faint);z-index:12000;min-width:160px;border-radius:var(--eva-radius-panel);box-shadow:var(--eva-shadow-floating),var(--eva-shadow-hairline);padding:0;transform:scale(.92);opacity:0;transition:opacity .15s cubic-bezier(.16,1,.3,1),transform .15s cubic-bezier(.16,1,.3,1);visibility:hidden}
.wk-contextmenus-open{transform:scale(1);opacity:1;visibility:visible}
.wk-contextmenus ul{margin:0;padding:0;list-style:none}
.wk-contextmenus li{display:flex;align-items:center;gap:8px;padding:0 16px;height:40px;cursor:pointer;font-size:14px;font-family:var(--wk-font-sans,-apple-system,sans-serif);color:#1d2129;transition:background .15s ease;position:relative;user-select:none}
.wk-contextmenus li:hover,.wk-contextmenus li:focus-visible{background:#f2f3f5;outline:none}
.wk-contextmenus li .ctx-icon{width:16px;height:16px;flex-shrink:0;stroke:#4e5969}
.wk-contextmenus li.wk-ctx-danger{color:var(--wk-color-error,#f53f3f)}
.wk-contextmenus li.wk-ctx-danger .ctx-icon{stroke:var(--wk-color-error,#f53f3f)}
.wk-popupmenus-revoke{width:18px;height:18px;flex-shrink:0;background-image:url(data:image/png;base64,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);background-size:cover}
.wk-popupmenus-revoke:hover{background-image:url(data:image/png;base64,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);background-size:cover}
.wk-ctx-sep{height:1px;background:#f2f3f5;margin:4px 0}
.wk-contextmenus-mask{width:100%;height:100%;position:fixed;top:0;left:0;visibility:hidden;z-index:11999}

/* Shared IM reading scale. Applies to messages, AI conversations and subzone panels.
 * 作用域必须同时覆盖 .eva-msg（全局 IM/私聊/AI 会话）与 .eva-channel-surface
 * （该类同时挂在项目 collab-frame 上）：vendor 对 .wk-msg-text-content/时间戳
 * 硬编码浅色墨色（#1c1c23cc/#1c1c2366），项目群聊容器没有 .eva-msg 类，
 * 曾导致项目内群聊正文与时间戳在暗色下是墨色画暗底（对比不足 1:1）。 */
:is(.eva-msg,.eva-channel-surface) .wk-msg-row-sender { color: var(--eva-text-primary); font: 500 15px/24px var(--eva-font-sans); }
:is(.eva-msg,.eva-channel-surface) :is(.wk-msg-text-content,.wk-markdown) { color: var(--eva-text-primary); font: 400 15px/24px var(--eva-font-sans); }
:is(.eva-msg,.eva-channel-surface) .wk-msg-row-timestamp { color: var(--eva-text-muted); font: 400 12px/16px var(--eva-font-sans); }
/* vendor 对 hover 时间气泡与「已编辑」标记同样硬编码墨色（#1c1c2366），
 * 且从未有任何作用域救过它们——IM 页与项目页一样漏。 */
:is(.eva-msg,.eva-channel-surface) :is(.wk-msg-row-timestamp-hover,.wk-msg-row-edited) { color: var(--eva-text-muted); }
:is(.eva-msg,.eva-channel-surface) .wk-markdown table { font: 400 14px/22px var(--eva-font-sans); }
:is(.eva-msg,.eva-channel-surface) .wk-markdown :is(th,td) { border-color: var(--eva-border-faint); padding: var(--eva-space-2) var(--eva-space-3); }
:is(.eva-msg,.eva-channel-surface) .wk-markdown th { background: var(--eva-surface-subtle); }
/* @提及：Eva 唯一提及外观，覆盖团队 IM 与项目页的 Loop Markdown（任务评论/描述、技能预览）。
 * vendor 的 .mention-entity 基础规则只挂在 .wk-msg-text-content 下，因此这里直接把同一份
 * 外观扩展到 .loop-md，避免在项目页维护第二套提及样式。 */
:is(.eva-msg, .ch-layout, .loop-md) .mention-entity { color: var(--eva-action-primary); background: var(--eva-mention-background); border-radius: var(--eva-radius-key); padding:2px 6px; font-weight:500; font-size:inherit; line-height:inherit; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
:is(.eva-msg, .ch-layout) .wk-msg-text-content .mention-entity:hover, .loop-md .mention-entity:hover { background-color: var(--eva-mention-hover); }
.wk-messageinput-actionitem[aria-label="发送"] { border-radius: var(--eva-radius-full); background: var(--eva-action-disabled-fill); }
.wk-messageinput-actionitem.wk-messageinput-hasValue[aria-label="发送"] { background: var(--eva-action-primary-solid); color: var(--eva-action-primary-solid-text); }
.wk-messageinput-actionitem:hover { background: var(--eva-overlay-hover); }
/* 原型暂未实现语音输入，隐藏右下角麦克风入口。 */
.wk-messageinput-actionitem[aria-label="语音"],.wk-messageinput-actionitem[title="语音"],.wk-messageinput-actionitem[aria-label="语音输入"],.wk-messageinput-actionitem[title="语音输入"]{display:none!important}
.wk-contextmenus li { color: var(--eva-text-primary); line-height:22px; }
.wk-contextmenus li:hover { background: var(--eva-overlay-hover); }

/* Octo IM emphasis adapts to Eva blue at the shared ChannelsView root, including embedded project chats
 * and the project-page Loop Markdown surfaces that reuse IM mention/markdown styling.
 * Do not recolor the purple primitives: project/status palettes and code syntax
 * have independent meanings. Navigation and neutral hover tokens are untouched. */
:is(.eva-msg, .ch-layout, .loop-md) {
  --wk-text-accent: var(--eva-im-accent);
  --wk-text-mention-entity: var(--eva-im-accent);
  --wk-accent-tint-06: var(--eva-im-tint-06);
  --wk-accent-tint-08: var(--eva-im-tint-08);
  --wk-accent-tint-10: var(--eva-im-tint-10);
  --wk-accent-tint-12: var(--eva-im-tint-12);
  --wk-border-glow: var(--eva-im-tint-25);
  --wk-ai-surface: var(--eva-im-tint-03);
  --wk-ai-border: var(--eva-im-tint-12);
  --wk-ai-glow: var(--eva-im-tint-06);
}
:is(.eva-msg, .ch-layout) .wk-thread-created-link { color: var(--eva-im-accent); }
:is(.eva-msg, .ch-layout) .wk-msg-row--selected { background-color: var(--eva-surface-subtle); }
:is(.eva-msg, .ch-layout) .wk-category-header--editing { background: var(--eva-overlay-hover); }
:is(.eva-msg, .ch-layout) .wk-category-header__rename-input { box-shadow: 0 0 0 2px var(--eva-im-tint-12); }
:is(.eva-msg, .ch-layout) .wk-conv-compact-thread-tag:hover { background: var(--eva-im-tint-12); }
/* Keep the existing code-language syntax palette, rather than theme keywords. */
:is(.eva-msg, .ch-layout) .wk-code-highlight-container { --wk-text-accent: var(--wk-purple-500); }

/* Shared unread semantics for global, project and assistant conversations. */
/* 2026-09-20 未读计数：淡主色底 + 主色数字（tonal），借鉴气泡内 @提及标签的
 * 配色语言，但底色改为不透明混色——理由见 047 的 --eva-unread-tonal-surface。
 * 先前试过主色实底 + 反白字，墨量近 100%，在一屏多行的列表里压过会话名与
 * 选中行（权重应与出现频次成反比）；tonal 把墨量降到约 15%，醒目度改由色相
 * 跳变承担，而不是面积。
 * 与书面规范的偏离（本轮用户明确决定，未改规范文档）：
 *   · 三栏式现行视觉规范「未读数量使用中性灰色数字徽标」→ 现为主色系淡底+蓝字
 *   · IM 界面一致性规范「…5px 圆角」→ 现为胶囊（999px）
 * 字号 11px 与最近列日期同档；字重 500 取 EvaMate「Badge / Compact」。
 * 高度 16px、min-width 18px 维持规范几何未变。 */
.ch-layout :is(.wk-conv-compact-badge, .wk-category-header__badge, .wk-sidebar-tabbar__badge, .wk-conv-unread-num),
.collab-tab .badge {
  box-sizing: border-box;
  min-width: 18px;
  height: 16px;
  padding: 0 6px;
  border: 0;
  border-radius: var(--eva-radius-full, 999px);
  background: var(--eva-unread-tonal-surface);
  color: var(--eva-unread-tonal-text);
  font: 500 11px/16px var(--eva-font-sans);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.ch-layout .wk-conv-compact-badges {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  margin-left: auto;
  background: transparent;
}
.ch-layout :is(.wk-conv-compact-mention, .wk-category-header__badge--mention, .wk-conversationlist-item-indicators .wk-mention) {
  width: auto;
  min-width: 0;
  height: 18px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--eva-im-mention-accent);
  /* 字号与最近列的日期同档（11px），两者都是行尾的次要信息，同字阶才不抢戏。
   * 字重保持 600：@我 是无填充的纯文字，只能靠字重立住，不能照搬填充胶囊的 500。 */
  font: 600 11px/18px var(--eva-font-sans);
}
/* 行尾「控件列」：最右侧 32px 是固定槽位，父行放展开箭头，子区行没有箭头，
 * 就由计数徽标占据同一槽位并在其中居中——两类行的最右元素共享同一条中轴
 * （x=箭头中心），而不是各自悬空。这比「让子区徽标与父行徽标右缘对齐」更稳：
 * 后者会在子区行的最右留下 44px 空档，视觉上像缺了一块。
 * min-width 而非定宽：99+ 或 @我+计数 更宽时向左生长，中轴仍然成立。 */
.ch-layout .wk-conv-compact-item:not(:has(.wk-conv-compact-thread-toggle)) .wk-conv-compact-badges {
  min-width: 32px;
  margin-right: 0;
  justify-content: center;
}

/* Recent conversations share unread semantics with the compact tree. */
.ch-layout .wk-conversationlist-item-indicators { display:flex; align-items:center; gap:4px; flex:none; margin-left:8px; }
.ch-layout .wk-conversationlist-item-name h3 { font-size:14px; font-weight:500; line-height:19px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ch-layout .wk-conversationlist-item-unread .wk-conversationlist-item-name h3 { font-weight:600; }
/* 2026-09-20 用户决定：选中态不再加字重。600 是「未读」的专属语义，
 * 选中由蓝底表达；两者共用 600 会让「待处理」与「正在看」无法区分。 */
.ch-layout .wk-conversationlist-item-time { flex:none; white-space:nowrap; }
/* 卡片留白与圆角对齐主菜单 radius.control(8px)；hover<选中，修正现状 hover 比选中还深的反色缺陷。
 * 2026-09-20 行高定为 60px 节距（密度对比稿「路线一」）：
 *   节距 60 = 卡片高 59（padding 11 + 名称 19 + 行内间距 2 + 摘要 16 + padding 11）
 *           + vendor 原生 margin-bottom 1px（本即路线一算式中的「行距 1」）
 * 名称/摘要行高为显式整数（原为 1.4 / 1.5 倍率算出 19.6 / 18 的小数）。
 * 行高固定而非 min-height：有/无摘要、有无徽标的行原本分别为 61/59/54，
 * 固定高使全部行严格一致，内容垂直居中兜底内部差异。 */
.ch-layout .wk-conversationlist-item { box-sizing:border-box; height:59px; padding:11px var(--wk-sp-2); border-radius:8px; }
.ch-layout .wk-conversationlist-item-lastmsg { line-height:16px; }
.ch-layout .wk-conversationlist-item:hover:not(.wk-conversationlist-item-selected) { background:var(--eva-conversation-row-hover); }
.ch-layout .wk-conversationlist-item-selected,
.ch-layout .wk-conversationlist-item-selected:hover { background:var(--eva-conversation-row-selected); }
/* 蓝底选中态次要文字升一档，提对比度。 */
.ch-layout .wk-conversationlist-item-selected .wk-conversationlist-item-time,
.ch-layout .wk-conversationlist-item-selected .wk-conversationlist-item-lastmsg { color:var(--eva-conversation-row-selected-meta); }

/* Eva bubble trial: one presentation around the existing Octo content and events. */
.ch-layout .ch-stream {
  min-width: 0;
  overflow-x: hidden;
  overscroll-behavior-x: none;
}
.eva-im-bubble-row {
  --eva-bubble-incoming: var(--eva-im-bubble-incoming);
  --eva-bubble-outgoing: var(--eva-im-bubble-outgoing);
  --eva-bubble-divider: #7c8798;
  --eva-bubble-quote: var(--eva-im-accent);
  gap: var(--eva-space-3);
}
/* Retire Octo full-row hover/menu wash; selection and search highlights stay independent. */
.eva-im-bubble-row::before { content: none; }
/* Spacing belongs to the row so its one selection surface includes the gap.
   Keep this geometry in normal and selection modes to avoid layout jumps. */
.ch-stream .eva-im-bubble-row:not(.wk-msg-row--continue) {
  margin-top: 0 !important;
  padding-block: 12px;
}
.ch-stream .eva-im-bubble-row.wk-msg-row--continue {
  margin-top: 0 !important;
  padding-block: 6px;
}
/* The first message shares the same bottom spacing as its continuations. */
.ch-stream .eva-im-bubble-row:has(+ .eva-im-bubble-row.wk-msg-row--continue) { padding-bottom:6px; }

.eva-im-bubble-row > .wk-msg-row-content {
  flex: 0 1 auto;
  width: fit-content;
  max-width: calc(100% - 96px);
  align-items: flex-start;
}
.eva-im-bubble-row.wk-msg-row--send { flex-direction: row-reverse; }
.eva-im-bubble-row.wk-msg-row--send > .wk-msg-row-content { align-items: flex-end; }
.eva-im-bubble-row > .wk-msg-row-content > .wk-msg-row-body {
  width: fit-content;
  max-width: 100%;
  min-width: 0;
  text-align: left;
  overflow-wrap: anywhere;
}
.eva-im-bubble-row--text > .wk-msg-row-content > .wk-msg-row-body {
  box-sizing: border-box;
  background: var(--eva-bubble-incoming);
  border-radius: var(--eva-im-bubble-radius);
  padding: var(--eva-space-2-5) var(--eva-space-3-5);
}
.eva-im-bubble-row--text.wk-msg-row--send > .wk-msg-row-content > .wk-msg-row-body {
  background: var(--eva-bubble-outgoing);
}
/* 「创建了子区」通知并入气泡模式：沿用气泡表面，保留一条内嵌的强调竖条（子区语义色）替代 Octo 贴边黑条。 */
.eva-im-bubble-row > .wk-msg-row-content > .wk-msg-row-body > .wk-thread-created-card {
  position: relative;
  background: var(--eva-bubble-incoming);
  border-left: 0;
  border-radius: var(--eva-im-bubble-radius);
  padding: var(--eva-space-2-5) var(--eva-space-3-5) var(--eva-space-2-5) calc(var(--eva-space-3-5) + 7px);
}
.eva-im-bubble-row > .wk-msg-row-content > .wk-msg-row-body > .wk-thread-created-card::before {
  content: "";
  position: absolute;
  top: var(--eva-space-2-5);
  bottom: var(--eva-space-2-5);
  left: 7px;
  width: 3px;
  border-radius: 999px;
  background: var(--eva-im-accent);
}
.eva-im-bubble-row.wk-msg-row--send > .wk-msg-row-content > .wk-msg-row-body > .wk-thread-created-card {
  background: var(--eva-bubble-outgoing);
}
.eva-im-bubble-row .wk-msg-row-header { max-width: 100%; }
.eva-im-bubble-row .wk-msg-row-timestamp { flex: none; }
.eva-im-bubble-row .wk-msg-row-body > div { min-width: 0; max-width: 100%; }
.eva-im-bubble-row :is(.wk-msg-text-content, .wk-markdown, .wk-markdown-pre-wrapper) { min-width: 0; max-width: 100%; }
.eva-im-bubble-row .wk-markdown { overflow-wrap: anywhere; }
.eva-im-bubble-row .wk-markdown pre { max-width: 100%; overflow-x: auto; }

.eva-im-bubble-row .wk-markdown img { max-width: 100%; height: auto; }
/* File messages keep Octo actions while sharing the bubble surface. */
.eva-im-bubble-row .wk-message-file {
  background: var(--eva-bubble-incoming);
  border-radius: var(--eva-radius-chip);
  box-shadow: none;
}
.eva-im-bubble-row.wk-msg-row--send .wk-message-file { background: var(--eva-bubble-outgoing); }
.eva-im-bubble-row .wk-message-file-name { color: var(--eva-text-primary); }
.eva-im-bubble-row .wk-message-file-meta { color: var(--eva-text-secondary); }
.eva-im-bubble-row .wk-message-file-action { color: var(--eva-text-primary); border-radius: var(--eva-radius-control); }
.eva-im-bubble-row .wk-message-file-action:hover { background: var(--eva-overlay-hover); }
.eva-im-bubble-row .wk-message-file--active { outline: 1px solid var(--eva-im-accent); outline-offset: -1px; }
.eva-im-bubble-row .wk-msg-row-checkbox { order: -1; }
.eva-im-bubble-row.wk-msg-row--send .wk-msg-row-checkbox { order: 3; margin-right: auto; }
.eva-im-bubble-row.wk-msg-row--selection-mode .wk-msg-row-body { pointer-events: none; }
/* Independent batch workspace; keep the composer mounted to retain its draft. */
.eva-im-batch-toolbar { flex: none; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; min-height: 128px; padding: 16px 24px; box-sizing: border-box; border-top: 1px solid var(--eva-border-subtle); background: var(--eva-surface-subtle); color: var(--eva-text-primary); }
.eva-im-batch-count { font-size: 12px; color: var(--eva-text-secondary); }
.eva-im-batch-actions { display: flex; justify-content: center; gap: 20px; }
.eva-im-batch-toolbar button { font: inherit; color: inherit; border: 0; cursor: pointer; background: transparent; border-radius: var(--eva-radius-control); }
.eva-im-batch-action { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; width: 80px; height: 92px; font-size: 12px !important; }
.eva-im-batch-toolbar button:hover:not(:disabled) .eva-im-batch-icon, .eva-im-batch-exit:hover { background: var(--eva-overlay-hover); }
.eva-im-batch-toolbar button:focus-visible { outline: 2px solid var(--eva-border-focus); outline-offset: 2px; }
.eva-im-batch-toolbar button:disabled { color: var(--eva-text-muted); cursor: default; }
.eva-im-batch-exit { justify-self: end; display: grid; place-items: center; width: 36px; height: 36px; }
.eva-im-batch-toolbar + .wk-messageinput-box { display: none; }




/* Rich content has its own opaque reading surface, independent of bubble direction. */
.eva-im-bubble-row {
  --eva-code-keyword: #a62945;
  --eva-code-value: #075985;
  --eva-code-string: #116329;
  --eva-code-function: #6639a6;
  --eva-code-comment: #57606a;
}
/* 以上是 GitHub Light 调色板，为浅色白容器设计。原先无主题作用域、暗色
 * 原样生效：暗红/深蓝/暗绿画在 #0d1117 蓝黑 pre 上对比低至约 1.8:1，
 * 是暗色下代码「看不清」的根因。暗色换用 vendor 同款 GitHub Dark 调色板，
 * 与代码容器底（#0d1117 体系）天然同套。 */
:root[data-theme="dark"] .eva-im-bubble-row {
  --eva-code-keyword: #ff7b72;
  --eva-code-value: #79c0ff;
  --eva-code-string: #a5d6ff;
  --eva-code-function: #d2a8ff;
  --eva-code-comment: #8b949e;
}
.eva-im-bubble-row .eva-markdown-table-scroll {
  max-width: 100%;
  overflow-x: auto;
  margin: var(--eva-space-2) 0;
  border: 1px solid var(--eva-border-subtle);
  border-radius: var(--eva-radius-control);
  background: var(--eva-surface-primary);
}
.eva-im-bubble-row .wk-markdown table {
  display: table;
  width: 100%;
  margin: 0;
  border: 0;
  border-radius: 0;
  border-collapse: collapse;
  background: var(--eva-surface-primary);
  color: var(--eva-text-primary);
}
.eva-im-bubble-row .wk-markdown :is(th, td) {
  min-width: 80px;
  padding: var(--eva-space-2) var(--eva-space-3);
  border-color: var(--eva-border-subtle);
  overflow-wrap: normal;
  word-break: normal;
  vertical-align: top;
  line-height: 1.6;
}
.eva-im-bubble-row .wk-markdown th { background: var(--eva-surface-subtle); white-space: nowrap; font-weight: 600; }
.eva-im-bubble-row .wk-markdown tr:hover td { background: transparent; }
.eva-im-bubble-row .wk-markdown-pre-wrapper {
  background: var(--eva-surface-primary);
  border-color: var(--eva-border-subtle);
  color: var(--eva-text-primary);
}
/* vendor 给 pre.hljs 写死了自己的底（#0d1117）与前景，会在 wrapper 内再叠
 * 一层异色底形成灰环。容器面统一由 wrapper 持有，pre 透出同一底色。 */
.eva-im-bubble-row .wk-markdown-pre-wrapper pre.hljs {
  background: transparent;
  color: inherit;
}
.eva-im-bubble-row .wk-markdown pre { color: var(--eva-text-primary); line-height: 1.65; tab-size: 4; }
.eva-im-bubble-row .wk-markdown :not(pre) > code {
  color: var(--eva-text-primary);
  background: var(--eva-surface-primary);
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}
.eva-im-bubble-row .wk-markdown pre [class*="hljs-"] { color: inherit; }
.eva-im-bubble-row .wk-markdown pre :is(.hljs-keyword,.hljs-type,.hljs-template-tag,.hljs-template-variable,.hljs-variable.language_) { color: var(--eva-code-keyword); }
.eva-im-bubble-row .wk-markdown pre :is(.hljs-title,.hljs-built_in,.hljs-symbol) { color: var(--eva-code-function); }
.eva-im-bubble-row .wk-markdown pre :is(.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id) { color: var(--eva-code-value); }
.eva-im-bubble-row .wk-markdown pre :is(.hljs-string,.hljs-regexp,.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo) { color: var(--eva-code-string); }
.eva-im-bubble-row .wk-markdown pre :is(.hljs-comment,.hljs-code,.hljs-formula) { color: var(--eva-code-comment); }
.eva-im-bubble-row .wk-markdown pre .hljs-addition { color: var(--eva-code-string); background: var(--eva-surface-subtle); }
.eva-im-bubble-row .wk-markdown pre .hljs-deletion { color: var(--eva-code-keyword); background: var(--eva-surface-subtle); }

/* Document rhythm inside a bubble: trim only outer spacing, preserve inner structure. */
.eva-im-bubble-row .wk-markdown blockquote {
  background: transparent;
  border: 0;
  border-inline-start: 3px solid var(--eva-bubble-quote);
  border-radius: 0;
  padding: 0 0 0 12px;
  margin: 12px 0;
  color: var(--eva-text-primary);
}
.eva-im-bubble-row .wk-markdown blockquote > :first-child { margin-top: 0; }
.eva-im-bubble-row .wk-markdown blockquote > :last-child { margin-bottom: 0; }
.eva-im-bubble-row .wk-markdown hr {
  height: 0;
  border: 0;
  border-top: 1px solid var(--eva-bubble-divider);
  margin: 16px 0;
  opacity: 1;
}
.eva-im-bubble-row .wk-markdown > :first-child { margin-top: 0; }
.eva-im-bubble-row .wk-markdown > :last-child { margin-bottom: 0; }
.eva-im-bubble-row .wk-markdown ul:has(> li > input[type="checkbox"]) { padding-left: 0; }
.eva-im-bubble-row .wk-markdown li:has(> input[type="checkbox"]) { list-style: none; }
.ch-layout .wk-msg-system-tag { max-width: 100%; box-sizing: border-box; }
.ch-layout .wk-msg-system-tag-text { white-space: normal; overflow-wrap: anywhere; text-align: center; }
/**
 * ReplyBlock — 引用消息块
 * Figma 387:62976
 */

.wk-reply-block {
  --wk-bg-legacy-card: rgba(28, 28, 35, 0.04);
  --wk-border-legacy-medium: #7c8798;
  --wk-text-legacy-secondary: var(--eva-text-secondary);
  --wk-text-legacy-tertiary: var(--eva-text-secondary);
  display: flex;
  align-items: stretch;
  gap: 8px;
  background: var(--wk-bg-legacy-card);
  border-radius: 6px;
  padding: 6px 8px;
  cursor: pointer;
  margin-bottom: 4px;
  max-width: 100%;
  overflow: hidden;
}

.wk-reply-block__bar {
  width: 2px;
  border-radius: 1px;
  background: var(--wk-border-legacy-medium);
  flex-shrink: 0;
  align-self: stretch;
  min-height: 18px;
}

.wk-reply-block__content {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex: 1;
}

.wk-reply-block__name-row {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}

.wk-reply-block__name {
  font-size: 12px;
  font-weight: 400;
  color: var(--wk-text-legacy-secondary);
  line-height: 18px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* 外部成员来源 Space 后缀（dmwork-web#1069）：
   与消息头 .wk-msg-head-space 等价，放在引用块的昵称行中。 */
.wk-reply-block__space {
  font-size: 12px;
  font-weight: 400;
  color: var(--wk-text-legacy-tertiary);
  line-height: 18px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 140px;
  flex-shrink: 1;
}

.wk-reply-block__digest {
  font-size: 12px;
  font-weight: 400;
  color: var(--wk-text-legacy-secondary);
  line-height: 18px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.wk-reply-block__digest-link {
  color: var(--wk-text-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.wk-reply-block__digest-link:hover {
  opacity: 0.8;
}
.eva-im-reply-draft { display:flex; align-items:center; gap:8px; margin:0 0 8px; padding:6px 8px; background:var(--eva-surface-subtle); border:0; border-radius:var(--eva-radius-small); min-width:0; }
.eva-im-reply-draft-text { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; color:var(--eva-text-secondary); border-left:1px solid var(--eva-border-default); padding-left:8px; }
.eva-im-reply-draft > button { display:flex; flex-shrink:0; padding:4px; border:0; background:transparent; color:var(--eva-text-secondary); cursor:pointer; }
.wk-reply-block[role="button"]:focus-visible { outline: 2px solid var(--eva-im-accent); outline-offset: 2px; }
.eva-forward-host { position:fixed; inset:var(--topbar-height,37px) 0 0; pointer-events:none; z-index:1100; }
.eva-forward-host .eva-fp-veil { pointer-events:auto; }
.eva-im-bubble-row .wk-msg-row-checkbox:focus-visible { outline:2px solid var(--eva-im-accent); outline-offset:3px; border-radius:4px; }

.eva-im-batch-icon { display: grid; place-items: center; width: 48px; height: 48px; border-radius: var(--eva-radius-chip); background: var(--eva-surface-primary); color: var(--eva-text-primary); }
.eva-im-batch-action > span:last-child { color: var(--eva-text-secondary); }
.eva-im-batch-action:disabled .eva-im-batch-icon { opacity: .4; }
.eva-im-bubble-row .wk-msg-row-checkbox-inner { box-sizing: border-box; width: 16px; height: 16px; border-radius: var(--eva-radius-small); }
.eva-im-bubble-row .wk-msg-row-checkbox-inner svg { width: 9px; height: 7px; }
.eva-im-bubble-row .wk-msg-row-checkbox-inner--checked { background: var(--eva-action-primary); border-color: var(--eva-action-primary); }
.eva-im-batch-toolbar { position: relative; }
.eva-im-merged-history { min-width: 200px; max-width: 480px; }
.eva-im-merged-history summary { cursor: pointer; display: flex; flex-direction: column; gap: 6px; }
.eva-im-merged-history summary span, .eva-im-merged-items header { font-size: 12px; color: var(--eva-text-secondary); }
.eva-im-merged-items { margin-top: 12px; padding: 12px; border-radius: var(--eva-radius-control); background: var(--eva-surface-primary); }
.eva-im-merged-items section + section { border-top: 1px solid var(--eva-border-subtle); margin-top: 12px; padding-top: 12px; }

/* Reply mode reserves separate rows for the excerpt, editable text and controls. */
.wk-messageinput-card:has(.eva-im-reply-draft) .wk-messageinput-row { flex-direction:column; align-items:stretch; gap:8px; }
.wk-messageinput-card:has(.eva-im-reply-draft) .wk-messageinput-inputbox { flex:none; width:100%; margin-right:0; }
.wk-messageinput-card:has(.eva-im-reply-draft) .wk-messageinput-actionbox { align-self:flex-end; max-width:100%; flex-wrap:wrap; }

.eva-im-mention-picker { position:absolute; bottom:calc(100% + 8px); left:16px; width:420px; max-width:calc(100% - 32px); box-sizing:border-box; padding:12px; border:1px solid var(--eva-border-subtle); border-radius:var(--eva-radius-panel); background:var(--eva-surface-primary); box-shadow:var(--eva-shadow-popover),var(--eva-shadow-hairline); z-index:30; color:var(--eva-text-primary); }
.eva-im-mention-options { max-height:304px; overflow-y:auto; }
.eva-im-mention-options > button:not([data-eva-mention-more]) { display:flex; align-items:center; gap:10px; width:100%; height:48px; box-sizing:border-box; padding:8px; border:0; border-radius:var(--eva-radius-control); background:transparent; color:var(--eva-text-primary); font:inherit; font-size:14px; text-align:left; cursor:pointer; }
.eva-im-mention-options > button.is-active { background:var(--eva-list-option-selected); outline:none; }
.eva-im-mention-broadcast-copy { display:flex; align-items:center; gap:8px; min-width:0; white-space:nowrap; }
.eva-im-mention-options small { color:var(--eva-text-secondary); font-size:12px; overflow:hidden; text-overflow:ellipsis; }
.eva-im-mention-all { width:32px; height:32px; display:grid; place-items:center; border-radius:var(--eva-radius-full); background:var(--eva-mention-background); color:var(--eva-action-primary); font-size:20px; flex-shrink:0; }
.eva-im-mention-empty { padding:12px 8px; color:var(--eva-text-secondary); font-size:13px; }

.eva-im-mention-group { padding:10px 8px 4px; color:var(--eva-text-secondary); font-size:12px; line-height:18px; }

.eva-im-mention-heading { display:flex; align-items:center; margin-bottom:8px; font-size:13px; font-weight:500; }

/* 大项目不按名字也能缩小范围：顶部一排身份类型筛选，点击只留该类型。 */
.eva-im-mention-chips { display:flex; flex-wrap:wrap; gap:6px; padding:0 0 8px; }
.eva-im-mention-chip { display:inline-flex; align-items:center; gap:6px; height:28px; padding:0 10px; border:1px solid var(--eva-border-subtle); border-radius:var(--eva-radius-full); background:var(--eva-surface-primary); color:var(--eva-text-secondary); font:inherit; font-size:12px; line-height:1; cursor:pointer; }
.eva-im-mention-chip:hover { background:var(--eva-mention-hover); }
.eva-im-mention-chip.is-active { background:var(--eva-mention-background); border-color:var(--eva-action-primary); color:var(--eva-action-primary); }
.eva-im-mention-chip-count { font-variant-numeric:tabular-nums; opacity:.72; }
.eva-im-mention-more { display:block; width:100%; height:auto; box-sizing:border-box; margin:2px 0 4px; padding:8px; border:0; border-radius:var(--eva-radius-control); background:transparent; color:var(--eva-text-secondary); font:inherit; font-size:12px; line-height:18px; text-align:left; cursor:pointer; }
.eva-im-mention-more:hover { background:var(--eva-mention-hover); color:var(--eva-text-primary); }

/* 表情选择面板：复用输入区浮层视觉语言（与 mention-picker 同规格），网格布局，明暗随 token 自动适配 */
.eva-im-emoji-picker { position:absolute; bottom:calc(100% + 8px); left:16px; width:320px; max-width:calc(100% - 32px); max-height:280px; box-sizing:border-box; padding:12px; overflow-y:auto; border:1px solid var(--eva-border-subtle); border-radius:var(--eva-radius-panel); background:var(--eva-surface-primary); box-shadow:var(--eva-shadow-popover),var(--eva-shadow-hairline); z-index:30; color:var(--eva-text-primary); }
.eva-im-emoji-picker__group + .eva-im-emoji-picker__group { margin-top:4px; }
.eva-im-emoji-picker__title { margin:0 0 4px; padding:0 4px; color:var(--eva-text-secondary); font-size:12px; font-weight:500; line-height:18px; }
.eva-im-emoji-picker__grid { display:grid; grid-template-columns:repeat(8,1fr); gap:2px; }
.eva-im-emoji-picker__cell { display:grid; place-items:center; width:100%; aspect-ratio:1; padding:0; border:0; border-radius:var(--eva-radius-control); background:transparent; font-size:20px; line-height:1; cursor:pointer; transition:background .12s; }
.eva-im-emoji-picker__cell:hover { background:var(--eva-overlay-hover); }
.eva-im-emoji-picker__cell:active { background:var(--eva-overlay-pressed); }
.eva-im-emoji-picker__cell:focus-visible { outline:2px solid var(--eva-border-focus); outline-offset:-2px; }
/* 暗色：输入区浮层要比其触发面（.wk-messageinput-card）更亮一档。
   .wk-messageinput-card 在暗色下已抬升到 surface-paper(#2a2a2a)（见 057），
   若弹窗也取 surface-paper 会与触发面同色，贴边只剩 1px 描边，等于没有分层。
   按与「收到气泡取画布+白6%」同一手法，在 surface-paper 上再叠一层白 6%，
   得到比触发面更亮、又不需要新增语义 token 的第三级抬升。 */
:root[data-theme="dark"] .eva-im-mention-picker,
:root[data-theme="dark"] .eva-im-emoji-picker { background:color-mix(in srgb, var(--eva-surface-paper) 94%, white 6%); }

/* Delete confirmation belongs to the client content area, never to the batch bar. */
.eva-im-delete-portal { position:fixed; inset:var(--topbar-height) 0 0; z-index:1100; pointer-events:none; }
.eva-im-delete-portal :is(.semi-modal-mask,.semi-modal-wrap) { position:absolute; inset:0; height:100%; pointer-events:auto; }
.eva-im-delete-portal .semi-modal-wrap { display:flex; align-items:center; justify-content:center; padding:24px; box-sizing:border-box; }
.eva-im-delete-portal .semi-modal { margin:0; padding:0; max-width:100%; max-height:100%; }
.eva-im-delete-dialog .semi-modal-content { border-radius:var(--eva-radius-panel); max-height:calc(100dvh - var(--topbar-height) - 48px); overflow:auto; }
.eva-im-delete-dialog .semi-modal-header { margin:0; padding:0; }
.eva-im-delete-dialog .semi-modal-content { padding:24px; }
.eva-im-delete-dialog .semi-modal-title { font-size:16px; line-height:24px; font-weight:600; }
.eva-im-delete-dialog .semi-modal-body { margin:16px 0 24px; padding:0; font-size:14px; line-height:22px; }
.eva-im-delete-dialog .semi-modal-body p { margin:0; }
.eva-im-delete-dialog .semi-modal-footer { margin:0; padding:0; }

/* Octo conversation menu: same rows/icons, Eva tokens and client-content bounds. */
.eva-context-menu { background:var(--eva-surface-primary); backdrop-filter:none; }
.eva-context-menu > ul { max-height:inherit; }
.eva-context-menu li { position:relative; }
.eva-context-menu li > span { flex:1; white-space:nowrap; }
.eva-context-menu .ctx-icon { stroke-width:1.7; }
.eva-context-menu li.wk-ctx-danger .ctx-icon { width:16px; height:16px; background-image:none; stroke:currentColor; }
.eva-context-menu li.wk-ctx-danger .ctx-icon > * { display:initial; }
.eva-context-menu li:focus-visible { background:var(--eva-overlay-hover); outline:none; }
.eva-context-menu:focus,.eva-context-menu:focus-visible { outline:none; }
.eva-context-menu .eva-context-submenu { position:absolute; min-width:160px; max-height:60vh; overflow-y:auto; padding:6px; background:var(--eva-surface-primary); border:1px solid var(--eva-border-faint); border-radius:var(--eva-radius-chip); box-shadow:var(--eva-shadow-floating),var(--eva-shadow-hairline); }

/* Keep the two-space gap between a linked task ID and its title. */
.eva-task-message-link { white-space:pre-wrap; }
