/* CodeMirror base + VS Code 风格主题 */
.page-research-notebook, .page-strategy-workshop .xtnb-cm-host {
  flex: 1;
  min-width: 0;
  font-size: 12px;
  padding: 5px 0 6px;
  box-sizing: border-box;
}

.page-research-notebook, .page-strategy-workshop .xtnb-cm-host .CodeMirror {
  height: auto;
  min-height: 22px;
  font-family: var(--xtnb-mono);
  font-size: 12px;
  line-height: 1.55;
  border: none;
}

/* 保留 CodeMirror 默认 scroll 补偿，否则行号 gutter 与代码行会错位 */
.page-research-notebook, .page-strategy-workshop .xtnb-cm-host .CodeMirror-scroll {
  overflow: scroll !important;
  margin-bottom: -50px;
  margin-right: -50px;
  padding-bottom: 50px;
  padding-right: 50px;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.page-research-notebook, .page-strategy-workshop .xtnb-cm-host .CodeMirror-scroll::-webkit-scrollbar {
  width: 0;
  height: 0;
}

.page-research-notebook, .page-strategy-workshop .xtnb-cm-host .CodeMirror-lines {
  padding: 2px 0;
}

/* 水平滚动条与末行分离，避免遮挡字形 */
.page-research-notebook, .page-strategy-workshop .xtnb-cm-host .CodeMirror-hscrollbar {
  height: 10px;
  left: 0 !important;
  right: 0 !important;
}

.page-research-notebook, .page-strategy-workshop .xtnb-cm-host .CodeMirror-gutters {
  border: none;
  box-sizing: border-box;
}

.page-research-notebook, .page-strategy-workshop .xtnb-cm-host .CodeMirror-linenumber {
  padding: 0 8px 0 6px;
  min-width: 2.25rem;
  line-height: 1.55;
}

.page-research-notebook, .page-strategy-workshop .xtnb-cm-host pre.CodeMirror-line {
  padding: 0 10px 0 6px;
}

/* 缩进引导 |···：竖线更浅、点略深；各主题对比度适中可见 */
.cm-s-vscode-dark.xtnb-cm-indent-guides,
.cm-s-dark-modern.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #454545;
  --xtnb-cm-indent-dot: #5a5a5a;
  --xtnb-cm-indent-bar-active: #626262;
  --xtnb-cm-indent-dot-active: #828282;
  --xtnb-cm-indent-bad: #c94a4a;
}
.cm-s-monokai.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #4e4e46;
  --xtnb-cm-indent-dot: #636358;
  --xtnb-cm-indent-bar-active: #6a6a60;
  --xtnb-cm-indent-dot-active: #858578;
  --xtnb-cm-indent-bad: #d65555;
}
.cm-s-abyss.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #2a4058;
  --xtnb-cm-indent-dot: #3a5575;
  --xtnb-cm-indent-bar-active: #456088;
  --xtnb-cm-indent-dot-active: #5a80a8;
  --xtnb-cm-indent-bad: #c94a4a;
}
.cm-s-one-dark.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #4a505c;
  --xtnb-cm-indent-dot: #606878;
  --xtnb-cm-indent-bar-active: #6a7288;
  --xtnb-cm-indent-dot-active: #8890a8;
  --xtnb-cm-indent-bad: #c94a4a;
}
.cm-s-red-dark.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #5c2222;
  --xtnb-cm-indent-dot: #752e2e;
  --xtnb-cm-indent-bar-active: #883838;
  --xtnb-cm-indent-dot-active: #a84848;
  --xtnb-cm-indent-bad: #e06060;
}
.cm-s-vscode-hc.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #585858;
  --xtnb-cm-indent-dot: #707070;
  --xtnb-cm-indent-bar-active: #787878;
  --xtnb-cm-indent-dot-active: #989898;
  --xtnb-cm-indent-bad: #ff7070;
}
.cm-s-vscode-light.xtnb-cm-indent-guides,
.cm-s-default-light-modern.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #d2d2d2;
  --xtnb-cm-indent-dot: #b8b8b8;
  --xtnb-cm-indent-bar-active: #aaaaaa;
  --xtnb-cm-indent-dot-active: #909090;
  --xtnb-cm-indent-bad: #e07070;
}
.cm-s-quiet-light.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #c8c8c8;
  --xtnb-cm-indent-dot: #adadad;
  --xtnb-cm-indent-bar-active: #a0a0a0;
  --xtnb-cm-indent-dot-active: #868686;
  --xtnb-cm-indent-bad: #e07070;
}
.cm-s-solarized-light.xtnb-cm-indent-guides {
  --xtnb-cm-indent-bar: #cfc7b5;
  --xtnb-cm-indent-dot: #b5ab98;
  --xtnb-cm-indent-bar-active: #a89f8c;
  --xtnb-cm-indent-dot-active: #8f8675;
  --xtnb-cm-indent-bad: #d07060;
}

/* 行背景（缩进引导、当前行高亮）必须在文字下层，否则引导点与 activeline 会盖住字形 */
.page-research-notebook, .page-strategy-workshop .CodeMirror .CodeMirror-linebackground {
  z-index: 0;
}

.page-research-notebook, .page-strategy-workshop .CodeMirror pre.CodeMirror-line {
  position: relative;
  z-index: 2;
}

.page-research-notebook, .page-strategy-workshop .CodeMirror .CodeMirror-linebackground.xtnb-cm-indent-guide-line,
.page-research-notebook, .page-strategy-workshop .CodeMirror .CodeMirror-linebackground.xtnb-cm-indent-bad {
  background-color: transparent !important;
  pointer-events: none;
}

/* 相同变量名框选高亮 */
.page-research-notebook, .page-strategy-workshop .CodeMirror .xtnb-cm-occurrence {
  border: 1px solid rgba(180, 180, 180, 0.5);
  border-radius: 2px;
  background: rgba(180, 180, 180, 0.07);
  box-sizing: border-box;
}
.page-research-notebook, .page-strategy-workshop .CodeMirror .xtnb-cm-occurrence--current {
  border-color: rgba(220, 220, 220, 0.75);
  background: rgba(200, 200, 200, 0.14);
}
html.theme-palette-jiguang .page-research-notebook, .page-strategy-workshop .CodeMirror .xtnb-cm-occurrence {
  border-color: rgba(100, 100, 120, 0.35);
  background: rgba(100, 100, 120, 0.06);
}
html.theme-palette-jiguang .page-research-notebook, .page-strategy-workshop .CodeMirror .xtnb-cm-occurrence--current {
  border-color: rgba(79, 70, 229, 0.45);
  background: rgba(79, 70, 229, 0.08);
}

/* VS Code Dark+ */
.cm-s-vscode-dark.CodeMirror {
  background: #1e1e1e;
  color: #d4d4d4;
}
.cm-s-vscode-dark .CodeMirror-gutters {
  background: #1e1e1e;
  border-right-color: #2d2d2d;
}
.cm-s-vscode-dark .CodeMirror-linenumber {
  color: #858585;
}
.cm-s-vscode-dark .cm-keyword {
  color: #569cd6;
}
.cm-s-vscode-dark .cm-atom,
.cm-s-vscode-dark .cm-number {
  color: #b5cea8;
}
.cm-s-vscode-dark .cm-string,
.cm-s-vscode-dark .cm-string-2 {
  color: #ce9178;
}
.cm-s-vscode-dark .cm-comment {
  color: #6a9955;
  font-style: italic;
}
.cm-s-vscode-dark .cm-def,
.cm-s-vscode-dark .cm-variable-2 {
  color: #dcdcaa;
}
.cm-s-vscode-dark .cm-variable {
  color: #9cdcfe;
}
.cm-s-vscode-dark .cm-builtin {
  color: #4ec9b0;
}
.cm-s-vscode-dark .cm-operator {
  color: #d4d4d4;
}
.cm-s-vscode-dark .CodeMirror-activeline-background {
  background-color: rgba(255, 255, 255, 0.04);
}

/* VS Code / Cursor Default Light Modern */
.cm-s-vscode-light.CodeMirror {
  background: #ffffff;
  color: #3b3b3b;
}
.cm-s-vscode-light .CodeMirror-gutters {
  background: #ffffff;
  border-right: 1px solid #e5e5e5;
}
.cm-s-vscode-light .CodeMirror-linenumber {
  color: #6e7681;
}
.cm-s-vscode-light .cm-keyword {
  color: #af00db;
}
.cm-s-vscode-light .cm-atom {
  color: #0000ff;
}
.cm-s-vscode-light .cm-number {
  color: #098658;
}
.cm-s-vscode-light .cm-string,
.cm-s-vscode-light .cm-string-2 {
  color: #a31515;
}
.cm-s-vscode-light .cm-comment {
  color: #008000;
}
.cm-s-vscode-light .cm-def,
.cm-s-vscode-light .cm-variable-2 {
  color: #795e26;
}
.cm-s-vscode-light .cm-variable {
  color: #3b3b3b;
}
.cm-s-vscode-light .cm-builtin {
  color: #267f99;
}
.cm-s-vscode-light .cm-operator {
  color: #3b3b3b;
}
.cm-s-vscode-light .CodeMirror-activeline-background {
  background-color: #f0f0f0;
}

/* VS Code High Contrast */
.cm-s-vscode-hc.CodeMirror {
  background: #000000;
  color: #ffffff;
}
.cm-s-vscode-hc .CodeMirror-gutters {
  background: #000000;
  border-right-color: #6fc3df;
}
.cm-s-vscode-hc .CodeMirror-linenumber {
  color: #ffffff;
}
.cm-s-vscode-hc .cm-keyword {
  color: #569cd6;
  font-weight: 600;
}
.cm-s-vscode-hc .cm-string {
  color: #ce9178;
}
.cm-s-vscode-hc .cm-comment {
  color: #7ca668;
}
.cm-s-vscode-hc .CodeMirror-activeline-background {
  background-color: #0f3d5c;
}

/* Dark Modern */
.cm-s-dark-modern.CodeMirror {
  background: #1f1f1f;
  color: #cccccc;
}
.cm-s-dark-modern .CodeMirror-gutters {
  background: #1f1f1f;
  border-right-color: #2b2b2b;
}
.cm-s-dark-modern .CodeMirror-linenumber {
  color: #858585;
}
.cm-s-dark-modern .cm-keyword {
  color: #569cd6;
}
.cm-s-dark-modern .cm-atom,
.cm-s-dark-modern .cm-number {
  color: #b5cea8;
}
.cm-s-dark-modern .cm-string,
.cm-s-dark-modern .cm-string-2 {
  color: #ce9178;
}
.cm-s-dark-modern .cm-comment {
  color: #6a9955;
  font-style: italic;
}
.cm-s-dark-modern .cm-def,
.cm-s-dark-modern .cm-variable-2 {
  color: #dcdcaa;
}
.cm-s-dark-modern .cm-variable {
  color: #9cdcfe;
}
.cm-s-dark-modern .cm-builtin {
  color: #4ec9b0;
}
.cm-s-dark-modern .CodeMirror-activeline-background {
  background-color: rgba(255, 255, 255, 0.04);
}

/* Monokai */
.cm-s-monokai.CodeMirror {
  background: #272822;
  color: #f8f8f2;
}
.cm-s-monokai .CodeMirror-gutters {
  background: #272822;
  border-right-color: #3e3d32;
}
.cm-s-monokai .CodeMirror-linenumber {
  color: #90908a;
}
.cm-s-monokai .cm-keyword {
  color: #f92672;
}
.cm-s-monokai .cm-atom,
.cm-s-monokai .cm-number {
  color: #ae81ff;
}
.cm-s-monokai .cm-string,
.cm-s-monokai .cm-string-2 {
  color: #e6db74;
}
.cm-s-monokai .cm-comment {
  color: #75715e;
  font-style: italic;
}
.cm-s-monokai .cm-def,
.cm-s-monokai .cm-variable-2 {
  color: #a6e22e;
}
.cm-s-monokai .cm-variable {
  color: #f8f8f2;
}
.cm-s-monokai .cm-builtin {
  color: #66d9ef;
}
.cm-s-monokai .CodeMirror-activeline-background {
  background-color: rgba(255, 255, 255, 0.05);
}

/* Abyss */
.cm-s-abyss.CodeMirror {
  background: #000c18;
  color: #6688cc;
}
.cm-s-abyss .CodeMirror-gutters {
  background: #000c18;
  border-right-color: #102040;
}
.cm-s-abyss .CodeMirror-linenumber {
  color: #406080;
}
.cm-s-abyss .cm-keyword {
  color: #225588;
  font-weight: 600;
}
.cm-s-abyss .cm-atom,
.cm-s-abyss .cm-number {
  color: #885533;
}
.cm-s-abyss .cm-string,
.cm-s-abyss .cm-string-2 {
  color: #22aa44;
}
.cm-s-abyss .cm-comment {
  color: #384887;
  font-style: italic;
}
.cm-s-abyss .cm-def,
.cm-s-abyss .cm-variable-2 {
  color: #9966bb;
}
.cm-s-abyss .cm-variable {
  color: #6688cc;
}
.cm-s-abyss .cm-builtin {
  color: #225588;
}
.cm-s-abyss .CodeMirror-activeline-background {
  background-color: rgba(16, 32, 64, 0.55);
}

/* One Dark Modern */
.cm-s-one-dark.CodeMirror {
  background: #282c34;
  color: #abb2bf;
}
.cm-s-one-dark .CodeMirror-gutters {
  background: #282c34;
  border-right-color: #3e4451;
}
.cm-s-one-dark .CodeMirror-linenumber {
  color: #636d83;
}
.cm-s-one-dark .cm-keyword {
  color: #c678dd;
}
.cm-s-one-dark .cm-atom,
.cm-s-one-dark .cm-number {
  color: #d19a66;
}
.cm-s-one-dark .cm-string,
.cm-s-one-dark .cm-string-2 {
  color: #98c379;
}
.cm-s-one-dark .cm-comment {
  color: #5c6370;
  font-style: italic;
}
.cm-s-one-dark .cm-def,
.cm-s-one-dark .cm-variable-2 {
  color: #e5c07b;
}
.cm-s-one-dark .cm-variable {
  color: #e06c75;
}
.cm-s-one-dark .cm-builtin {
  color: #56b6c2;
}
.cm-s-one-dark .CodeMirror-activeline-background {
  background-color: rgba(99, 109, 131, 0.15);
}

/* Red (dark) */
.cm-s-red-dark.CodeMirror {
  background: #390000;
  color: #f8f8f8;
}
.cm-s-red-dark .CodeMirror-gutters {
  background: #390000;
  border-right-color: #5a0000;
}
.cm-s-red-dark .CodeMirror-linenumber {
  color: #a06060;
}
.cm-s-red-dark .cm-keyword {
  color: #ff6666;
}
.cm-s-red-dark .cm-atom,
.cm-s-red-dark .cm-number {
  color: #ffcc66;
}
.cm-s-red-dark .cm-string,
.cm-s-red-dark .cm-string-2 {
  color: #ff9999;
}
.cm-s-red-dark .cm-comment {
  color: #996666;
  font-style: italic;
}
.cm-s-red-dark .cm-def,
.cm-s-red-dark .cm-variable-2 {
  color: #ffcc99;
}
.cm-s-red-dark .cm-variable {
  color: #ffaaaa;
}
.cm-s-red-dark .cm-builtin {
  color: #ff8888;
}
.cm-s-red-dark .CodeMirror-activeline-background {
  background-color: rgba(255, 80, 80, 0.08);
}

/* Default Light Modern（与 vscode-light 同色，对齐 Cursor 浅色编辑器） */
.cm-s-default-light-modern.CodeMirror {
  background: #ffffff;
  color: #3b3b3b;
}
.cm-s-default-light-modern .CodeMirror-gutters {
  background: #ffffff;
  border-right: 1px solid #e5e5e5;
}
.cm-s-default-light-modern .CodeMirror-linenumber {
  color: #6e7681;
}
.cm-s-default-light-modern .cm-keyword {
  color: #af00db;
}
.cm-s-default-light-modern .cm-atom {
  color: #0000ff;
}
.cm-s-default-light-modern .cm-number {
  color: #098658;
}
.cm-s-default-light-modern .cm-string,
.cm-s-default-light-modern .cm-string-2 {
  color: #a31515;
}
.cm-s-default-light-modern .cm-comment {
  color: #008000;
}
.cm-s-default-light-modern .cm-def,
.cm-s-default-light-modern .cm-variable-2 {
  color: #795e26;
}
.cm-s-default-light-modern .cm-variable {
  color: #3b3b3b;
}
.cm-s-default-light-modern .cm-builtin {
  color: #267f99;
}
.cm-s-default-light-modern .cm-operator {
  color: #3b3b3b;
}
.cm-s-default-light-modern .CodeMirror-activeline-background {
  background-color: #f0f0f0;
}

/* Quiet Light */
.cm-s-quiet-light.CodeMirror {
  background: #f5f5f5;
  color: #333333;
}
.cm-s-quiet-light .CodeMirror-gutters {
  background: #f2f2f2;
  border-right-color: #e0e0e0;
}
.cm-s-quiet-light .CodeMirror-linenumber {
  color: #aaaaaa;
}
.cm-s-quiet-light .cm-keyword {
  color: #777777;
  font-weight: 600;
}
.cm-s-quiet-light .cm-atom,
.cm-s-quiet-light .cm-number {
  color: #009999;
}
.cm-s-quiet-light .cm-string,
.cm-s-quiet-light .cm-string-2 {
  color: #aa5500;
}
.cm-s-quiet-light .cm-comment {
  color: #aaaaaa;
  font-style: italic;
}
.cm-s-quiet-light .cm-def,
.cm-s-quiet-light .cm-variable-2 {
  color: #007777;
}
.cm-s-quiet-light .cm-variable {
  color: #333333;
}
.cm-s-quiet-light .cm-builtin {
  color: #007777;
}
.cm-s-quiet-light .CodeMirror-activeline-background {
  background-color: rgba(0, 0, 0, 0.04);
}

/* Solarized Light */
.cm-s-solarized-light.CodeMirror {
  background: #fdf6e3;
  color: #657b83;
}
.cm-s-solarized-light .CodeMirror-gutters {
  background: #eee8d5;
  border-right-color: #ddd6c1;
}
.cm-s-solarized-light .CodeMirror-linenumber {
  color: #93a1a1;
}
.cm-s-solarized-light .cm-keyword {
  color: #859900;
  font-weight: 600;
}
.cm-s-solarized-light .cm-atom,
.cm-s-solarized-light .cm-number {
  color: #d33682;
}
.cm-s-solarized-light .cm-string,
.cm-s-solarized-light .cm-string-2 {
  color: #2aa198;
}
.cm-s-solarized-light .cm-comment {
  color: #93a1a1;
  font-style: italic;
}
.cm-s-solarized-light .cm-def,
.cm-s-solarized-light .cm-variable-2 {
  color: #268bd2;
}
.cm-s-solarized-light .cm-variable {
  color: #657b83;
}
.cm-s-solarized-light .cm-builtin {
  color: #cb4b16;
}
.cm-s-solarized-light .CodeMirror-activeline-background {
  background-color: rgba(0, 0, 0, 0.04);
}

/*
 * 文本选区：覆盖 CodeMirror 默认 #d7d4f0（浅紫），暗色主题下刺眼且与语法色冲突。
 * --xtnb-cm-sel-f：编辑器聚焦时的选区；--xtnb-cm-sel-b：失焦时的选区。
 */
.cm-s-vscode-dark {
  --xtnb-cm-sel-f: #264f78;
  --xtnb-cm-sel-b: #3a3d41;
}
.cm-s-dark-modern {
  --xtnb-cm-sel-f: rgba(38, 128, 235, 0.42);
  --xtnb-cm-sel-b: #2a2d2e;
}
.cm-s-monokai {
  --xtnb-cm-sel-f: #49483e;
  --xtnb-cm-sel-b: #3e3d32;
}
.cm-s-abyss {
  --xtnb-cm-sel-f: #004052;
  --xtnb-cm-sel-b: #001e26;
}
.cm-s-one-dark {
  --xtnb-cm-sel-f: #3e4451;
  --xtnb-cm-sel-b: #2c313a;
}
.cm-s-red-dark {
  --xtnb-cm-sel-f: #6b1a1a;
  --xtnb-cm-sel-b: #4a1010;
}
.cm-s-vscode-hc {
  --xtnb-cm-sel-f: #1a6ca8;
  --xtnb-cm-sel-b: #0f3d5c;
}
.cm-s-vscode-light {
  --xtnb-cm-sel-f: #add6ff;
  --xtnb-cm-sel-b: #e5ebf1;
}
.cm-s-default-light-modern {
  --xtnb-cm-sel-f: #add6ff;
  --xtnb-cm-sel-b: #e8e8e8;
}
.cm-s-quiet-light {
  --xtnb-cm-sel-f: #c8daf5;
  --xtnb-cm-sel-b: #e0e0e0;
}
.cm-s-solarized-light {
  --xtnb-cm-sel-f: rgba(7, 54, 66, 0.18);
  --xtnb-cm-sel-b: rgba(7, 54, 66, 0.09);
}

.page-research-notebook, .page-strategy-workshop [class*="cm-s-"].CodeMirror .CodeMirror-selected {
  background: var(--xtnb-cm-sel-b, #d9d9d9);
}
.page-research-notebook, .page-strategy-workshop [class*="cm-s-"].CodeMirror-focused .CodeMirror-selected {
  background: var(--xtnb-cm-sel-f, #d7d4f0);
}

/* 当前行高亮仅在编辑器获得焦点时显示，未激活单元格保持透明背景 */
.page-research-notebook, .page-strategy-workshop [class*="cm-s-"].CodeMirror:not(.CodeMirror-focused) .CodeMirror-activeline-background {
  background-color: transparent !important;
}

.page-research-notebook, .page-strategy-workshop [class*="cm-s-"] .CodeMirror-line::selection,
.page-research-notebook, .page-strategy-workshop [class*="cm-s-"] .CodeMirror-line > span::selection,
.page-research-notebook, .page-strategy-workshop [class*="cm-s-"] .CodeMirror-line > span > span::selection {
  background: var(--xtnb-cm-sel-f, #d7d4f0);
  color: inherit;
}
.page-research-notebook, .page-strategy-workshop [class*="cm-s-"] .CodeMirror-line::-moz-selection,
.page-research-notebook, .page-strategy-workshop [class*="cm-s-"] .CodeMirror-line > span::-moz-selection,
.page-research-notebook, .page-strategy-workshop [class*="cm-s-"] .CodeMirror-line > span > span::-moz-selection {
  background: var(--xtnb-cm-sel-f, #d7d4f0);
  color: inherit;
}

/* 编辑器底色跟随页面 token，避免 CM 主题硬编码 #fff / #1e1e1e 与工坊面板脱节 */
.page-research-notebook,
.page-strategy-workshop {
  --xtnb-cm-surface: var(--xtnb-code-bg, var(--xtnb-bg));
  --xtnb-cm-gutter: var(--xtnb-code-bg, var(--xtnb-bg));
}

.page-research-notebook [class*="cm-s-"].CodeMirror,
.page-strategy-workshop [class*="cm-s-"].CodeMirror {
  background: var(--xtnb-cm-surface) !important;
}

.page-research-notebook [class*="cm-s-"].CodeMirror .CodeMirror-gutters,
.page-strategy-workshop [class*="cm-s-"].CodeMirror .CodeMirror-gutters {
  background: var(--xtnb-cm-gutter) !important;
  border-right: 1px solid var(--xtnb-border) !important;
}

.page-research-notebook [class*="cm-s-"].CodeMirror-focused .CodeMirror-activeline-background,
.page-strategy-workshop [class*="cm-s-"].CodeMirror-focused .CodeMirror-activeline-background {
  background-color: color-mix(in srgb, var(--xtnb-accent) 7%, var(--xtnb-cm-surface)) !important;
}

/* 暗色主题：同名变量高亮也改用低对比色，避免与选区混淆 */
.cm-s-vscode-dark .xtnb-cm-occurrence,
.cm-s-dark-modern .xtnb-cm-occurrence,
.cm-s-monokai .xtnb-cm-occurrence,
.cm-s-abyss .xtnb-cm-occurrence,
.cm-s-one-dark .xtnb-cm-occurrence,
.cm-s-red-dark .xtnb-cm-occurrence,
.cm-s-vscode-hc .xtnb-cm-occurrence {
  border-color: rgba(120, 140, 170, 0.38);
  background: rgba(80, 110, 150, 0.12);
}
.cm-s-vscode-dark .xtnb-cm-occurrence--current,
.cm-s-dark-modern .xtnb-cm-occurrence--current,
.cm-s-monokai .xtnb-cm-occurrence--current,
.cm-s-abyss .xtnb-cm-occurrence--current,
.cm-s-one-dark .xtnb-cm-occurrence--current,
.cm-s-red-dark .xtnb-cm-occurrence--current,
.cm-s-vscode-hc .xtnb-cm-occurrence--current {
  border-color: rgba(140, 170, 210, 0.55);
  background: rgba(90, 130, 180, 0.2);
}

/* Autocomplete hint — 挂载到 #xtnb-cm-hint-portal，避免被 overflow:hidden 裁切 */
#xtnb-cm-hint-portal {
  position: fixed;
  inset: 0;
  z-index: 6000;
  pointer-events: none;
  overflow: visible;
}

#xtnb-cm-hint-portal .CodeMirror-hints,
#xtnb-cm-hint-portal .xtnb-cm-hints {
  position: fixed !important;
  pointer-events: auto;
  min-width: 8rem;
  list-style: none;
  margin: 0;
  padding: 2px 0;
  overflow-x: hidden;
  overflow-y: auto;
  box-sizing: border-box;
  visibility: visible;
  opacity: 1;
  font-family: "JetBrains Mono", ui-monospace, Consolas, monospace;
  font-size: 12px;
  max-height: 16em;
  border: 1px solid #454545;
  border-radius: 3px;
  background: #252526;
  color: #d4d4d4;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
}

html.theme-palette-jiguang #xtnb-cm-hint-portal .CodeMirror-hints,
html.theme-palette-jiguang #xtnb-cm-hint-portal .xtnb-cm-hints {
  background: #faf9f7;
  color: #1e293b;
  border-color: rgba(30, 41, 59, 0.18);
  box-shadow: 0 4px 16px rgba(15, 23, 42, 0.12);
}

html.theme-palette-jiguang #xtnb-cm-hint-portal li.CodeMirror-hint-active {
  background: #4f46e5;
  color: #fff;
}

#xtnb-cm-hint-portal li.CodeMirror-hint-active {
  background: #0078d4;
  color: #fff;
}

/* 匹配前缀高亮 — 与 CodeMirror token 色一致（深色默认） */
#xtnb-cm-hint-portal .xtnb-hint-sym--keyword .xtnb-hint-prefix {
  color: #569cd6;
  font-weight: 700;
}
#xtnb-cm-hint-portal .xtnb-hint-sym--keyword .xtnb-hint-suffix {
  color: #569cd6;
  opacity: 0.68;
}
#xtnb-cm-hint-portal .xtnb-hint-sym--builtin .xtnb-hint-prefix {
  color: #dcdcaa;
  font-weight: 700;
}
#xtnb-cm-hint-portal .xtnb-hint-sym--builtin .xtnb-hint-suffix {
  color: #dcdcaa;
  opacity: 0.68;
}
#xtnb-cm-hint-portal .xtnb-hint-sym--user .xtnb-hint-prefix {
  color: #9cdcfe;
  font-weight: 700;
}
#xtnb-cm-hint-portal .xtnb-hint-sym--user .xtnb-hint-suffix {
  color: #9cdcfe;
  opacity: 0.72;
}

/* 浅色编辑器主题 — 未选中项 */
#xtnb-cm-hint-portal .cm-s-vscode-light .xtnb-hint-sym--keyword .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-default-light-modern .xtnb-hint-sym--keyword .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-quiet-light .xtnb-hint-sym--keyword .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-solarized-light .xtnb-hint-sym--keyword .xtnb-hint-prefix {
  color: #af00db;
}
#xtnb-cm-hint-portal .cm-s-vscode-light .xtnb-hint-sym--keyword .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-default-light-modern .xtnb-hint-sym--keyword .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-quiet-light .xtnb-hint-sym--keyword .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-solarized-light .xtnb-hint-sym--keyword .xtnb-hint-suffix {
  color: #af00db;
  opacity: 0.55;
}
#xtnb-cm-hint-portal .cm-s-vscode-light .xtnb-hint-sym--builtin .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-default-light-modern .xtnb-hint-sym--builtin .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-quiet-light .xtnb-hint-sym--builtin .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-solarized-light .xtnb-hint-sym--builtin .xtnb-hint-prefix {
  color: #267f99;
}
#xtnb-cm-hint-portal .cm-s-vscode-light .xtnb-hint-sym--builtin .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-default-light-modern .xtnb-hint-sym--builtin .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-quiet-light .xtnb-hint-sym--builtin .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-solarized-light .xtnb-hint-sym--builtin .xtnb-hint-suffix {
  color: #267f99;
  opacity: 0.55;
}
#xtnb-cm-hint-portal .cm-s-vscode-light .xtnb-hint-sym--user .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-default-light-modern .xtnb-hint-sym--user .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-quiet-light .xtnb-hint-sym--user .xtnb-hint-prefix,
#xtnb-cm-hint-portal .cm-s-solarized-light .xtnb-hint-sym--user .xtnb-hint-prefix {
  color: #3b3b3b;
}
#xtnb-cm-hint-portal .cm-s-vscode-light .xtnb-hint-sym--user .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-default-light-modern .xtnb-hint-sym--user .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-quiet-light .xtnb-hint-sym--user .xtnb-hint-suffix,
#xtnb-cm-hint-portal .cm-s-solarized-light .xtnb-hint-sym--user .xtnb-hint-suffix {
  color: #3b3b3b;
  opacity: 0.55;
}

html.theme-palette-jiguang #xtnb-cm-hint-portal .xtnb-hint-sym--keyword .xtnb-hint-prefix {
  color: #af00db;
}
html.theme-palette-jiguang #xtnb-cm-hint-portal .xtnb-hint-sym--keyword .xtnb-hint-suffix {
  color: #af00db;
  opacity: 0.55;
}
html.theme-palette-jiguang #xtnb-cm-hint-portal .xtnb-hint-sym--builtin .xtnb-hint-prefix {
  color: #267f99;
}
html.theme-palette-jiguang #xtnb-cm-hint-portal .xtnb-hint-sym--builtin .xtnb-hint-suffix {
  color: #267f99;
  opacity: 0.55;
}
html.theme-palette-jiguang #xtnb-cm-hint-portal .xtnb-hint-sym--user .xtnb-hint-prefix {
  color: #3b3b3b;
  font-weight: 700;
}
html.theme-palette-jiguang #xtnb-cm-hint-portal .xtnb-hint-sym--user .xtnb-hint-suffix {
  color: #3b3b3b;
  opacity: 0.78;
}

/*
 * 选中行：强制浅色字（必须放在所有主题色规则之后，否则 jiguang 等会盖掉导致蓝底看不清）
 */
#xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--keyword .xtnb-hint-prefix,
#xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--keyword .xtnb-hint-suffix,
#xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--builtin .xtnb-hint-prefix,
#xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--builtin .xtnb-hint-suffix,
#xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--user .xtnb-hint-prefix,
#xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--user .xtnb-hint-suffix,
html.theme-palette-jiguang #xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--keyword .xtnb-hint-prefix,
html.theme-palette-jiguang #xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--keyword .xtnb-hint-suffix,
html.theme-palette-jiguang #xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--builtin .xtnb-hint-prefix,
html.theme-palette-jiguang #xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--builtin .xtnb-hint-suffix,
html.theme-palette-jiguang #xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--user .xtnb-hint-prefix,
html.theme-palette-jiguang #xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-sym--user .xtnb-hint-suffix {
  color: #fff !important;
  opacity: 1 !important;
}

#xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-prefix {
  font-weight: 700;
}

#xtnb-cm-hint-portal li.CodeMirror-hint-active .xtnb-hint-suffix {
  font-weight: 500;
  color: rgba(255, 255, 255, 0.88) !important;
}

#xtnb-cm-hint-portal .CodeMirror-hint {
  display: block;
  margin: 0;
  padding: 3px 10px;
  line-height: 1.45;
  white-space: pre;
  cursor: pointer;
  color: inherit;
}
.page-research-notebook, .page-strategy-workshop .CodeMirror-hints,
.CodeMirror-hints {
  font-family: var(--xtnb-mono);
  font-size: 12px;
  z-index: 6001;
  max-height: 16em;
  overflow-y: auto;
  border: 1px solid var(--xtnb-border, #454545);
  background: var(--xtnb-panel-2, #252526);
  color: var(--xtnb-text, #d4d4d4);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
}

.page-research-notebook, .page-strategy-workshop .CodeMirror-hint,
.CodeMirror-hint {
  color: inherit;
}

.page-research-notebook, .page-strategy-workshop li.CodeMirror-hint-active,
li.CodeMirror-hint-active {
  background: var(--xtnb-accent, #0078d4);
  color: #fff;
}

/* 注释取消斜体：中英文混排时正体更易读 */
.page-research-notebook, .page-strategy-workshop .CodeMirror .cm-comment {
  font-style: normal;
}

