/* ==================================================================
   mindmap5.3 · node-card.css —— InfoCard 组件（阶段①定稿样式）
   ================================================================== */
.ic-card {
  --ac: var(--lv-root);
  /* UI 容器字体变化不得污染科技卡片（含编辑与管理预览）。 */
  font-family: var(--font-ui);
  --glow: 1;
  box-sizing: border-box;
  position: absolute;
  z-index: 2;
  width: 260px;
  background: var(--card-surface);
  border: 1px solid color-mix(in srgb, var(--ac) 42%, transparent);
  border-radius: 14px;
  backdrop-filter: blur(9px);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--ac) calc(12% * var(--glow)), transparent),
    0 14px 34px -14px color-mix(in srgb, var(--ac) calc(45% * var(--glow)), transparent),
    inset 0 0 26px -18px color-mix(in srgb, var(--ac) calc(65% * var(--glow)), transparent);
  padding: 13px 15px 11px;
  cursor: default;
  user-select: none;
  transition: box-shadow var(--anim-fast), border-color var(--anim-fast);
  left: 0; top: 0;
}
body.anim-pos .ic-card { transition: box-shadow var(--anim-fast), border-color var(--anim-fast), left var(--anim-move, .35s) ease, top var(--anim-move, .35s) ease, width var(--anim-fast); }

.ic-card:hover {
  border-color: color-mix(in srgb, var(--ac) 72%, transparent);
}
.ic-card.selected {
  border-color: var(--sel-ring);
  box-shadow:
    0 0 0 2px color-mix(in srgb, var(--sel-ring) 65%, transparent),
    0 0 22px -4px color-mix(in srgb, var(--sel-ring) 55%, transparent),
    inset 0 0 26px -18px color-mix(in srgb, var(--ac) 65%, transparent);
}
.ic-card.relation-pick { border-color: var(--rel-line); border-style: dashed; cursor: crosshair; }
.ic-card.merge-target { border-color: var(--danger); }

/* ---- tags ---- */
.ic-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.ic-tag {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11px; font-weight: 600; letter-spacing: .06em; line-height: 1;
  padding: 4.5px 9px; border-radius: 999px;
  color: var(--t-c);
  background: color-mix(in srgb, var(--t-c) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--t-c) 52%, transparent);
}
.ic-tag i { width: 5px; height: 5px; border-radius: 50%; background: var(--t-c); box-shadow: 0 0 6px var(--t-c); }
.tag--blue { --t-c: var(--tag-blue-a); }
.tag--purple { --t-c: var(--tag-purple-a); }
.tag--cyan { --t-c: var(--tag-cyan-a); }

/* ---- 渐变标题 + 光晕线 ---- */
.ic-title {
  font-size: 16.5px; font-weight: 800; line-height: 1.3; letter-spacing: .02em;
  background: linear-gradient(var(--grad-dir, 93deg), var(--g-from, var(--text-0)) 8%, var(--g-to, color-mix(in srgb, var(--ac) 88%, #ffffff)) 92%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  word-break: break-word;
}
.ic-glowline {
  height: 2px; margin: 8px 0 9px; border-radius: 2px; position: relative;
  background: linear-gradient(90deg, transparent 0%, var(--ac) 22%, var(--ac) 78%, transparent 100%);
}
.ic-glowline::after {
  content: ""; position: absolute; inset: -1px 0; border-radius: 2px;
  background: inherit; filter: blur(4.5px); opacity: calc(.75 * var(--glow));
}
body.no-anim .ic-glowline::after { animation: none; }

/* ---- 内容片段 ---- */
.ic-items { display: flex; flex-direction: column; gap: 6px; }
.frag {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 6.5px 8px 6.5px 10px; border-radius: 8px;
  background: rgba(127, 168, 255, .045);
  position: relative; font-size: 12.2px; line-height: 1.6; color: var(--text-1);
  word-break: break-word;
}
html[data-theme="light"] .frag { background: rgba(37, 99, 235, .045); }
.frag::before {
  content: ""; position: absolute; left: 0; top: 6px; bottom: 6px; width: 3px;
  border-radius: 3px; background: var(--fb);
  box-shadow: 0 0 8px color-mix(in srgb, var(--fb) 70%, transparent);
}
.frag--text  { --fb: var(--frag-text); }
.frag--link  { --fb: var(--frag-link); }
.frag--image { --fb: var(--frag-image); display: block; }
.frag--image > span:first-child { display: block; margin-bottom: 1px; }
.frag a {
  color: color-mix(in srgb, var(--frag-link) 82%, #ffffff);
  text-decoration: none; border-bottom: 1px dotted color-mix(in srgb, var(--frag-link) 65%, transparent);
  cursor: pointer;
}
html[data-theme="light"] .frag a { color: var(--frag-link); }
.frag .go-ic {
  flex: none; width: 15px; height: 15px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: color-mix(in srgb, var(--frag-link) 18%, transparent);
  border: 1px solid color-mix(in srgb, var(--frag-link) 45%, transparent);
  vertical-align: -3px; margin-left: 4px;
}
.frag .go-ic svg { width: 8.5px; height: 8.5px; stroke: var(--frag-link); fill: none; }
.frag-thumbs { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 6px; }
.thumb {
  width: 72px; height: 54px; border-radius: 7px; position: relative; overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--frag-image) 46%, transparent);
  display: flex; align-items: center; justify-content: center;
  background-size: cover; background-position: center;
}
.thumb .t-cap {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 2.5px 6px;
  font-size: 9.5px; color: #fff;
  background: linear-gradient(transparent, rgba(6, 12, 28, .78));
}
.thumb svg.t-mark { width: 20px; height: 20px; opacity: .85; stroke: #fff; fill: none; }

/* ---- 备注 ---- */
.ic-note {
  display: flex; gap: 7px; align-items: flex-start;
  margin-top: 8px; padding-top: 8px;
  border-top: 1px dashed rgba(148, 163, 199, .22);
  font-size: 11.4px; font-style: italic; line-height: 1.55; color: var(--note-text);
}
.ic-note svg { flex: none; width: 13px; height: 13px; margin-top: 1.5px; opacity: .75; stroke: currentColor; fill: none; }

/* ---- 出线端的分支开关：绝对定位，不参与正文尺寸和导出 ---- */
.node-fold {
  position: absolute; z-index: 3; display: grid; place-items: center;
  width: var(--node-fold-hit); height: var(--node-fold-hit); padding: 0;
  transform: translate(-50%, -50%); border: 0; border-radius: 50%;
  color: var(--ac); background: transparent; cursor: pointer; touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
.node-fold .mm-icon { position: relative; width: var(--node-fold-size); height: var(--node-fold-size); stroke-width: var(--node-fold-stroke); }
.node-fold[aria-expanded="true"] .mm-icon { width: var(--node-fold-expanded-size); height: var(--node-fold-expanded-size); }
/* 鼠标设备按需显示空心圆；只隐藏图形，保留原点击区与键盘入口。 */
@media (hover: hover) and (pointer: fine) {
  .node-fold[aria-expanded="true"] .mm-icon { opacity: 0; transition: opacity var(--anim-fast); }
  .ic-card:hover > .node-fold[aria-expanded="true"] .mm-icon,
  .node-fold[aria-expanded="true"]:focus-visible .mm-icon { opacity: 1; }
}
.node-fold .mm-icon circle { fill: var(--ui-panel); transition: fill var(--anim-fast); }
.node-fold-count { fill: currentColor; stroke: none; font: 600 var(--node-fold-count-font-size)/1 var(--font-ui); font-variant-numeric: tabular-nums; }
.node-fold:hover .mm-icon circle, .node-fold:focus-visible .mm-icon circle { fill: color-mix(in srgb, var(--ac) var(--node-fold-hover-tint), var(--ui-panel)); }
.node-fold:focus-visible { outline: var(--node-fold-focus-width) solid var(--ac); outline-offset: 1px; }
.node-fold[aria-expanded="false"]::before {
  content: ''; position: absolute; pointer-events: none;
  left: calc(50% - var(--node-fold-offset)); top: 50%;
  width: var(--node-fold-offset); height: var(--node-fold-stroke); background: var(--ac); transform: translateY(-50%);
}
.node-fold[data-direction="down"][aria-expanded="false"]::before {
  left: 50%; top: calc(50% - var(--node-fold-offset));
  width: var(--node-fold-stroke); height: var(--node-fold-offset); transform: translateX(-50%);
}
@media (pointer: coarse), (max-width: 899px) { .node-fold { width: var(--node-fold-touch-hit); height: var(--node-fold-touch-hit); } }

/* ---- 纯标题窄条 ---- */
.ic-card--empty { display: flex; align-items: center; gap: 9px; padding: 10px 13px; border-radius: 11px; }
.ic-card--empty .ic-title {
  font-size: 13.5px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  background: linear-gradient(93deg, var(--text-0) 20%, color-mix(in srgb, var(--ac) 75%, #ffffff));
  -webkit-background-clip: text; background-clip: text;
}
.ic-addhint {
  width: 17px; height: 17px; border-radius: 50%; flex: none;
  border: 1px dashed color-mix(in srgb, var(--ac) 60%, transparent);
  color: color-mix(in srgb, var(--ac) 88%, #fff);
  font-size: 12px; line-height: 15px; text-align: center; opacity: .85;
}

/* ---- 根节点 ---- */
.ic-card--root { width: 310px; padding: 19px 21px 16px;
  background: radial-gradient(210px 90px at 22% -12%, color-mix(in srgb, var(--ac) 22%, transparent), transparent 72%), var(--card-surface);
  border-width: 1.6px;
  border-color: color-mix(in srgb, var(--ac) 65%, transparent);
}
.ic-card--root::before, .ic-card--root::after {
  content: ""; position: absolute; width: 16px; height: 16px; pointer-events: none;
  border: 2px solid color-mix(in srgb, var(--ac) 85%, #fff);
}
.ic-card--root::before { left: -5px; top: -5px; border-right: 0; border-bottom: 0; border-radius: 6px 0 0 0; }
.ic-card--root::after { right: -5px; bottom: -5px; border-left: 0; border-top: 0; border-radius: 0 0 6px 0; }
.ic-kicker { font-size: 10px; font-weight: 700; letter-spacing: .22em; white-space: nowrap;
  color: color-mix(in srgb, var(--ac) 80%, #fff); margin-bottom: 6px; }
html[data-theme="light"] .ic-kicker { color: var(--ac); }
.ic-card--root .ic-title { font-size: 21px; }
.ic-sub { font-size: 11px; color: var(--text-2); letter-spacing: .1em; margin-top: 3px; }

/* ---- 汇总节点 ---- */
.ic-card--summary { border-style: solid; }
.ic-sig {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 10.5px; font-weight: 800; letter-spacing: .18em;
  color: color-mix(in srgb, var(--lv-sum) 90%, #fff);
  border: 1px solid color-mix(in srgb, var(--lv-sum) 55%, transparent);
  background: color-mix(in srgb, var(--lv-sum) 14%, transparent);
  border-radius: 7px; padding: 4px 9px; margin-bottom: 8px;
}
html[data-theme="light"] .ic-sig { color: var(--lv-sum); }
.ic-sig .sigma { font-family: Georgia, serif; font-size: 13px; }
.ic-members { font-size: 10.5px; color: var(--text-2); letter-spacing: .05em; margin-bottom: 7px; }
.ic-members b { color: color-mix(in srgb, var(--lv-sum) 85%, #fff); }
html[data-theme="light"] .ic-members b { color: var(--lv-sum); }

/* 图片加载失败占位 */
.thumb.img-error { background: linear-gradient(135deg, #312e81, #7e22ce 55%, #0ea5e9) !important; }

/* ==================================================================
   拖拽换父把手 / 列宽调整把手（交互逻辑见 js/interact/card-drag.js）
   ================================================================== */
/* ---- 左上角拖拽与编辑：共用尺寸、圆角及显隐时机，不改变卡片测量 ---- */
.ic-drag, .ic-edit {
  --node-action-hit: var(--node-action-size);
  position: absolute; top: calc(var(--node-action-hit) / -2); z-index: 3;
  width: var(--node-action-hit); height: var(--node-action-hit); padding: 0;
  display: flex; align-items: center; justify-content: center; box-sizing: border-box;
  border: 1px solid var(--ui-border); border-radius: var(--node-action-radius);
  color: var(--ui-muted); background: var(--ui-panel);
  opacity: 0; pointer-events: none;
  transition: opacity var(--anim-fast), color var(--anim-fast);
}
.ic-drag { left: calc(var(--node-action-hit) / -2); cursor: grab; touch-action: none; }
.ic-drag:active { cursor: grabbing; }
.ic-drag-glyph { font-size: var(--node-action-icon-size); line-height: 1; }
.ic-edit { left: calc(var(--node-action-hit) / 2 + var(--node-action-gap)); cursor: pointer; touch-action: manipulation; }
.ic-edit .mm-icon { width: var(--node-action-icon-size); height: var(--node-action-icon-size); }
.ic-card:hover > :is(.ic-drag, .ic-edit),
.ic-card:focus-within > :is(.ic-drag, .ic-edit) { opacity: 1; pointer-events: auto; }
:is(.ic-drag, .ic-edit):hover, .ic-edit:focus-visible { color: var(--ui-accent); background: var(--ui-accent-soft); }
.ic-edit:focus-visible { outline: var(--node-fold-focus-width) solid var(--ui-accent); outline-offset: 2px; }
@media (pointer: coarse), (max-width: 899px) {
  .ic-drag, .ic-edit {
    --node-action-hit: var(--node-action-touch-size);
    opacity: 1; pointer-events: auto;
    border: 0; background: transparent;
  }
  /* 两个热区互不重叠，均保留24px可见表面，避免遮住标题。 */
  :is(.ic-drag, .ic-edit)::before {
    content: ''; position: absolute; inset: calc((var(--node-action-hit) - var(--node-action-size)) / 2);
    border: 1px solid var(--ui-border); border-radius: var(--node-action-radius); background: var(--ui-panel);
  }
  .ic-drag-glyph, .ic-edit .mm-icon { position: relative; }
  :is(.ic-drag, .ic-edit):hover, .ic-edit:focus-visible { background: transparent; }
  :is(.ic-drag, .ic-edit):hover::before, .ic-edit:focus-visible::before { background: var(--ui-accent-soft); }
}

/* ---- 列宽调整把手：右缘竖条热区 ---- */
.ic-colw {
  position: absolute; right: -5px; top: 8px; bottom: 8px; z-index: 3;
  width: 10px; border-radius: 5px;
  cursor: col-resize;
  opacity: 0;
  transition: opacity var(--anim-fast);
}
.ic-colw::after {
  content: ""; position: absolute; left: 4px; top: 22%; bottom: 22%; width: 2px;
  border-radius: 2px;
  background: color-mix(in srgb, var(--ac, var(--lv-root)) 70%, transparent);
  opacity: 0; transition: opacity var(--anim-fast);
}
.ic-card:hover .ic-colw { opacity: 1; }
.ic-card:hover .ic-colw::after { opacity: .9; }

/* 触屏（pointer: coarse，与 MM.U.isTouch 同口径）：把手常显并加大热区 */
@media (pointer: coarse) {
  .ic-colw { opacity: 1; right: -7px; width: 14px; }
  .ic-colw::after { opacity: .9; left: 6px; }
}

/* ---- 拖动中的卡片：半透明 + 抬升 + 阴影 ---- */
.ic-card.dragging {
  z-index: 40;
  opacity: .55;
  cursor: grabbing;
  box-shadow:
    0 22px 48px -12px rgba(0, 0, 0, .55),
    0 0 0 1px color-mix(in srgb, var(--ac, var(--lv-root)) 60%, transparent);
}

/* ---- 最终父节点高亮：上下插槽与中区落位均显示，父节点语义始终一致 ---- */
.ic-card.drop-parent-hint {
  border-color: var(--ac, var(--lv-root));
  box-shadow:
    0 0 0 2px color-mix(in srgb, var(--ac, var(--lv-root)) 75%, transparent),
    0 0 26px -2px color-mix(in srgb, var(--ac, var(--lv-root)) 80%, transparent),
    inset 0 0 26px -14px color-mix(in srgb, var(--ac, var(--lv-root)) 85%, transparent);
}

/* ---- 兄弟排序插入指示线：拖动中贴目标兄弟上/下边缘（单例 div，逻辑见 card-drag.js） ----
   比改父高亮更亮更粗：白芯 + 亮青辉光，宽度由 JS 设为兄弟卡宽 + 左右各 12px */
.reorder-line {
  position: absolute;
  z-index: 50;                          /* 高于普通卡(z:2)与拖动中的卡(z:40) */
  --drop-inv-scale: 1;
  height: 4px;
  border-radius: 2px;
  pointer-events: none;                 /* 命中判定用坐标计算，不参与指针事件 */
  background: linear-gradient(90deg, transparent,
    color-mix(in srgb, var(--tag-cyan-a, #3ee6ff) 88%, transparent) 8%,
    #f4fcff 50%,
    color-mix(in srgb, var(--tag-cyan-a, #3ee6ff) 88%, transparent) 92%,
    transparent);
  box-shadow:
    0 0 0 calc(1px * var(--drop-inv-scale)) color-mix(in srgb, #ffffff 55%, transparent),
    0 0 calc(12px * var(--drop-inv-scale)) calc(2px * var(--drop-inv-scale)) color-mix(in srgb, var(--tag-cyan-a, #3ee6ff) 80%, transparent),
    0 0 calc(26px * var(--drop-inv-scale)) calc(6px * var(--drop-inv-scale)) color-mix(in srgb, var(--tag-cyan-a, #3ee6ff) 42%, transparent);
}

/* ---- 拖动 / 调列宽期间：禁用卡片过渡与动画（参照 canvas.css 的 body.measuring 范式） ---- */
body.card-dragging .ic-card,
body.card-dragging .ic-card *,
body.col-resizing .ic-card,
body.col-resizing .ic-card * { transition: none !important; animation: none !important; }
body.card-dragging, body.card-dragging #stage { cursor: grabbing; }
body.col-resizing, body.col-resizing #stage { cursor: col-resize; }
/* 调列宽时把手保持可见；拖动换父时隐藏其余把手，仅保留被拖卡自己的 */
body.col-resizing .ic-colw { opacity: 1; }
body.card-dragging :is(.ic-drag, .ic-edit, .ic-colw) { opacity: 0 !important; pointer-events: none; }
body.card-dragging .ic-card.dragging > :is(.ic-drag, .ic-edit) { opacity: 1 !important; }

/* ---- 雅致卡片：局部令牌与原型六色；科技卡片不继承此投影 ---- */
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) {
  --text-0: var(--ui-text); --text-1: var(--ui-text); --text-2: var(--ui-muted);
  --note-text: var(--ui-muted); --font-ui: var(--ui-font); --mono: var(--ui-font-mono);
  font-family: var(--elegant-font); color: var(--elegant-text);
  background: var(--elegant-surface);
  border: 1px solid var(--elegant-border);
  border-left: var(--elegant-accent-w) solid var(--ac);
  border-radius: var(--elegant-radius);
  box-shadow: var(--elegant-shadow); backdrop-filter: none;
  padding: var(--elegant-padding);
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]):hover { box-shadow: var(--elegant-shadow-hover); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]).selected {
  border-color: var(--ac);
  box-shadow: 0 0 0 var(--elegant-selected-ring-w) color-mix(in srgb, var(--ac) var(--elegant-selected-ring-tint), transparent), var(--elegant-shadow-selected);
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]).selected.selection-primary { outline-color: var(--ac); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]):focus-visible {
  outline: var(--elegant-focus-width) solid var(--ui-accent); outline-offset: var(--elegant-focus-offset);
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]).relation-pick { border-color: var(--rel-line); border-style: dashed; cursor: crosshair; }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]).merge-target { border-color: var(--danger); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]).drop-parent-hint { border-color: var(--ac); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ac) 65%, transparent), var(--elegant-shadow-hover); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]).dragging { box-shadow: 0 15px 30px #192b3b35; }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-title {
  font-size: var(--elegant-title-size); font-weight: var(--elegant-title-weight);
  line-height: var(--elegant-title-line); letter-spacing: 0; margin: var(--elegant-title-margin);
  background: none; color: var(--elegant-text); -webkit-text-fill-color: currentColor;
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-glowline { display: none; }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-items { gap: 0; margin: 0; }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag {
  --fb: var(--ac); font-size: var(--elegant-body-size); line-height: var(--elegant-body-line);
  color: var(--elegant-text); padding: 0; margin: var(--elegant-body-margin); background: transparent;
  border-radius: var(--elegant-tag-radius);
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag::before { display: none; }
/* 普通正文与引用共用节点色相，以底色深浅和左线浓淡区分内容层级。 */
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--text {
  padding: var(--elegant-body-padding);
  /* 与引用共用外间距，使两类色块的左右边界和整体宽度一致。 */
  margin: var(--elegant-quote-margin);
  border-left: var(--elegant-body-line-w) solid color-mix(in srgb, var(--ac) var(--elegant-body-line-tint), transparent);
  background: color-mix(in srgb, var(--ac) var(--elegant-body-tint), var(--elegant-surface));
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--quote {
  --reader-quote-color: var(--ac);
  padding: var(--elegant-quote-padding); margin: var(--elegant-quote-margin);
  border: 0; border-left: var(--elegant-quote-line-w) solid color-mix(in srgb, var(--ac) var(--elegant-quote-line-tint), transparent);
  background: color-mix(in srgb, var(--ac) var(--elegant-quote-tint), var(--elegant-surface));
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--quote:hover,
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--quote:focus-visible {
  background: color-mix(in srgb, var(--ac) var(--elegant-quote-hover-tint), var(--elegant-surface));
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--quote:focus-visible,
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--capture:focus-visible { outline: 2px solid var(--ac); outline-offset: 3px; }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .quote-copy { display: block; -webkit-line-clamp: unset; overflow: visible; }
/* 来源间距统一由外边距控制，避免与 Reader 的 flex gap 叠加。 */
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--quote,
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--capture { gap: 0; }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .quote-source,
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .capture-source {
  font: 400 var(--elegant-source-size)/var(--elegant-source-line) var(--elegant-font);
  color: var(--elegant-muted); margin: var(--elegant-source-margin);
  white-space: normal; overflow-wrap: anywhere;
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--capture { --reader-capture-color: var(--ac); border-color: color-mix(in srgb, var(--ac) 50%, transparent); background: color-mix(in srgb, var(--ac) 5%, var(--elegant-surface)); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag--capture:hover { background: color-mix(in srgb, var(--ac) 9%, var(--elegant-surface)); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag a { color: var(--ac); border-bottom-color: var(--ac); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-tags { gap: var(--elegant-tag-gap); margin: var(--elegant-tags-margin); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-tag {
  --t-c: var(--ac); color: var(--ac); font-size: var(--elegant-tag-size); font-weight: 400; line-height: 1.5;
  border-radius: var(--elegant-tag-radius); padding: var(--elegant-tag-padding); letter-spacing: 0;
  background: color-mix(in srgb, var(--ac) var(--elegant-tag-tint), var(--elegant-surface)); border: 0;
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-tag i { display: none; }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-note {
  color: var(--elegant-muted); font-size: var(--elegant-note-size); line-height: var(--elegant-note-line);
  font-style: normal; margin: var(--elegant-note-margin); padding: 0; border: 0;
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-note > svg { display: none; }
.ic-card--empty:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) { display: block; }
.ic-card--empty:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-title { white-space: normal; overflow: visible; text-overflow: clip; margin: 0; }
.ic-card--root:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) {
  padding: var(--elegant-root-padding);
  background: color-mix(in srgb, var(--ac) var(--elegant-root-tint), var(--elegant-surface));
}
.ic-card--root:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"])::before,
.ic-card--root:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"])::after { display: none; }
.ic-card--root:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-title { font-size: var(--elegant-root-size); }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-kicker {
  color: var(--ac); font-size: var(--elegant-root-label-size); letter-spacing: var(--elegant-root-label-spacing); margin-bottom: var(--elegant-root-label-gap);
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-sub { display: none; }
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-sig {
  color: var(--ac); border-color: color-mix(in srgb, var(--ac) 50%, transparent);
  background: color-mix(in srgb, var(--ac) 8%, var(--elegant-surface)); border-radius: var(--elegant-tag-radius); letter-spacing: .04em;
}
.ic-card:is([data-map-style="elegant"], [data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-members b { color: var(--ac); }
/* 黑字只增强文字；另外两种减少普通 item 的嵌套，摘录仍保留来源竖线。 */
.ic-card:is([data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) {
  --elegant-text: var(--card-ink-text);
  --elegant-muted: var(--card-readable-muted);
  --text-0: var(--elegant-text); --text-1: var(--elegant-text); --text-2: var(--elegant-muted);
}
.ic-card:is([data-map-style="compact"], [data-map-style^="ribbon"]) {
  --elegant-text: var(--card-compact-text);
  --elegant-radius: var(--card-compact-radius);
  --elegant-padding: var(--card-compact-padding);
  --elegant-root-padding: var(--card-compact-padding);
  --elegant-title-weight: var(--card-compact-title-weight);
  --elegant-title-line: var(--card-compact-title-line);
  --elegant-body-line: var(--card-compact-body-line);
  --elegant-body-margin: 0;
  --elegant-quote-margin: 0;
  --elegant-note-line: var(--card-compact-note-line);
  --elegant-root-label-gap: var(--card-compact-gap);
  border-left-color: var(--title-ac);
}
.ic-card[data-map-style="compact"] .ic-title { color: var(--title-ac); }
.ic-card:is([data-map-style="compact"], [data-map-style^="ribbon"]) .ic-items { gap: var(--card-compact-gap); }
.ic-card:is([data-map-style="compact"], [data-map-style^="ribbon"]) .frag--text {
  padding: 0; margin: 0; border: 0; background: transparent;
}
.ic-card:is([data-map-style="compact"], [data-map-style^="ribbon"]) .frag--text + .frag--text {
  padding-top: var(--card-compact-gap); border-top: 1px solid var(--elegant-border);
}
.ic-card:is([data-map-style="compact"], [data-map-style^="ribbon"]) .frag--quote {
  border-left-color: var(--title-ac);
}
.ic-card:is([data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .frag a,
.ic-card:is([data-map-style="ink"], [data-map-style="compact"], [data-map-style^="ribbon"]) .ic-tag { color: var(--title-ac); }
.ic-card[data-map-style^="ribbon"] {
  display: flex; flex-direction: column; align-items: stretch; gap: 0;
  border-left-width: 1px; border-left-color: var(--elegant-border);
}
.ic-card[data-map-style^="ribbon"] .ic-sig { align-self: flex-start; }
/* 顺序只影响视觉：ROOT / Σ 身份仍保留，标题编辑中的 DOM 不拆卸。 */
.ic-card[data-map-style^="ribbon"] .ic-title {
  order: -1; padding: var(--card-header-padding);
  margin: calc(-1 * var(--card-compact-top)) calc(-1 * var(--card-compact-side)) var(--card-compact-gap);
  color: var(--card-header-text); -webkit-text-fill-color: currentColor;
  background: var(--header-ac); -webkit-background-clip: border-box; background-clip: border-box;
  border-radius: calc(var(--card-compact-radius) - 1px) calc(var(--card-compact-radius) - 1px) 0 0;
}
.ic-card--empty[data-map-style^="ribbon"] { padding-bottom: 0; }
.ic-card--empty[data-map-style^="ribbon"] .ic-title {
  margin-bottom: 0; border-radius: calc(var(--card-compact-radius) - 1px);
}
/* 未填写标题的摘录不制造空色栏，进入标题编辑后仍保留原编辑目标。 */
.ic-card[data-map-style="ribbon"] .ic-title:empty:not([contenteditable="true"]) {
  padding: 0; margin: 0; background: transparent;
}
/* 常显款用一行标题的实际高度占位，内容仍为空，不插入空格或伪标题。 */
.ic-card[data-map-style="ribbon-always"] .ic-title:empty {
  box-sizing: border-box;
  min-height: calc(1em * var(--card-compact-title-line) + 2 * var(--card-header-block-padding));
}
body.map-style-reflow .ic-card { transition: none !important; }

/* 子树标签采用所属色系 600 实色底和白字，独立于标题层级。 */
.ic-card[data-subtree-tags="true"] .ic-tag {
  --t-c: var(--tag-ac); background: var(--tag-ac); color: var(--card-header-text);
  border-color: var(--tag-ac); text-shadow: none;
}
.ic-card[data-subtree-tags="true"] .ic-tag i { display: none; }

/* 独立备注仅限制节点摘要的实际行数，完整正文保存在备注实体中。 */
.ic-linked-notes .ic-note>span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
.ic-linked-notes{max-height:calc(1.7em * 6);overflow:hidden}
