/* ============================================================================
 * 主题 v2 —— 在 app.css 之后加载，只做「大气化」覆盖，不改结构
 * ----------------------------------------------------------------------------
 * 改造思路（对照旧版的问题）：
 *   旧：字号普遍 11~12.5px、内边距 11~12px、纯平深色、没有层次
 *   新：字号阶提到 12.5~15px、内边距 16~22px、分层背景 + 玻璃模糊 + 细描边
 *
 * 原则：只覆盖视觉，不动布局结构；出错可以直接把这一行 link 注释掉回滚。
 * ==========================================================================*/

:root {
  /* 层次更清楚的底色：底 < 面板 < 卡片 */
  --bg0: #070910;
  --bg1: #0c101c;
  --bg2: #121829;
  --bg3: #182036;
  --line: rgba(255, 255, 255, .09);
  --line2: rgba(255, 255, 255, .16);
  --fg: #eef1f8;
  --fg2: #99a1bd;
  --acc: #7c5cff;
  --acc2: #ff7a45;
  --ok: #38d39f;
  --warn: #ffb020;
  --err: #ff5c72;

  /* 统一的圆角与阴影阶 */
  --r-sm: 10px;
  --r-md: 14px;
  --r-lg: 18px;
  --shadow-1: 0 2px 8px rgba(0, 0, 0, .35);
  --shadow-2: 0 10px 30px rgba(0, 0, 0, .45);
  --shadow-3: 0 24px 60px rgba(0, 0, 0, .55);
  --glow-acc: 0 0 0 1px rgba(124, 92, 255, .35), 0 8px 28px rgba(124, 92, 255, .22);
}

/* ---------------- 基础 ---------------- */
body {
  font-size: 14px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  background:
    radial-gradient(1200px 600px at 12% -10%, rgba(124, 92, 255, .16), transparent 60%),
    radial-gradient(1000px 500px at 100% 0%, rgba(255, 122, 69, .10), transparent 55%),
    var(--bg0);
  color: var(--fg);
}

/* ---------------- 顶栏 ---------------- */
.sdh-top {
  height: 66px;
  padding: 0 26px;
  background: linear-gradient(180deg, rgba(16, 20, 34, .92), rgba(10, 13, 24, .78));
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-bottom: 1px solid var(--line);
  box-shadow: 0 8px 26px rgba(0, 0, 0, .38);
  position: relative;
}
.sdh-top::after {
  content: '';
  position: absolute; left: 0; right: 0; bottom: -1px; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(124, 92, 255, .55), rgba(255, 122, 69, .45), transparent);
}
.sdh-logo {
  font-size: 26px;
  filter: drop-shadow(0 4px 14px rgba(124, 92, 255, .5));
}
.sdh-name { font-size: 16.5px; font-weight: 800; letter-spacing: .3px; }
.sdh-sub { font-size: 11.5px; color: var(--fg2); margin-top: 2px; letter-spacing: .2px; }

.sdh-btn {
  height: 34px;
  padding: 0 15px;
  border-radius: var(--r-sm);
  font-size: 12.5px;
  font-weight: 600;
  background: rgba(255, 255, 255, .06);
  border: 1px solid var(--line2);
  color: var(--fg);
  transition: .18s ease;
}
.sdh-btn:hover { background: rgba(255, 255, 255, .13); border-color: rgba(255, 255, 255, .28); transform: translateY(-1px); }
.sdh-who { font-size: 12.5px; }
.sdh-bal {
  font-size: 12.5px;
  padding: 4px 12px;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(56, 211, 159, .20), rgba(56, 211, 159, .08));
  border: 1px solid rgba(56, 211, 159, .38);
  color: #9ff0cd;
  font-weight: 700;
}

/* ---------------- 标签页（胶囊） ---------------- */
.sdh-tabs {
  gap: 8px;
  padding: 12px 24px 0;
  border-bottom: none;
}
.sdh-tab {
  height: 36px;
  padding: 0 18px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  background: rgba(255, 255, 255, .04);
  border: 1px solid var(--line);
  color: var(--fg2);
  transition: .18s ease;
}
.sdh-tab:hover { background: rgba(255, 255, 255, .09); color: var(--fg); }
.sdh-tab.on {
  background: linear-gradient(135deg, rgba(124, 92, 255, .95), rgba(255, 122, 69, .85));
  border-color: transparent;
  color: #fff;
  box-shadow: var(--glow-acc);
}

/* ---------------- 主体容器 ---------------- */
.sdh-main { padding: 0 22px 20px; }
.wk { grid-template-columns: minmax(0, 1fr) 430px; gap: 16px; height: calc(100vh - 170px); }

/* ---------------- 画布 ---------------- */
.cv-viewport {
  border-radius: var(--r-lg);
  border: 1px solid var(--line);
  background:
    radial-gradient(800px 500px at 30% 20%, rgba(124, 92, 255, .07), transparent 60%),
    var(--bg1);
  box-shadow: var(--shadow-2);
}
.cv-bar {
  padding: 11px 16px;
  gap: 10px;
  background: rgba(255, 255, 255, .035);
  border-bottom: 1px solid var(--line);
  border-radius: var(--r-lg) var(--r-lg) 0 0;
}
.cv-node {
  border-radius: var(--r-md);
  box-shadow: var(--shadow-1);
  transition: box-shadow .18s ease, transform .18s ease;
}
.cv-node:hover { box-shadow: var(--shadow-2); }
.cv-node .cv-h { padding: 9px 11px; font-size: 12.5px; font-weight: 700; }
.cv-node .cv-t { letter-spacing: .2px; }
.cv-edge { stroke-width: 2.2; }
.cv-edge-gen { stroke-width: 3.4; filter: drop-shadow(0 0 6px rgba(255, 122, 69, .55)); }
.cv-mini {
  border-radius: var(--r-md);
  border: 1px solid var(--line2);
  box-shadow: var(--shadow-2);
  background: rgba(8, 11, 20, .82);
  backdrop-filter: blur(10px);
}
.cv-legend {
  border-radius: 999px;
  padding: 7px 16px;
  background: rgba(8, 11, 20, .8);
  backdrop-filter: blur(10px);
  border: 1px solid var(--line);
  font-size: 11.5px;
}

/* ---------------- 右侧 Agent 面板 ---------------- */
.wk-side {
  border-radius: var(--r-lg);
  border: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(20, 25, 42, .96), rgba(10, 13, 23, .99));
  box-shadow: var(--shadow-2);
}
.wk-side-head {
  padding: 15px 18px;
  font-size: 14px;
  background: linear-gradient(90deg, rgba(124, 92, 255, .20), rgba(255, 122, 69, .10));
  border-bottom: 1px solid var(--line);
}
.wk-side-badge { font-size: 11px; padding: 3px 11px; font-weight: 700; }
.wk-side-scroll { padding: 18px 18px 90px; }

/* 分区标题：给一个统一的大标题风格 */
.wk-sec-h,
.wk-new-head {
  padding: 12px 16px;
  font-size: 13.5px;
  letter-spacing: .2px;
}
.wk-sec,
.wk-new {
  border-radius: var(--r-md);
  border: 1px solid var(--line);
  box-shadow: var(--shadow-1);
  margin-bottom: 16px;
  background: rgba(255, 255, 255, .022);
}
.wk-sec > div:last-child { padding: 12px 14px; }

/* 上传区：做得更醒目 */
.wk-drop {
  border: 1.5px dashed rgba(150, 160, 200, .5);
  border-radius: var(--r-md);
  padding: 30px 20px;
  background: linear-gradient(180deg, rgba(124, 92, 255, .06), rgba(255, 255, 255, .015));
  transition: .2s ease;
}
.wk-drop:hover, .wk-drop.over {
  border-color: var(--acc);
  background: linear-gradient(180deg, rgba(124, 92, 255, .16), rgba(255, 122, 69, .06));
  transform: translateY(-1px);
  box-shadow: var(--glow-acc);
}
.wk-drop-i { font-size: 38px; line-height: 1.1; }
.wk-drop-t { font-size: 14px; font-weight: 700; margin-top: 10px; }
.wk-drop-s { font-size: 12px; margin-top: 6px; }

/* 输入 */
.sdh-in, .sdh-ta, select.sdh-in {
  height: 40px;
  padding: 0 13px;
  border-radius: var(--r-sm);
  font-size: 13.5px;
  background: rgba(255, 255, 255, .05);
  border: 1px solid var(--line2);
  transition: .18s ease;
}
.sdh-ta { height: auto; padding: 11px 13px; line-height: 1.7; }
.sdh-in:focus, .sdh-ta:focus, select.sdh-in:focus {
  outline: none;
  border-color: var(--acc);
  box-shadow: 0 0 0 3px rgba(124, 92, 255, .18);
  background: rgba(255, 255, 255, .07);
}
.sdh-lb { font-size: 12.5px; font-weight: 600; color: #b9c0d8; margin: 12px 0 6px; }

/* 主按钮：更有分量 */
.sdh-cta {
  height: 46px;
  border-radius: var(--r-md);
  font-size: 14.5px;
  font-weight: 800;
  letter-spacing: .4px;
  background: linear-gradient(135deg, #7c5cff, #ff7a45);
  box-shadow: 0 10px 26px rgba(124, 92, 255, .32);
  transition: .2s ease;
}
.sdh-cta:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(255, 122, 69, .34); }
.sdh-cta:disabled { opacity: .42; box-shadow: none; cursor: not-allowed; }

/* 步骤条：做成带连接感的竖列 */
.wk-steps { gap: 8px; margin-bottom: 16px; }
.wk-step {
  padding: 11px 14px;
  border-radius: var(--r-sm);
  font-size: 13px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, .022);
  transition: .18s ease;
}
.wk-step b { width: 24px; height: 24px; font-size: 11.5px; }
.wk-step.cur {
  border-color: var(--acc);
  background: linear-gradient(90deg, rgba(124, 92, 255, .22), rgba(124, 92, 255, .04));
  box-shadow: var(--glow-acc);
}
.wk-step.done { background: rgba(56, 211, 159, .08); }

/* 任务卡 */
.wk-chat { gap: 11px; }
.wk-card {
  border-radius: var(--r-md);
  border: 1px solid var(--line);
  box-shadow: var(--shadow-1);
  background: rgba(255, 255, 255, .028);
  transition: .18s ease;
}
.wk-card:hover { border-color: var(--line2); }
.wk-card-h { padding: 12px 14px; font-size: 13px; }
.wk-card-b2 { padding: 14px; font-size: 12.5px; line-height: 1.75; }
.wk-pre {
  border-radius: var(--r-sm);
  padding: 12px 13px;
  font-size: 12.5px;
  line-height: 1.8;
  background: rgba(0, 0, 0, .32);
  border: 1px solid var(--line);
}
.wk-mr { font-size: 11.5px; padding: 3px 0; }
.wk-mr span { min-width: 66px; }

/* 选项卡片（问询 / 确认） */
.wk-ask {
  border-radius: var(--r-md);
  border: 1px solid rgba(255, 176, 32, .45);
  background: linear-gradient(180deg, rgba(255, 176, 32, .11), rgba(255, 176, 32, .03));
  padding: 16px;
  box-shadow: var(--shadow-1);
}
.wk-ask-q { font-size: 13.5px; margin-bottom: 12px; }
.wk-opt {
  padding: 13px 15px;
  border-radius: var(--r-sm);
  border: 1px solid var(--line2);
  background: rgba(255, 255, 255, .045);
  transition: .18s ease;
}
.wk-opt:hover {
  background: rgba(124, 92, 255, .14);
  border-color: var(--acc);
  transform: translateX(2px);
}
.wk-opt b { width: 24px; height: 24px; border-radius: 8px; font-size: 12px; }
.wk-opt span { font-size: 13px; }
.wk-opt i { font-size: 11.5px; margin-top: 3px; }

/* 选项 chip */
.wk-chip {
  padding: 7px 14px;
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 600;
  transition: .16s ease;
}
.wk-chip:hover { transform: translateY(-1px); }
.wk-chip.on { box-shadow: 0 6px 18px rgba(124, 92, 255, .32); }
.wk-chip i { font-size: 10px; }

/* 空状态 */
.sdh-empty {
  font-size: 13px;
  color: var(--fg2);
  padding: 22px 16px;
  text-align: center;
  border: 1px dashed var(--line);
  border-radius: var(--r-md);
  line-height: 1.8;
}

/* 提示块 */
.sdh-tip { font-size: 12px; line-height: 1.8; color: var(--fg2); }
.sdh-block { border-radius: var(--r-md); padding: 15px 16px; font-size: 13px; line-height: 1.75; box-shadow: var(--shadow-1); }

/* 弹层 */
.sdh-modal-box {
  border-radius: 22px;
  border: 1px solid var(--line2);
  background: linear-gradient(180deg, rgba(22, 27, 46, .99), rgba(11, 14, 25, .99));
  box-shadow: var(--shadow-3);
}
.sdh-modal-h { padding: 18px 22px; font-size: 15px; border-bottom: 1px solid var(--line); }
.sdh-modal-b { padding: 20px 22px 24px; }

/* 日志 */
.wk-log { font-size: 11.5px; line-height: 1.85; }
.wk-logbox summary { font-size: 12.5px; padding: 8px 0; }

/* 我的算力页：卡片也放大 */
#view-compute .sdh-card { border-radius: var(--r-lg); border: 1px solid var(--line); box-shadow: var(--shadow-2); }
#view-compute .sdh-card-h { padding: 15px 18px; font-size: 14px; }
#view-compute .sdh-card-b { padding: 18px; }
.sdh-doc h3 { font-size: 13.5px; margin: 16px 0 7px; color: #cfd6ee; }
.sdh-doc p { font-size: 13px; line-height: 1.85; }
.sdh-kv { gap: 14px; }

/* 面板顶部常驻「新建」按钮 —— 解决"找不到新建项目入口" */
.wk-newbtn{
  margin-left:auto;flex:none;height:30px;padding:0 14px;border-radius:999px;
  font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer;
  color:#fff;border:none;
  background:linear-gradient(135deg,#7c5cff,#ff7a45);
  box-shadow:0 6px 18px rgba(124,92,255,.34);
  transition:.18s ease;
}
.wk-newbtn:hover{transform:translateY(-1px);box-shadow:0 9px 24px rgba(255,122,69,.36)}
.wk-side-head .wk-side-badge{margin-left:8px}
/* 大模型选择区 —— 凡是涉及大模型的环节都能手选 */
.wk-models{
  margin:14px 0 4px;padding:14px 15px;border-radius:var(--r-md);
  border:1px solid rgba(124,92,255,.38);
  background:linear-gradient(180deg,rgba(124,92,255,.10),rgba(255,255,255,.02));
}
.wk-models-h{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:13px;font-weight:800;letter-spacing:.2px}
.wk-models-s{margin-left:auto;font-size:10.5px;font-weight:600;color:#b9c0d8}
.wk-models .sdh-lb{margin:10px 0 5px;font-size:12px}
.wk-models select.sdh-in{height:36px;font-size:13px}
/* 执行方式开关 */
.wk-auto{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;line-height:1.7;cursor:pointer}
.wk-auto input{margin-top:3px;width:16px;height:16px;accent-color:#7c5cff;flex:none}
.wk-auto b{color:#ffd9a8}
/* 模型清单重读按钮 */
.wk-reload{
  width:26px;height:26px;flex:none;border-radius:8px;cursor:pointer;font-size:12px;
  border:1px solid var(--line2);background:rgba(255,255,255,.06);color:var(--fg);
  display:flex;align-items:center;justify-content:center;padding:0;line-height:1;
}
.wk-reload:hover{background:rgba(124,92,255,.22);border-color:var(--acc)}
/* ---------------- 下拉可读性修复 ----------------
   问题：页面是深色，但原生 <select> 展开的面板是系统默认的白底，
   选项文字继承了页面的浅色 → 白底浅字，看不清（用户截图反馈过）。
   修法：color-scheme: dark 让浏览器用深色原生控件；再显式给 option 上色兜底。 */
:root { color-scheme: dark; }

select.sdh-in,
select {
  color-scheme: dark;
  background-color: rgba(255, 255, 255, .06);
  color: var(--fg);
}
select option {
  background-color: #151a2c;
  color: #eef1f8;
  padding: 7px 10px;
  font-size: 13px;
}
select option:checked,
select option:hover {
  background-color: #7c5cff;
  color: #fff;
}
/* 有些浏览器把 option 的背景吃掉，这里连 optgroup 一起兜底 */
select optgroup { background-color: #0f1424; color: #9aa3c0; }
/* 画布节点详情里的「修改并重生」区 */
.cv-edit{
  width:100%;box-sizing:border-box;margin:6px 0 8px;padding:9px 10px;
  border-radius:10px;border:1px solid var(--line2);
  background:rgba(0,0,0,.32);color:var(--fg);
  font-family:inherit;font-size:12px;line-height:1.7;resize:vertical;
}
.cv-edit:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(124,92,255,.18)}
.cv-edit-acts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.cv-edit-acts .sdh-cta{width:auto;margin:0;height:34px;font-size:12.5px;padding:0 14px;box-shadow:none}
.cv-edit-actions .sdh-btn{height:34px;font-size:12.5px}
.cv-edit-msg{font-size:11px;color:var(--fg2);min-height:15px}
/* 多人配音：每个角色一行音色选择 */
.wk-voice-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.wk-voice-pick{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.wk-voice-search{height:30px;font-size:11.5px}
.wk-voice-play{flex:none;width:36px;height:34px;padding:0;font-size:13px}
.wk-voice-name{flex:none;width:76px;font-size:12.5px;font-weight:600;color:#cfd6ee;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-voice-sel{flex:1;min-width:0;height:34px;font-size:12.5px}
/* 节点编辑：模型下拉与参数行 */
.cv-edit-lb{font-size:11px;color:var(--fg2);margin:10px 0 5px}
.cv-edit-model{width:100%;box-sizing:border-box;height:34px;font-size:12px}
.cv-edit-row{display:flex;align-items:center;gap:8px;margin-top:9px}
.cv-edit-row label{font-size:11px;color:var(--fg2);flex:none}
.cv-edit-row .sdh-in{height:32px;font-size:12px}
.cv-edit-row input.sdh-in{width:64px;flex:none}
.cv-edit-row select.sdh-in{flex:1;min-width:0}
/* ---------------- 音色选择弹窗 ---------------- */
.voice-box{width:min(880px,94vw);max-height:86vh;display:flex;flex-direction:column}
.voice-body{display:flex;flex-direction:column;min-height:0;flex:1}
.voice-tools{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.voice-tools .sdh-in{flex:1;height:40px}
.voice-count{font-size:12px;color:var(--fg2);white-space:nowrap}
.voice-list{flex:1;min-height:240px;max-height:56vh;overflow:auto;border:1px solid var(--line);border-radius:12px;background:rgba(0,0,0,.22)}
.voice-row{display:flex;align-items:center;gap:11px;padding:9px 13px;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.05)}
.voice-row:hover{background:rgba(124,92,255,.14)}
.voice-row.on{background:linear-gradient(90deg,rgba(124,92,255,.30),rgba(124,92,255,.06));box-shadow:inset 3px 0 0 var(--acc)}
.voice-play{width:32px;height:32px;flex:none;border-radius:9px;cursor:pointer;font-size:12px;padding:0;
  border:1px solid var(--line2);background:rgba(255,255,255,.07);color:var(--fg)}
.voice-play:hover:not(:disabled){background:rgba(124,92,255,.3);border-color:var(--acc)}
.voice-play:disabled{opacity:.35;cursor:not-allowed}
.voice-name{font-size:13px;font-weight:600;color:#eef1f8}
.voice-tag{margin-left:auto;font-size:11px;color:var(--fg2)}
.voice-foot{display:flex;align-items:center;gap:10px;margin-top:12px}
.voice-foot #voice-picked{flex:1;font-size:12.5px;color:#cfd6ee;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-voice-cur{flex:1;min-width:0;font-size:12px;color:#cfd6ee;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 6px}
/* 生图参数 chip（比例 / 清晰度 / 数量），参照 MiniMax 的面板 */
.cv-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}
.cv-chip{padding:5px 11px;border-radius:9px;font-size:11.5px;font-weight:600;cursor:pointer;font-family:inherit;
  border:1px solid var(--line2);background:rgba(255,255,255,.05);color:#cfd3e4;transition:.15s}
.cv-chip:hover{background:rgba(255,255,255,.12)}
.cv-chip.on{border-color:transparent;background:linear-gradient(135deg,#7c5cff,#ff7a45);color:#fff}
/* ---------------- 浮层提示词编辑器（对标 MiniMax） ---------------- */
.cv-prompt-pop{
  position:absolute;z-index:40;width:560px;max-width:calc(100% - 16px);
  border-radius:16px;border:1px solid var(--line2);
  background:linear-gradient(180deg,rgba(24,29,48,.99),rgba(12,15,26,.99));
  box-shadow:var(--shadow-3);padding:12px 14px 10px;display:none;
}
.cv-prompt-pop.on{display:block}
.cvp-h{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:#cfd6ee;margin-bottom:8px}
.cvp-x{margin-left:auto;width:24px;height:24px;border-radius:7px;border:1px solid var(--line2);
  background:rgba(255,255,255,.06);color:var(--fg);cursor:pointer;font-size:11px;padding:0}
.cvp-ta{
  width:100%;box-sizing:border-box;min-height:150px;max-height:320px;resize:vertical;
  border-radius:11px;border:1px solid var(--line2);background:rgba(0,0,0,.34);color:var(--fg);
  font-family:inherit;font-size:13px;line-height:1.8;padding:11px 12px;
}
.cvp-ta:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(124,92,255,.18)}
.cvp-count{text-align:right;font-size:10.5px;color:var(--fg2);margin:4px 2px 8px}
.cvp-bar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  border-top:1px solid var(--line);padding-top:10px}
.cvp-sel{height:32px;border-radius:9px;font-size:12px;padding:0 8px;font-family:inherit;
  border:1px solid var(--line2);background:rgba(255,255,255,.06);color:var(--fg);max-width:190px}
.cvp-sp{flex:1}
.cvp-save,.cvp-go{height:34px;border-radius:9px;font-size:12.5px;font-weight:700;cursor:pointer;
  padding:0 15px;border:1px solid var(--line2);background:rgba(255,255,255,.07);color:var(--fg);font-family:inherit}
.cvp-go{border:none;background:linear-gradient(135deg,#7c5cff,#ff7a45);color:#fff}
.cvp-go:disabled{opacity:.5;cursor:not-allowed}
.cvp-msg{font-size:11px;color:var(--fg2);min-height:15px;margin-top:6px}
/* 浮层里的信息条（替代原来的右侧抽屉） */
.cvp-info{font-size:11px;color:var(--fg2);background:rgba(0,0,0,.24);border:1px solid var(--line);
  border-radius:9px;padding:7px 10px;margin-bottom:9px;line-height:1.7}
.cvp-info b{color:#d8dcec}
.cvp-err{color:#ff8a9a;margin-top:3px;word-break:break-all}
/* ---------------- 分组容器：做成干净的卡片（覆盖 app.css 里的虚线框） ----------------
   参考 MiniMax 的画布观感：资产图归在一张浅色卡里，标题清楚、图大到一眼能辨认。 */
.cv-node.cv-group{
  background:linear-gradient(180deg, rgba(255,255,255,.085), rgba(255,255,255,.03));
  border:1px solid rgba(255,255,255,.15);
  border-radius:22px;
  box-shadow:0 18px 48px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.07);
  z-index:0;
}
.cv-node.cv-group .cv-group-h{
  position:absolute;left:20px;top:14px;
  font-size:15px;font-weight:800;color:#f4f6fd;letter-spacing:.4px;
  pointer-events:none;text-shadow:0 2px 8px rgba(0,0,0,.5);
}

/* 图片节点：图占满、圆角统一，看起来更大气 */
.cv-node .cv-media{border-radius:0 0 13px 13px;overflow:hidden}
.cv-node .cv-media img{width:100%;height:100%;object-fit:cover;display:block}
.cv-node .cv-h{padding:11px 13px;font-size:13px}