*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0d1117;--surface:#161b22;--s2:#21262d;--border:#30363d;
  --text:#e6edf3;--muted:#8b949e;--accent:#58a6ff;
  --tb:48px;
  --font:system-ui,-apple-system,"Segoe UI",Helvetica,sans-serif;
}
html,body{width:100%;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;overflow:hidden}

/* 工具栏 */
#toolbar{position:fixed;top:0;left:0;right:0;height:var(--tb);display:flex;align-items:center;gap:6px;padding:0 14px;background:var(--surface);border-bottom:1px solid var(--border);z-index:50}
#tlogo{font-size:13px;font-weight:800;color:var(--accent);letter-spacing:.08em;margin-right:2px;flex-shrink:0}
.v4-badge{background:rgba(188,140,255,.15);border:1px solid rgba(188,140,255,.4);color:#bc8cff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:4px;letter-spacing:.06em;flex-shrink:0}
.sep{width:1px;height:18px;background:var(--border);margin:0 2px;flex-shrink:0}
.tbtn{padding:4px 10px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--muted);font:inherit;font-size:12px;cursor:pointer;transition:background .12s,color .12s;white-space:nowrap;flex-shrink:0}
.tbtn:hover{background:var(--s2);color:var(--text)}
.tbtn.hi{background:var(--accent);border-color:var(--accent);color:#0d1117;font-weight:700}
.tbtn.hi:hover{filter:brightness(1.08)}
#tb-topic{font:inherit;font-size:12px;padding:4px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);outline:none;width:160px;flex-shrink:0}
#tb-topic:focus{border-color:var(--accent)}
#tb-st{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap;flex-shrink:0}

/* 画布 */
#mindMapContainer{position:fixed;top:var(--tb);left:0;width:100vw;height:calc(100vh - var(--tb));background:var(--bg);overflow:hidden;user-select:none;-webkit-user-select:none}
/* 禁用框选 */
#mindMapContainer .selection-area{display:none !important}
#mindMapContainer svg{background:transparent!important}
.map-container me-parent me-tpc{border:1px solid var(--color);background-color:var(--bgcolor);border-radius:6px;padding:4px 12px}
/* 节点副标题：把 tags 渲染成灰色小字而非彩色标签 */
.map-container .tags span{background:transparent!important;color:rgba(180,190,210,.55)!important;font-size:10px!important;padding:0!important;margin:0!important;border-radius:0!important;display:block!important;line-height:1.3!important;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 左下提示 */
#hint{position:fixed;left:14px;bottom:14px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:9px 13px;font-size:11.5px;color:var(--muted);line-height:1.6;z-index:40;max-width:280px}
#hint b{color:var(--text)}
#hint code{background:var(--bg);padding:1px 5px;border-radius:3px;color:var(--accent)}

/* 总结浮层 */
#sov{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:200;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}
#sov.open{opacity:1;pointer-events:all}
#sbox{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:26px 30px;max-width:520px;width:90%;transform:translateY(14px);transition:transform .2s}
#sov.open #sbox{transform:translateY(0)}
#sbox h2{font-size:14px;font-weight:700;color:var(--accent);margin-bottom:14px}
.ss{margin-bottom:12px}.ss h3{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px}
.ss p{font-size:13px;color:var(--text);line-height:1.65}
.ss ul{padding-left:15px}.ss li{font-size:13px;color:var(--text);margin-bottom:3px;line-height:1.5}
#bcsm{margin-top:14px;padding:7px 18px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--muted);font:inherit;font-size:12px;cursor:pointer}
#bcsm:hover{background:var(--s2);color:var(--text)}

/* 节点 tooltip */
#tip{position:fixed;z-index:150;max-width:300px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:12px;line-height:1.6;color:var(--text);box-shadow:0 8px 24px rgba(0,0,0,.45);pointer-events:none;opacity:0;transform:translateY(6px);transition:opacity .15s,transform .15s;display:none}
#tip.on{opacity:1;transform:translateY(0);display:block}
#tip .tip-h{font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px}
#tip .tip-p{margin-bottom:8px}
#tip .tip-p:last-child{margin-bottom:0}
#tip .tip-ul{margin:2px 0 0;padding-left:14px}
#tip .tip-ul li{margin-bottom:1px;color:var(--muted)}

/* toast */
#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(18px);background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:7px 15px;font-size:12px;color:var(--text);opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;z-index:500;white-space:nowrap}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* 配置弹窗 */
#cfg{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:300;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}
#cfg.open{opacity:1;pointer-events:all}
#cbox{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px 28px;max-width:480px;width:90%;transform:translateY(14px);transition:transform .2s}
#cfg.open #cbox{transform:translateY(0)}
#cbox h2{font-size:14px;font-weight:700;color:var(--accent);margin-bottom:6px}
#cdesc{font-size:12px;color:var(--muted);margin-bottom:16px;line-height:1.5}
.crow{margin-bottom:11px}.crow label{display:block;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}
.crow input,.crow select{width:100%;padding:7px 10px;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;font-size:13px;outline:none}
.crow input:focus,.crow select:focus{border-color:var(--accent)}
.presets{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.presets button{padding:4px 9px;border-radius:5px;border:1px solid var(--border);background:var(--s2);color:var(--text);font:inherit;font-size:11px;cursor:pointer}
.presets button:hover{border-color:var(--accent);color:var(--accent)}
#cbtns{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
#cbtns button{padding:8px 16px;border-radius:7px;border:1px solid var(--border);background:var(--s2);color:var(--text);font:inherit;font-size:13px;cursor:pointer}
#cbtns button.primary{background:var(--accent);border-color:var(--accent);color:#0d1117;font-weight:700}

#test-result{font-size:12px;margin-top:8px;padding:6px 10px;border-radius:6px;display:none;line-height:1.5;word-break:break-all}
#test-result.ok{display:block;background:rgba(63,185,80,.12);color:#3fb950}
#test-result.err{display:block;background:rgba(247,129,102,.12);color:#f78166}
#test-result.load{display:block;background:rgba(88,166,255,.12);color:#58a6ff}

@keyframes sp{to{transform:rotate(360deg)}}

/* loading 遮罩（中等强度：透明全屏锁 + 底部可见条） */
#loading{position:fixed;inset:0;z-index:250;display:block;opacity:0;pointer-events:none;transition:opacity .2s;background:transparent}
#loading.on{opacity:1;pointer-events:all}
.ld-bar{position:absolute;left:50%;bottom:60px;transform:translateX(-50%);background:var(--surface);border:1px solid var(--accent);border-radius:10px;padding:10px 18px;display:flex;align-items:center;gap:10px;box-shadow:0 6px 20px rgba(0,0,0,.5)}
.ld-spin{width:16px;height:16px;border:2px solid rgba(88,166,255,.3);border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite}
.ld-text{font-size:13px;color:var(--text);font-weight:600}
