/* =============================================================================
 * 「老板思维导图」样式（2026-09-19 · 开发员18号）
 * -----------------------------------------------------------------------------
 * 🔴 本项目样式铁律（照做，别踩）：
 *   ① 不碰 style.css / hero.css / 别人的 css —— 本文件**排在它们之后**加载，
 *      所有规则用 `#sub-mindmap` 作用域 + `mm-` 前缀隔离，天然不和别人撞。
 *   ② 类名/ID 全局唯一（写前已 grep：`mm` 前缀零占用、`.mm-*` 零占用）。
 *   ③ 子页底部必须留 ≥74px（底部 TabBar 实测高），否则最后一个按钮被盖住。
 *   ④ 注释里**绝对不要出现注释结束符那两个字符连写**——它会提前闭合注释，
 *      把它后面的规则整块吞掉（2026-09-19 实测踩到：`#sub-mindmap` 主规则被吞 →
 *      padding-bottom 算出来是 0px，而其它规则看着又正常，极难发现）。
 *      🔧 写完必跑：tools/check-css-comment-trap.py <文件或目录>
 * ========================================================================== */

#sub-mindmap {
  --mm-brand: #f95901;
  --mm-brand-2: #c23c00;
  --mm-soft: #fff6ee;
  --mm-paper: #fffdfa;
  --mm-ink: #24190f;
  --mm-ink2: #8b7768;
  --mm-ink3: #b6a597;
  --mm-line: rgba(150, 100, 50, .15);
  --mm-line2: rgba(150, 100, 50, .3);
  --mm-ok: #0f766e;
  --mm-warn: #b45309;
  --mm-danger: #c2410c;
  padding-bottom: 92px;            /* 铁律③：底部 TabBar 留白 */
  color: var(--mm-ink);
}

/* 图标色（老板网格卡用；本项目的 f-* 各自定义在自己的 css 里，这里是思维导图那份） */
.f-mind { background: linear-gradient(135deg, #ffb07a, #f95901 60%, #c23c00); }

#sub-mindmap .mm-wrap { padding: 0 16px; }

/* ============================ 起点：Hero ============================ */
#sub-mindmap .mm-hero {
  margin: 6px 16px 0;
  padding: 20px 18px 18px;
  border-radius: 20px;
  background:
    radial-gradient(120% 120% at 100% 0%, #ffe9d6 0%, rgba(255, 233, 214, 0) 58%),
    linear-gradient(180deg, var(--mm-soft), var(--mm-paper));
  border: 1px solid var(--mm-line);
  position: relative; overflow: hidden;
}
#sub-mindmap .mm-hero::after {
  content: ''; position: absolute; right: -30px; top: -30px;
  width: 140px; height: 140px; border-radius: 50%;
  background: radial-gradient(circle, rgba(249, 89, 1, .14), rgba(249, 89, 1, 0) 68%);
  pointer-events: none;
}
#sub-mindmap .mm-hero-badge {
  width: 46px; height: 46px; border-radius: 14px; display: grid; place-items: center;
  font-size: 24px; margin-bottom: 12px;
  background: linear-gradient(135deg, #ffb07a, #f95901 60%, #c23c00);
  box-shadow: 0 6px 16px rgba(249, 89, 1, .28);
}
#sub-mindmap .mm-hero-title { font-size: 19px; font-weight: 700; letter-spacing: .2px; }
#sub-mindmap .mm-hero-sub {
  margin-top: 6px; font-size: 12px; color: var(--mm-brand-2);
  font-weight: 600; letter-spacing: .6px;
}
#sub-mindmap .mm-hero-lead {
  margin: 12px 0 0; font-size: 13px; line-height: 1.75; color: var(--mm-ink2);
}
#sub-mindmap .mm-hero-lead b { color: var(--mm-brand-2); }

/* ============================ 卡片 / 输入 ============================ */
#sub-mindmap .mm-card {
  margin: 14px 16px 0; padding: 16px;
  background: #fff; border: 1px solid var(--mm-line);
  border-radius: 18px; box-shadow: 0 4px 18px rgba(180, 120, 60, .06);
}
#sub-mindmap .mm-lbl { font-size: 13.5px; font-weight: 700; margin-bottom: 10px; }
#sub-mindmap .mm-lbl span {
  display: block; margin-top: 3px; font-size: 11.5px; font-weight: 400; color: var(--mm-ink3);
}
#sub-mindmap .mm-input {
  width: 100%; box-sizing: border-box; resize: none;
  padding: 12px 13px; border-radius: 13px;
  border: 1.5px solid var(--mm-line2); background: var(--mm-paper);
  font-size: 14px; line-height: 1.65; color: var(--mm-ink);
  font-family: inherit; outline: none;
  transition: border-color .18s, box-shadow .18s;
}
#sub-mindmap .mm-input:focus {
  border-color: var(--mm-brand);
  box-shadow: 0 0 0 3px rgba(249, 89, 1, .12);
}
#sub-mindmap .mm-input::placeholder { color: var(--mm-ink3); }

#sub-mindmap .mm-scene { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; }
#sub-mindmap .mm-scene b {
  font-size: 11.5px; font-weight: 600; color: var(--mm-ink2);
  width: 100%; margin-bottom: 1px;
}
#sub-mindmap .mm-chip {
  padding: 6px 11px; border-radius: 999px; font-size: 12px; font-weight: 600;
  color: var(--mm-ink2); background: #fff; border: 1px solid var(--mm-line2);
  cursor: pointer; transition: all .16s; -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-chip.on {
  color: #fff; background: linear-gradient(135deg, #ff8a3d, var(--mm-brand));
  border-color: transparent; box-shadow: 0 4px 12px rgba(249, 89, 1, .25);
}

#sub-mindmap .mm-go {
  width: 100%; margin-top: 14px; padding: 14px;
  border: none; border-radius: 14px; cursor: pointer;
  color: #fff; font-size: 15px; font-weight: 700; font-family: inherit;
  background: linear-gradient(135deg, #ff8a3d, var(--mm-brand) 55%, var(--mm-brand-2));
  box-shadow: 0 8px 20px rgba(249, 89, 1, .28);
  transition: transform .12s, box-shadow .12s, opacity .12s;
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-go:active { transform: translateY(1px) scale(.995); }
#sub-mindmap .mm-go:disabled { opacity: .55; box-shadow: none; cursor: default; }
#sub-mindmap .mm-go span { font-size: 11.5px; font-weight: 500; opacity: .9; margin-left: 6px; }
#sub-mindmap .mm-hint { margin-top: 9px; font-size: 12px; line-height: 1.6; color: var(--mm-ink2); min-height: 0; }
#sub-mindmap .mm-hint.bad { color: var(--mm-danger); }
#sub-mindmap .mm-hint.ok { color: var(--mm-ok); }

/* ============================ 分区标题 ============================ */
#sub-mindmap .mm-sec { margin: 22px 16px 0; }
#sub-mindmap .mm-sec-h {
  display: flex; align-items: center; gap: 8px;
  font-size: 13.5px; font-weight: 700; margin-bottom: 11px;
}
#sub-mindmap .mm-sec-h i {
  width: 4px; height: 14px; border-radius: 2px; flex: none;
  background: linear-gradient(180deg, #ff8a3d, var(--mm-brand));
}
#sub-mindmap .mm-sec-h span { font-size: 11.5px; font-weight: 400; color: var(--mm-ink3); }

/* 模板 */
#sub-mindmap .mm-tpl { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
#sub-mindmap .mm-tpl-card {
  padding: 13px 12px; border-radius: 15px; cursor: pointer;
  background: #fff; border: 1px solid var(--mm-line);
  transition: transform .14s, box-shadow .14s, border-color .14s;
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-tpl-card:active { transform: scale(.98); }
#sub-mindmap .mm-tpl-card:hover { border-color: var(--mm-line2); box-shadow: 0 6px 16px rgba(180, 120, 60, .09); }
#sub-mindmap .mm-tpl-ico { font-size: 19px; }
#sub-mindmap .mm-tpl-name { margin-top: 7px; font-size: 13px; font-weight: 700; }
#sub-mindmap .mm-tpl-desc { margin-top: 3px; font-size: 11px; line-height: 1.5; color: var(--mm-ink3); }

/* 最近导图 */
#sub-mindmap .mm-recent { display: flex; flex-direction: column; gap: 9px; }
#sub-mindmap .mm-mini {
  display: flex; align-items: center; gap: 11px; padding: 12px 13px;
  border-radius: 14px; background: #fff; border: 1px solid var(--mm-line); cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-mini:active { transform: scale(.995); }
#sub-mindmap .mm-mini-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--mm-brand); flex: none; }
#sub-mindmap .mm-mini-main { flex: 1; min-width: 0; }
#sub-mindmap .mm-mini-t {
  font-size: 13.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#sub-mindmap .mm-mini-d { margin-top: 3px; font-size: 11px; color: var(--mm-ink3); }
#sub-mindmap .mm-mini-go { font-size: 17px; color: var(--mm-ink3); flex: none; }
#sub-mindmap .mm-empty {
  padding: 22px 16px; text-align: center; font-size: 12.5px; line-height: 1.8;
  color: var(--mm-ink3); background: var(--mm-paper); border: 1px dashed var(--mm-line2); border-radius: 14px;
}

#sub-mindmap .mm-ghost {
  width: 100%; margin-top: 10px; padding: 12px; border-radius: 13px; cursor: pointer;
  background: #fff; border: 1px dashed var(--mm-line2); color: var(--mm-ink2);
  font-size: 13px; font-weight: 600; font-family: inherit;
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-ghost:active { background: var(--mm-soft); }

#sub-mindmap .mm-note {
  margin: 18px 16px 0; padding: 12px 13px; border-radius: 13px;
  background: var(--mm-soft); border: 1px solid rgba(249, 89, 1, .18);
  font-size: 11.5px; line-height: 1.7; color: #8a5a33;
}
#sub-mindmap .mm-note b { color: var(--mm-brand-2); }

/* ============================ 编辑器 ============================ */
#sub-mindmap .mm-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 12px; margin: 0 0 8px;
  position: sticky; top: 0; z-index: 6;
  background: rgba(255, 253, 250, .94);
  backdrop-filter: saturate(1.4) blur(8px);
  border-bottom: 1px solid var(--mm-line);
}
#sub-mindmap .mm-back {
  flex: none; padding: 6px 10px; border-radius: 10px; font-size: 13px; font-weight: 600;
  color: var(--mm-ink2); background: #fff; border: 1px solid var(--mm-line2); cursor: pointer;
  font-family: inherit; -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-doc-title {
  flex: 1; min-width: 0; font-size: 14px; font-weight: 700;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  padding: 4px 2px; border-bottom: 1px dashed transparent; cursor: text;
}
#sub-mindmap .mm-doc-title:hover { border-bottom-color: var(--mm-line2); }
#sub-mindmap .mm-iconbtn {
  flex: none; width: 34px; height: 34px; border-radius: 11px; cursor: pointer;
  display: grid; place-items: center; font-size: 15px;
  background: #fff; border: 1px solid var(--mm-line2); color: var(--mm-ink2);
  font-family: inherit; -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-iconbtn:disabled { opacity: .4; cursor: default; }
#sub-mindmap .mm-iconbtn:not(:disabled):active { background: var(--mm-soft); }

/* 更多菜单 */
#sub-mindmap .mm-menu {
  position: absolute; right: 12px; top: 52px; z-index: 30;
  min-width: 168px; padding: 6px; border-radius: 14px;
  background: #fff; border: 1px solid var(--mm-line);
  box-shadow: 0 14px 40px rgba(90, 60, 30, .18);
}
#sub-mindmap .mm-menu div {
  padding: 10px 12px; border-radius: 10px; font-size: 13.5px; cursor: pointer;
  display: flex; align-items: center; gap: 9px;
}
#sub-mindmap .mm-menu div:active { background: var(--mm-soft); }
#sub-mindmap .mm-menu div.danger { color: var(--mm-danger); }
#sub-mindmap .mm-menu hr { border: none; border-top: 1px solid var(--mm-line); margin: 5px 4px; }

/* 画布 */
#sub-mindmap .mm-canvas {
  position: relative;               /* 🔴 铁律：内部有 absolute 装饰/节点，容器必须 relative，否则手机端整页被撑宽 */
  margin: 0 12px; padding: 18px;
  border-radius: 18px; border: 1px solid var(--mm-line);
  background:
    radial-gradient(circle at 1px 1px, rgba(180, 130, 80, .16) 1px, transparent 0) 0 0 / 18px 18px,
    var(--mm-paper);
  overflow: auto; -webkit-overflow-scrolling: touch;
  max-height: 62vh;
}
#sub-mindmap .mm-stage { position: relative; }
/* 缩放用两层：外层占"缩放后"的尺寸（撑出正确的滚动区），内层被 scale */
#sub-mindmap .mm-stage-inner { position: relative; transform-origin: 0 0; }

/* 🔴 本项目反复踩的坑：`hidden` 属性会被 `display: flex/grid` 盖掉
   （浏览器默认样式优先级低于类选择器，元素明明 hidden=true 却还在屏幕上）。
   原来这里是一份**按元素逐个列举**的兜底名单，2026-09-19 又踩了一次 ——
   我给起点页新加的 `.mm-entries`/`#mmAiBox`/`#mmTplBox` 不在名单里，
   于是点②之后那三张入口卡**照样显示在模板上面**，而 JS 的 `if (el.hidden)` 判断是"已隐藏"（假阴性），
   单测/诊断全绿、只有截图上能看出来。
   → 改成一条**全子页兜底**，这类 bug 就不可能再犯。新加 flex/grid 元素时不用再回来登记。 */
#sub-mindmap [hidden] { display: none !important; }

#sub-mindmap .mm-links { position: absolute; left: 0; top: 0; overflow: visible; pointer-events: none; }
#sub-mindmap .mm-node {
  position: absolute; box-sizing: border-box;
  display: flex; flex-direction: column; justify-content: center;
  border-radius: 10px; cursor: pointer; user-select: none;
  -webkit-tap-highlight-color: transparent;
  transition: box-shadow .14s, transform .14s;
}
#sub-mindmap .mm-node .mm-line-t {
  white-space: pre; font-weight: inherit; line-height: 20px;
}
/* 🔴 节点里的文字层不接收指针事件 —— 这样双击时**两次点击的目标始终是同一个 .mm-node**。
   否则 paint() 重建 innerHTML 后，第二次点击落在"新的"子元素上，浏览器判定
   两次不是同一目标 → **压根不派发 dblclick**（2026-09-19 实测：click 2 次、dblclick 0 次）。
   折叠圆点必须保留可点，所以单独放行。 */
#sub-mindmap .mm-node > div:not(.mm-fold) { pointer-events: none; }
#sub-mindmap .mm-node.d0 {
  border-radius: 12px; color: #fff; font-weight: 600; font-size: 15px;
  background: var(--mm-c); box-shadow: 0 6px 16px rgba(249, 89, 1, .22);
}
#sub-mindmap .mm-node.d1 {
  font-weight: 600; font-size: 13.5px; color: var(--mm-ink);
  background: var(--mm-c10); border: 1.4px solid var(--mm-c45);
}
#sub-mindmap .mm-node.d2,
#sub-mindmap .mm-node.d3 {
  font-size: 13px; color: #3f342a;
  background: #fff; border: 1.2px solid var(--mm-c28);
}
#sub-mindmap .mm-node.sel {
  box-shadow: 0 0 0 2.5px rgba(249, 89, 1, .55), 0 8px 20px rgba(249, 89, 1, .2);
  z-index: 3;
}
#sub-mindmap .mm-node .mm-fold {
  position: absolute; right: -9px; top: 50%; transform: translateY(-50%);
  width: 18px; height: 18px; border-radius: 50%;
  display: grid; place-items: center;
  font-size: 10px; font-weight: 700; line-height: 1;
  color: #fff; background: var(--mm-c);
  border: 2px solid #fff; box-shadow: 0 2px 6px rgba(0, 0, 0, .14);
}
#sub-mindmap .mm-node .mm-count {
  position: absolute; left: 50%; bottom: -9px; transform: translateX(-50%);
  padding: 1px 6px; border-radius: 8px; font-size: 10px; font-weight: 700;
  color: #fff; background: var(--mm-c); opacity: .92;
}
#sub-mindmap .mm-edit {
  position: absolute; z-index: 5; box-sizing: border-box;
  border: none; outline: 2px solid var(--mm-brand); border-radius: 10px;
  padding: 6px 12px; font-family: inherit; line-height: 20px;
  background: #fff; color: var(--mm-ink); resize: none; overflow: hidden;
  box-shadow: 0 8px 24px rgba(249, 89, 1, .2);
}
#sub-mindmap .mm-gen-flag {
  position: absolute; left: 0; top: -26px;
  font-size: 11px; font-weight: 600; color: var(--mm-brand-2);
  display: flex; align-items: center; gap: 5px;
}
#sub-mindmap .mm-dots { display: inline-flex; gap: 3px; }
#sub-mindmap .mm-dots i {
  width: 4px; height: 4px; border-radius: 50%; background: var(--mm-brand);
  animation: mmBounce .9s infinite ease-in-out;
}
#sub-mindmap .mm-dots i:nth-child(2) { animation-delay: .12s; }
#sub-mindmap .mm-dots i:nth-child(3) { animation-delay: .24s; }
@keyframes mmBounce { 0%, 80%, 100% { opacity: .3; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }

/* 选中节点操作条 */
/* 🔴 必须 fixed：它原来在文档流里，一出现就把下面的画布往下推 ——
   手机上是"点一下节点、画布跳一下、第二次点就点空"（实测 E2E 双击失败就是这个）。
   浮层不参与布局，问题从根上消失，而且更符合拇指操作习惯。
   `bottom` 由 JS 按**实测 TabBar 高度**动态设置，绝不硬编码。 */
#sub-mindmap .mm-selbar {
  position: fixed; left: 12px; right: 12px; bottom: 0; z-index: 40;
  max-width: 536px; margin: 0 auto; padding: 11px 12px;
  border-radius: 16px 16px 0 0; background: #fff; border: 1px solid var(--mm-line);
  box-shadow: 0 -10px 30px rgba(90, 60, 30, .18);
}
#sub-mindmap .mm-selbar-h {
  display: flex; align-items: center; gap: 7px; margin-bottom: 9px;
  font-size: 11.5px; color: var(--mm-ink3);
}
#sub-mindmap .mm-selbar-h b {
  flex: 1; min-width: 0; font-size: 12.5px; color: var(--mm-ink);
  font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#sub-mindmap .mm-colors { display: flex; flex-wrap: wrap; gap: 8px; }
#sub-mindmap .mm-swatch {
  width: 26px; height: 26px; border-radius: 50%; cursor: pointer;
  border: 2.5px solid #fff; box-shadow: 0 0 0 1px var(--mm-line2);
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-swatch.on { box-shadow: 0 0 0 2.5px var(--mm-brand); }
#sub-mindmap .mm-acts { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
#sub-mindmap .mm-acts button {
  padding: 7px 11px; border-radius: 10px; font-size: 12.5px; font-weight: 600;
  cursor: pointer; font-family: inherit;
  background: var(--mm-paper); border: 1px solid var(--mm-line2); color: var(--mm-ink2);
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-acts button:active { background: var(--mm-soft); }
#sub-mindmap .mm-acts button.danger { color: var(--mm-danger); border-color: rgba(194, 65, 12, .3); }

#sub-mindmap .mm-status {
  margin: 8px 16px 0; font-size: 11.5px; color: var(--mm-ink3);
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
#sub-mindmap .mm-status b { color: var(--mm-ok); font-weight: 600; }
#sub-mindmap .mm-zoom { margin-left: auto; display: flex; gap: 6px; }
#sub-mindmap .mm-zoom button {
  width: 26px; height: 26px; border-radius: 8px; cursor: pointer;
  background: #fff; border: 1px solid var(--mm-line2); color: var(--mm-ink2);
  font-size: 14px; line-height: 1; font-family: inherit;
}

/* ============================ 我的导图列表 ============================ */
#sub-mindmap .mm-list { display: flex; flex-direction: column; gap: 11px; padding: 0 16px; }
#sub-mindmap .mm-doc {
  padding: 14px; border-radius: 16px; background: #fff; border: 1px solid var(--mm-line);
}
#sub-mindmap .mm-doc-top { display: flex; align-items: flex-start; gap: 9px; }
#sub-mindmap .mm-doc-t { flex: 1; min-width: 0; font-size: 14.5px; font-weight: 700; }
#sub-mindmap .mm-doc-m { margin-top: 5px; font-size: 11.5px; color: var(--mm-ink3); }
#sub-mindmap .mm-doc-preview {
  margin-top: 9px; padding: 9px 10px; border-radius: 11px;
  background: var(--mm-paper); border: 1px solid var(--mm-line);
  font-size: 11.5px; line-height: 1.7; color: var(--mm-ink2);
  white-space: pre-wrap; max-height: 62px; overflow: hidden;
}
#sub-mindmap .mm-doc-acts { display: flex; gap: 7px; margin-top: 11px; flex-wrap: wrap; }
#sub-mindmap .mm-doc-acts button {
  padding: 7px 12px; border-radius: 10px; font-size: 12.5px; font-weight: 600;
  cursor: pointer; font-family: inherit;
  background: var(--mm-paper); border: 1px solid var(--mm-line2); color: var(--mm-ink2);
}
#sub-mindmap .mm-doc-acts button.pri {
  color: #fff; border-color: transparent;
  background: linear-gradient(135deg, #ff8a3d, var(--mm-brand));
}
#sub-mindmap .mm-doc-acts button.danger { color: var(--mm-danger); border-color: rgba(194, 65, 12, .3); }

/* ============================ 弹层 ============================ */
#sub-mindmap .mm-modal {
  position: fixed; inset: 0; z-index: 90;
  background: rgba(40, 24, 12, .45);
  display: flex; align-items: flex-end; justify-content: center;
}
#sub-mindmap .mm-sheet {
  width: 100%; max-width: 560px; max-height: 82vh; overflow: auto;
  background: #fff; border-radius: 20px 20px 0 0; padding: 18px 18px 26px;
  animation: mmUp .22s ease-out;
}
@keyframes mmUp { from { transform: translateY(22px); opacity: .7; } to { transform: translateY(0); opacity: 1; } }
#sub-mindmap .mm-sheet-h {
  display: flex; align-items: center; gap: 8px; margin-bottom: 14px;
}
#sub-mindmap .mm-sheet-h b { flex: 1; font-size: 15.5px; }
#sub-mindmap .mm-sheet-h span {
  font-size: 20px; color: var(--mm-ink3); cursor: pointer; line-height: 1;
}
#sub-mindmap .mm-hist-item {
  display: flex; align-items: center; gap: 10px; padding: 11px 12px;
  border-radius: 13px; border: 1px solid var(--mm-line); margin-bottom: 8px; background: var(--mm-paper);
}
#sub-mindmap .mm-hist-item .t { flex: 1; min-width: 0; }
#sub-mindmap .mm-hist-item .t b { font-size: 13px; font-weight: 600; }
#sub-mindmap .mm-hist-item .t span { display: block; margin-top: 3px; font-size: 11px; color: var(--mm-ink3); }
#sub-mindmap .mm-hist-item button {
  padding: 7px 12px; border-radius: 10px; font-size: 12.5px; font-weight: 600; cursor: pointer;
  font-family: inherit; color: #fff; border: none;
  background: linear-gradient(135deg, #ff8a3d, var(--mm-brand));
}
#sub-mindmap .mm-hist-item button.ghost {
  color: var(--mm-ink2); background: #fff; border: 1px solid var(--mm-line2);
}

#sub-mindmap .mm-exp-img {
  width: 100%; border-radius: 13px; border: 1px solid var(--mm-line); background: #fff;
  display: block;
}
#sub-mindmap .mm-exp-acts { display: flex; gap: 9px; margin-top: 13px; }
#sub-mindmap .mm-exp-acts button {
  flex: 1; padding: 13px; border-radius: 13px; font-size: 14px; font-weight: 700;
  cursor: pointer; font-family: inherit; border: none; color: #fff;
  background: linear-gradient(135deg, #ff8a3d, var(--mm-brand) 55%, var(--mm-brand-2));
  box-shadow: 0 6px 16px rgba(249, 89, 1, .22);
}
#sub-mindmap .mm-exp-acts button.ghost {
  color: var(--mm-ink2); background: #fff; border: 1px solid var(--mm-line2); box-shadow: none;
}
#sub-mindmap .mm-exp-tip {
  margin-top: 10px; font-size: 11.5px; line-height: 1.7; color: var(--mm-ink2);
  background: var(--mm-soft); border-radius: 11px; padding: 10px 11px;
}
#sub-mindmap .mm-exp-opt { display: flex; align-items: center; gap: 8px; margin-top: 11px; font-size: 12.5px; color: var(--mm-ink2); }
#sub-mindmap .mm-exp-opt input { width: 16px; height: 16px; accent-color: var(--mm-brand); }

#sub-mindmap .mm-name-input {
  width: 100%; box-sizing: border-box; padding: 12px 13px; border-radius: 13px;
  border: 1.5px solid var(--mm-line2); background: var(--mm-paper);
  font-size: 14px; font-family: inherit; outline: none; color: var(--mm-ink);
}
#sub-mindmap .mm-name-input:focus { border-color: var(--mm-brand); }

/* =============================================================================
 * 起点：空白新建那一行
 * -----------------------------------------------------------------------------
 * 用户 2026-09-19 反馈：「空白新建一张」原来放在页面最底下，**找都找不着**。
 * → 挪进输入卡里、紧跟「生成导图」之后，一眼就能看到。
 * ========================================================================== */
#sub-mindmap .mm-alt { display: flex; align-items: center; gap: 10px; margin-top: 11px; }
#sub-mindmap .mm-alt-btn {
  flex: none; padding: 11px 15px; border-radius: 12px; cursor: pointer;
  background: #fff; border: 1.5px dashed var(--mm-line2); color: var(--mm-ink2);
  font-size: 13.5px; font-weight: 600; font-family: inherit;
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-alt-btn:active { background: var(--mm-soft); border-color: var(--mm-brand); }
#sub-mindmap .mm-alt-or { font-size: 11.5px; color: var(--mm-ink3); line-height: 1.5; }

/* =============================================================================
 * 图谱样式主题（5 套）
 * -----------------------------------------------------------------------------
 * 🔴 这里的每一套都要和 public/mindmaptools.js 的 PAINT 规格**一一对应**，
 *    否则会出现"屏幕上是横线、导出成方块"。改一边必须改另一边。
 *    选择器特异性（.mm-t-x .mm-node.dN = 3 个类）高于基础规则（2 个类），无需 !important；
 *    只有需要压掉**内联样式**（padding）时才用。
 * ========================================================================== */
#sub-mindmap .mm-t-line .mm-node {
  background: none; border: none; border-radius: 0;
  box-shadow: none;
}
#sub-mindmap .mm-t-line .mm-node.d0 {
  color: var(--mm-c); border-bottom: 3px solid var(--mm-c);
  font-weight: 600;
}
#sub-mindmap .mm-t-line .mm-node.d1 {
  color: #241a12; border-bottom: 2px solid var(--mm-c75); font-weight: 600;
}
#sub-mindmap .mm-t-line .mm-node.d2,
#sub-mindmap .mm-t-line .mm-node.d3 {
  color: #4a3d31; border-bottom: 1.4px solid var(--mm-c42);
}
#sub-mindmap .mm-t-line .mm-node .mm-fold { box-shadow: 0 0 0 2px var(--mm-paper); }

#sub-mindmap .mm-t-pill .mm-node.d0 { border-radius: 999px; }
#sub-mindmap .mm-t-pill .mm-node.d1 {
  border-radius: 999px; background: var(--mm-c16);
  border: 1.3px solid var(--mm-c40); color: #241a12;
}
#sub-mindmap .mm-t-pill .mm-node.d2,
#sub-mindmap .mm-t-pill .mm-node.d3 {
  border-radius: 999px; background: var(--mm-c07);
  border: 1.2px solid var(--mm-c22); color: #3f342a;
}

#sub-mindmap .mm-t-outline .mm-node.d0 { border-radius: 10px; }
#sub-mindmap .mm-t-outline .mm-node.d1 {
  border-radius: 8px; background: #fff;
  border: 1.8px solid var(--mm-c85); color: #241a12;
}
#sub-mindmap .mm-t-outline .mm-node.d2,
#sub-mindmap .mm-t-outline .mm-node.d3 {
  border-radius: 8px; background: #fff;
  border: 1.5px solid var(--mm-c45); color: #3f342a;
}

#sub-mindmap .mm-t-bar .mm-node {
  border: none; border-left: 3.4px solid var(--mm-c); border-radius: 8px;
  box-shadow: none;
}
#sub-mindmap .mm-t-bar .mm-node.d0 { background: var(--mm-c14); color: #241a12; }
#sub-mindmap .mm-t-bar .mm-node.d1 { background: var(--mm-c06); color: #241a12; font-weight: 600; }
#sub-mindmap .mm-t-bar .mm-node.d2,
#sub-mindmap .mm-t-bar .mm-node.d3 { background: var(--mm-c04); color: #3f342a; }
#sub-mindmap .mm-t-bar .mm-node.d0,
#sub-mindmap .mm-t-bar .mm-node.d1 { padding-left: 18px !important; }

/* 主题选择弹层 */
#sub-mindmap .mm-themes { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
#sub-mindmap .mm-theme {
  padding: 10px; border-radius: 15px; cursor: pointer; background: #fff;
  border: 1.5px solid var(--mm-line); text-align: left;
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-theme.on { border-color: var(--mm-brand); box-shadow: 0 0 0 3px rgba(249, 89, 1, .13); }
#sub-mindmap .mm-theme-pv {
  height: 52px; border-radius: 10px; background: var(--mm-paper);
  border: 1px solid var(--mm-line); display: grid; place-items: center; overflow: hidden;
}
#sub-mindmap .mm-theme-n { margin-top: 8px; font-size: 13px; font-weight: 700; }
#sub-mindmap .mm-theme-d { margin-top: 2px; font-size: 11px; line-height: 1.45; color: var(--mm-ink3); }

/* ============================ 起点：三条平级入口 ============================
   2026-09-19 重构。原来这一屏是「一个大输入框 + 一排角度 chips + 另一节模板卡片 +
   卡底一行「空白新建」小字」——一屏四样东西，主动作被淹；而且"模板"出现了两次
   （chips 里那排名字是给 AI 的拆解角度、下面卡片区是直接开一张），同一个词两种结果。
   现在理成三条平级入口：一句话生成 / 模板生成 / 新建空白。点进哪条，就只看到哪一条要做的事。
   chips 那一排的能力没丢，搬到了模板卡片里那个「让 AI 按这个框架拆」按钮上。
   谁改这一屏：不要再往第一屏加东西，也别把 chips 加回来 —— 一屏只问一件事。 */
#sub-mindmap .mm-lead {
  margin: 6px 16px 0;
  font-size: 13px; line-height: 1.75; color: var(--mm-ink2);
}
#sub-mindmap .mm-lead b { color: var(--mm-brand-2); }

#sub-mindmap .mm-entries {
  display: flex; flex-direction: column; gap: 10px;
  margin: 14px 16px 0;
}
#sub-mindmap .mm-entry {
  display: flex; align-items: center; gap: 12px;
  width: 100%; box-sizing: border-box; text-align: left; font-family: inherit;
  padding: 14px; border-radius: 16px; cursor: pointer;
  background: #fff; border: 1px solid var(--mm-line); color: var(--mm-ink);
  box-shadow: 0 3px 14px rgba(180, 120, 60, .05);
  transition: transform .14s, border-color .14s, box-shadow .14s;
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-entry:hover { border-color: var(--mm-line2); box-shadow: 0 6px 18px rgba(180, 120, 60, .1); }
#sub-mindmap .mm-entry:active { transform: scale(.99); }
#sub-mindmap .mm-e-ico {
  flex: 0 0 auto; width: 38px; height: 38px; border-radius: 12px;
  display: grid; place-items: center; font-size: 18px;
  background: linear-gradient(135deg, #ffd9bd, #ffece0);
}
#sub-mindmap .mm-e-b { flex: 1 1 auto; min-width: 0; display: block; }
#sub-mindmap .mm-e-b b { display: block; font-size: 14.5px; font-weight: 700; }
#sub-mindmap .mm-e-b i {
  display: block; margin-top: 3px; font-style: normal;
  font-size: 12px; line-height: 1.5; color: var(--mm-ink3);
}
#sub-mindmap .mm-e-go { flex: 0 0 auto; font-size: 17px; color: var(--mm-ink3); }

#sub-mindmap #mmAiBox, #sub-mindmap #mmTplBox { margin-top: 4px; }

#sub-mindmap .mm-tpl-ai {
  margin-top: 9px; width: 100%; box-sizing: border-box;
  padding: 7px 8px; border-radius: 10px; font-family: inherit;
  font-size: 11.5px; font-weight: 600; cursor: pointer;
  color: var(--mm-brand-2); background: var(--mm-soft);
  border: 1px solid rgba(249, 89, 1, .22);
  -webkit-tap-highlight-color: transparent;
}
#sub-mindmap .mm-tpl-ai:active { background: #ffe8d6; }

#sub-mindmap .mm-back-entry { margin: 12px 16px 0; width: auto; }
