/* ============================================================================
 * AI 短剧工厂 · 独立站外壳样式（深色，与 panels 的观感一致）
 * ==========================================================================*/
:root{
  --bg:#0b0d16;
  --bg2:#11142472;
  --line:rgba(255,255,255,.10);
  --line2:rgba(255,255,255,.16);
  --fg:#eaeaf2;
  --fg2:#9aa0b8;
  --acc:#7c5cff;
  --acc2:#ff7a45;
  --ok:#38d39f;
  --warn:#ffb020;
  --err:#ff5c72;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:radial-gradient(1200px 700px at 15% -10%,#1b1f3a 0%,transparent 60%),
             radial-gradient(900px 600px at 95% 0%,#2a1a2e 0%,transparent 55%),
             var(--bg);
  color:var(--fg);
  font:13px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  min-height:100vh;
}

/* ---------------- 顶栏 ---------------- */
.sdh-top{
  display:flex;align-items:center;gap:14px;
  padding:12px 22px;
  border-bottom:1px solid var(--line);
  background:linear-gradient(90deg,rgba(124,92,255,.16),rgba(255,122,69,.10));
  position:sticky;top:0;z-index:60;backdrop-filter:blur(12px);
}
.sdh-brand{display:flex;align-items:center;gap:11px}
.sdh-logo{font-size:26px}
.sdh-name{font-size:16px;font-weight:800;letter-spacing:.4px}
.sdh-sub{font-size:11px;color:var(--fg2)}
.sdh-topright{margin-left:auto;display:flex;align-items:center;gap:12px}
.sdh-bal{
  font-weight:800;font-size:13px;padding:5px 12px;border-radius:999px;
  background:rgba(56,211,159,.14);color:var(--ok);border:1px solid rgba(56,211,159,.3);
}
.sdh-who{font-size:12px;color:var(--fg2)}

/* ---------------- 按钮 ---------------- */
.sdh-btn,.sdh-cta,.sdh-mini{
  font-family:inherit;cursor:pointer;border-radius:10px;
  border:1px solid var(--line2);background:rgba(255,255,255,.07);color:var(--fg);
  padding:8px 15px;font-size:12.5px;transition:.15s;
}
.sdh-btn:hover,.sdh-mini:hover{background:rgba(255,255,255,.13)}
.sdh-btn.wide{width:100%;margin-top:10px}
.sdh-cta{
  width:100%;margin-top:14px;padding:11px;font-size:14px;font-weight:800;border:none;
  background:linear-gradient(135deg,var(--acc),var(--acc2));color:#fff;
}
.sdh-cta:disabled{opacity:.5;cursor:not-allowed}
.sdh-mini{padding:3px 9px;font-size:11px}

/* ---------------- 标签栏 ---------------- */
.sdh-tabs{display:flex;gap:6px;padding:12px 22px 0}
.sdh-tab{
  font-family:inherit;cursor:pointer;border:1px solid transparent;border-bottom:none;
  background:transparent;color:var(--fg2);padding:9px 16px;font-size:13px;
  border-radius:11px 11px 0 0;
}
.sdh-tab.on{background:rgba(255,255,255,.06);color:var(--fg);border-color:var(--line);font-weight:700}

/* ---------------- 主体 ---------------- */
.sdh-main{padding:0 22px 60px}
.sdh-view{display:none;padding-top:16px}
.sdh-view.on{display:block}
.sdh-cols{display:grid;grid-template-columns:330px 1fr;gap:16px;align-items:start}
@media(max-width:980px){.sdh-cols{grid-template-columns:1fr}}

.sdh-card{
  border:1px solid var(--line);border-radius:16px;overflow:hidden;
  background:linear-gradient(180deg,rgba(18,20,34,.92),rgba(12,14,26,.94));
  box-shadow:0 14px 40px rgba(0,0,0,.35);
}
.sdh-side .sdh-card{margin-bottom:14px}
.sdh-card-h{
  display:flex;align-items:center;gap:8px;padding:11px 14px;font-weight:700;font-size:13px;
  background:rgba(255,255,255,.04);border-bottom:1px solid var(--line);
}
.sdh-card-h .sdh-mini{margin-left:auto}
.sdh-card-b{padding:14px}

.sdh-lb{display:block;font-size:11.5px;color:var(--fg2);margin:10px 0 5px}
.sdh-in,.sdh-ta{
  width:100%;font-family:inherit;font-size:12.5px;color:var(--fg);
  background:rgba(0,0,0,.3);border:1px solid var(--line2);border-radius:9px;padding:8px 10px;
}
.sdh-in:focus,.sdh-ta:focus{outline:none;border-color:var(--acc)}
.sdh-ta{resize:vertical;line-height:1.55}
.sdh-grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;margin-top:8px}
.sdh-grid2 label{font-size:11.5px;color:var(--fg2);display:block}
.sdh-grid2 .sdh-in{margin-top:4px}

.sdh-tip{font-size:11px;color:var(--fg2);margin-top:9px;line-height:1.6}
.sdh-empty{color:var(--fg2);font-size:12px;padding:13px;text-align:center}
.sdh-big{padding:60px 20px;font-size:14px}
.sdh-hint-bar{
  font-size:12px;color:var(--fg2);margin:0 0 12px;padding:10px 14px;
  border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.03);
}
.sdh-doc h3{margin:16px 0 6px;font-size:14px}
.sdh-doc h3:first-child{margin-top:0}
.sdh-doc p{margin:0 0 9px;font-size:12.5px;color:#cfd3e4}

/* ---------------- 项目列表 ---------------- */
.sdh-proj{
  padding:9px 11px;border-radius:10px;border:1px solid var(--line);
  margin-bottom:7px;cursor:pointer;transition:.15s;
}
.sdh-proj:hover{background:rgba(255,255,255,.06)}
.sdh-proj.on{border-color:var(--acc);background:rgba(124,92,255,.13)}
.sdh-proj-t{font-weight:700;font-size:12.5px;display:flex;align-items:center;gap:6px}
.sdh-proj-m{font-size:11px;color:var(--fg2);margin-top:3px}

/* ---------------- 阶段条 ---------------- */
.sdh-stages{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.sdh-stage{
  font-size:11px;padding:5px 11px;border-radius:999px;
  border:1px solid var(--line);color:var(--fg2);background:rgba(255,255,255,.03);
}
.sdh-stage.done{border-color:rgba(56,211,159,.45);color:var(--ok);background:rgba(56,211,159,.10)}
.sdh-stage.cur{border-color:var(--acc);color:#fff;background:rgba(124,92,255,.28);font-weight:700}

/* ---------------- 状态徽章 ---------------- */
.sdh-badge{font-size:11px;padding:3px 10px;border-radius:999px;font-weight:700;border:1px solid}
.b-idle{color:var(--fg2);border-color:var(--line2)}
.b-running{color:#8fb4ff;border-color:rgba(143,180,255,.45);background:rgba(143,180,255,.12)}
.b-awaiting_confirm{color:var(--warn);border-color:rgba(255,176,32,.45);background:rgba(255,176,32,.12)}
.b-paused{color:var(--fg2);border-color:var(--line2);background:rgba(255,255,255,.05)}
.b-blocked_points{color:var(--err);border-color:rgba(255,92,114,.45);background:rgba(255,92,114,.12)}
.b-failed{color:var(--err);border-color:rgba(255,92,114,.45)}
.b-ready{color:var(--ok);border-color:rgba(56,211,159,.45);background:rgba(56,211,159,.12)}
.b-done{color:var(--ok);border-color:rgba(56,211,159,.45);background:rgba(56,211,159,.12)}

/* ---------------- 提示块 ---------------- */
.sdh-block{
  border-radius:12px;padding:12px 14px;margin-bottom:13px;font-size:12.5px;line-height:1.65;
  border:1px solid;
}
.sdh-block.points{border-color:rgba(255,92,114,.4);background:rgba(255,92,114,.08);color:#ffd2d8}
.sdh-block.confirm{border-color:rgba(255,176,32,.4);background:rgba(255,176,32,.08);color:#ffe6b8}
.sdh-block.err{border-color:rgba(255,92,114,.4);background:rgba(255,92,114,.08);color:#ffd2d8}
.sdh-block .sdh-acts{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}

/* ---------------- 锚点网格 ---------------- */
.sdh-anchors{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.sdh-anchor{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:rgba(0,0,0,.25)}
.sdh-anchor img{width:100%;display:block;aspect-ratio:9/16;object-fit:cover;background:#1a1d2e}
.sdh-anchor .ph{aspect-ratio:9/16;display:flex;align-items:center;justify-content:center;color:var(--fg2);font-size:11px}
.sdh-anchor .nm{padding:5px 7px;font-size:10.5px;line-height:1.35}
.sdh-anchor .kd{color:var(--fg2);font-size:9.5px}

/* ---------------- 台账表 ---------------- */
.sdh-shots{max-height:560px;overflow:auto;border:1px solid var(--line);border-radius:11px}
.sdh-shot{
  display:grid;grid-template-columns:64px 74px 1fr 84px;gap:9px;align-items:center;
  padding:8px 11px;border-bottom:1px solid rgba(255,255,255,.06);font-size:11.5px;
}
.sdh-shot:last-child{border-bottom:none}
.sdh-shot .id{font-weight:800;color:#c9b8ff}
.sdh-shot .st{font-size:10.5px}
.st-pending{color:var(--fg2)}
.st-running{color:#8fb4ff}
.st-done{color:var(--ok)}
.st-failed{color:var(--err)}
.sdh-shot .tx{color:#cfd3e4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sdh-shot img{width:100%;border-radius:6px;display:block}
.sdh-shot video{width:100%;border-radius:6px;display:block}

/* ---------------- 预格式文本 ---------------- */
.sdh-pre{
  white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.75;
  background:rgba(0,0,0,.28);border:1px solid var(--line);border-radius:11px;
  padding:12px 14px;max-height:340px;overflow:auto;color:#d8dcec;
}

/* ---------------- 日志 ---------------- */
.sdh-log{max-height:230px;overflow:auto;font-size:11px;line-height:1.65;font-family:ui-monospace,Consolas,monospace}
.sdh-log div{padding:2px 0;border-bottom:1px solid rgba(255,255,255,.045)}
.sdh-log .ok{color:var(--ok)}
.sdh-log .warn{color:var(--warn)}
.sdh-log .err{color:var(--err)}
.sdh-log .t{color:#5f6478}

/* ---------------- 我的算力 ---------------- */
.sdh-kv{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0;padding:12px 14px;
  border:1px solid var(--line);border-radius:12px;background:rgba(0,0,0,.22)}
.sdh-kv > div{min-width:0}
.sdh-kv .sdh-lb{margin-bottom:4px}
.sdh-mono{font-family:ui-monospace,Consolas,Monaco,monospace;font-size:12px;word-break:break-all}

/* ============================================================================
 * 无限画布
 * ==========================================================================*/
.cv-bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:8px 12px;margin-bottom:10px;border:1px solid var(--line);border-radius:12px;
  background:rgba(255,255,255,.035);font-size:12px;
}
.cv-hint{color:var(--fg2);font-size:11.5px}
.cv-grow{flex:1}
.cv-chk{display:inline-flex;align-items:center;gap:5px;color:var(--fg2);font-size:11.5px;cursor:pointer}
.cv-zoom{min-width:44px;text-align:center;font-weight:700;color:#c9b8ff}

.cv-viewport{
  position:relative;overflow:hidden;height:calc(100vh - 250px);min-height:460px;
  border:1px solid var(--line);border-radius:16px;
  background:
    radial-gradient(circle at 1px 1px, rgba(255,255,255,.07) 1px, transparent 0) 0 0/26px 26px,
    linear-gradient(180deg,rgba(14,16,28,.9),rgba(9,11,20,.96));
  cursor:grab;
}
.cv-viewport.dragging{cursor:grabbing}
.cv-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.cv-svg{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
.cv-nodes{position:absolute;left:0;top:0}
.cv-empty{position:absolute;left:40px;top:60px;width:440px;max-width:70vw;color:var(--fg2);font-size:13px;line-height:1.8}

.cv-edge{fill:none;stroke-width:1.6}
.cv-edge-main{stroke:rgba(150,165,220,.5)}
.cv-edge-gen{stroke:rgba(255,150,80,.75);stroke-width:2.2}
.cv-edge-ref{stroke:rgba(124,92,255,.45);stroke-dasharray:5 5;stroke-width:1.2}

.cv-node{
  position:absolute;border-radius:13px;overflow:hidden;
  border:1px solid var(--line2);background:linear-gradient(180deg,rgba(24,27,44,.97),rgba(15,17,30,.97));
  box-shadow:0 10px 26px rgba(0,0,0,.42);font-size:11.5px;color:var(--fg);
}
.cv-node.cv-tone-done{border-color:rgba(56,211,159,.5)}
.cv-node.cv-tone-running{border-color:rgba(143,180,255,.85);box-shadow:0 0 0 2px rgba(143,180,255,.18),0 10px 26px rgba(0,0,0,.42)}
.cv-node.cv-tone-failed{border-color:rgba(255,92,114,.6)}
.cv-node.cv-tone-warn{border-color:rgba(255,176,32,.65)}
.cv-node.cv-tone-pending{opacity:.72}

.cv-h{display:flex;align-items:center;gap:6px;padding:7px 9px;background:rgba(255,255,255,.05);
  border-bottom:1px solid var(--line);font-weight:700;font-size:11.5px}
.cv-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cv-b{margin-left:auto;font-size:9.5px;font-weight:600;color:var(--fg2);white-space:nowrap}
.cv-body{padding:8px 10px;color:#c6cbe0;line-height:1.55;max-height:112px;overflow:hidden;white-space:pre-wrap}
.cv-line{padding:0 10px 7px;color:#ffd9a8;line-height:1.5}
.cv-sub{padding:0 10px 8px;color:var(--fg2);font-size:10.5px}

.cv-media{position:relative;background:#0b0e1a}
.cv-media img,.cv-media video{width:100%;display:block;aspect-ratio:9/16;object-fit:cover;background:#12162a}
.cv-media video{aspect-ratio:9/16}
.cv-ph{aspect-ratio:9/16;display:flex;align-items:center;justify-content:center;color:var(--fg2);font-size:11px}
.cv-ph-v{aspect-ratio:9/16}
.cv-final .cv-media img,.cv-final .cv-media video{aspect-ratio:9/16}

.cv-lightbox{
  position:fixed;inset:0;z-index:400;background:rgba(4,6,14,.86);
  display:flex;align-items:center;justify-content:center;cursor:zoom-out;backdrop-filter:blur(3px);
}
.cv-lightbox img{max-width:88vw;max-height:88vh;border-radius:12px;box-shadow:0 30px 80px rgba(0,0,0,.7)}

/* 选中态 + 可点提示 */
.cv-node{cursor:grab}
.cv-node.cv-sel{outline:2px solid #8b6bff;outline-offset:2px}
.cv-node.cv-dragging{cursor:grabbing;z-index:50;box-shadow:0 18px 44px rgba(0,0,0,.6);outline:2px solid #ff9650;outline-offset:2px}
.cv-dot{position:absolute;right:6px;bottom:6px;font-size:11px;color:#8fb4ff;opacity:.85}

/* 图例 */
.cv-legend{
  position:absolute;left:14px;bottom:12px;display:flex;align-items:center;gap:12px;
  font-size:10.5px;color:var(--fg2);background:rgba(10,12,22,.82);
  border:1px solid var(--line);border-radius:10px;padding:6px 11px;backdrop-filter:blur(6px);
}
.cv-legend i{display:inline-block;width:16px;height:0;border-top:2px solid;margin-right:5px;vertical-align:middle}
.cv-legend .lg-gen{border-color:#ff9650;border-top-width:3px}
.cv-legend .lg-ref{border-color:rgba(124,92,255,.7);border-top-style:dashed}
.cv-legend .lg-done{border:none;height:8px;width:8px;border-radius:2px;background:rgba(56,211,159,.8);vertical-align:middle}
.cv-legend .lg-run{border:none;height:8px;width:8px;border-radius:2px;background:rgba(143,180,255,.9);vertical-align:middle}
.cv-legend .lg-wait{border:none;height:8px;width:8px;border-radius:2px;background:rgba(150,160,190,.5);vertical-align:middle}

/* 小地图 */
.cv-mini{
  position:absolute;right:14px;bottom:12px;width:190px;height:130px;
  border:1px solid var(--line2);border-radius:10px;background:rgba(8,10,18,.82);
  overflow:hidden;cursor:crosshair;backdrop-filter:blur(6px);
}
.cv-mini i{position:absolute;border-radius:2px}
.cv-mini b{position:absolute;border:1px solid #8b6bff;border-radius:3px;background:rgba(139,107,255,.16)}

/* 详情抽屉 */
.cv-detail{
  position:absolute;right:0;top:0;bottom:0;width:360px;max-width:82%;
  background:linear-gradient(180deg,rgba(18,20,34,.98),rgba(11,13,23,.99));
  border-left:1px solid var(--line2);transform:translateX(102%);transition:transform .18s;
  display:flex;flex-direction:column;z-index:20;
}
.cv-detail.on{transform:none}
.cv-dh{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--line);font-size:13px}
.cv-dh .sdh-mini{margin-left:auto}
.cv-db{padding:12px 14px;overflow:auto;font-size:12px}
.cv-dmedia{width:100%;max-height:330px;object-fit:contain;border-radius:10px;margin-bottom:12px;background:#0b0e1a}
.cv-dr{display:flex;gap:10px;padding:5px 0;border-bottom:1px solid rgba(255,255,255,.045)}
.cv-dr span{color:var(--fg2);min-width:74px;flex:none}
.cv-dr b{font-weight:600;color:#d8dcec;word-break:break-all}
.cv-dsec{margin:14px 0 7px;color:#c9b8ff;font-weight:700;font-size:11.5px}
.cv-dpre{
  white-space:pre-wrap;word-break:break-word;background:rgba(0,0,0,.3);
  border:1px solid var(--line);border-radius:9px;padding:10px;font-size:11.5px;
  line-height:1.7;color:#cfd3e4;max-height:280px;overflow:auto;margin:0;
}
.cv-drefs{display:flex;gap:9px;flex-wrap:wrap}
.cv-drefs figure{margin:0;width:86px}
.cv-drefs img{width:86px;height:86px;object-fit:cover;border-radius:8px;border:1px solid var(--line2);background:#12162a}
.cv-drefs figcaption{font-size:10px;color:var(--fg2);text-align:center;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ============================================================================
 * 智能体画布：左画布 + 右 Agent（整合视图）
 * ==========================================================================*/
.wk-body{overflow:hidden}
.wk-main{padding:0 14px 14px}
#view-work{padding-top:10px}

.wk{
  display:grid;
  grid-template-columns:minmax(0,1fr) 400px;
  gap:12px;
  height:calc(100vh - 152px);
}
@media (max-width:1180px){ .wk{grid-template-columns:1fr;height:auto} }

.wk-canvas{min-width:0;position:relative}
.wk-canvas #cv-host{height:100%;display:flex;flex-direction:column}
.wk-canvas .cv-viewport{height:auto;flex:1;min-height:420px}

/* ---------------- 右侧 Agent 面板 ---------------- */
.wk-side{
  display:flex;flex-direction:column;min-height:0;
  border:1px solid var(--line);border-radius:16px;overflow:hidden;
  background:linear-gradient(180deg,rgba(18,20,34,.96),rgba(11,13,23,.98));
}
.wk-side-head{
  display:flex;align-items:center;gap:8px;padding:10px 13px;
  border-bottom:1px solid var(--line);font-size:12.5px;font-weight:700;
  background:linear-gradient(90deg,rgba(124,92,255,.16),rgba(255,122,69,.10));
}
.wk-side-head > span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-side-badge{margin-left:auto;font-size:10.5px;padding:2px 9px;border-radius:999px;border:1px solid var(--line2);color:var(--fg2);white-space:nowrap}
.wk-side-scroll{flex:1;overflow:auto;padding:11px 12px 80px}

/* 新建：四步问答 */
.wk-new{border:1px solid var(--line);border-radius:13px;overflow:hidden;margin-bottom:12px;background:rgba(255,255,255,.02)}
.wk-new-head{display:flex;align-items:center;gap:8px;padding:9px 12px;font-weight:700;font-size:12.5px;background:rgba(255,255,255,.04);border-bottom:1px solid var(--line)}
.wk-new-head .sdh-mini{margin-left:auto}
#ag-new-body{padding:11px 12px}
.wk-q{margin-bottom:13px}
.wk-q-t{font-size:11.5px;color:#c9b8ff;font-weight:700;margin-bottom:7px}
.wk-opts{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:7px}
.wk-chip{
  font-family:inherit;cursor:pointer;font-size:11.5px;padding:5px 11px;border-radius:999px;
  border:1px solid var(--line2);background:rgba(255,255,255,.05);color:#cfd3e4;position:relative;
}
.wk-chip:hover{background:rgba(255,255,255,.11)}
.wk-chip.on{border-color:transparent;background:linear-gradient(135deg,#7c5cff,#ff7a45);color:#fff;font-weight:700}
.wk-chip i{font-style:normal;font-size:9px;margin-left:5px;opacity:.85}

/* 项目列表 */
.wk-sec{border:1px solid var(--line);border-radius:13px;margin-bottom:12px;overflow:hidden}
.wk-sec-h{display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:12px;font-weight:700;background:rgba(255,255,255,.04);border-bottom:1px solid var(--line)}
.wk-sec-h .sdh-mini{margin-left:auto}
.wk-sec > div:last-child{padding:8px 10px}
.wk-proj{padding:7px 9px;border-radius:9px;border:1px solid transparent;cursor:pointer;margin-bottom:5px}
.wk-proj:hover{background:rgba(255,255,255,.05)}
.wk-proj.on{border-color:var(--acc);background:rgba(124,92,255,.14)}
.wk-proj-t{font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-proj-m{font-size:10.5px;color:var(--fg2);margin-top:2px}

/* 编号进度 1/6 */
.wk-steps{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.wk-step{display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:9px;border:1px solid var(--line);font-size:11.5px;color:var(--fg2)}
.wk-step b{width:18px;height:18px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:10px;background:rgba(255,255,255,.09);color:#cfd3e4}
.wk-step.done{border-color:rgba(56,211,159,.4);color:#9ff0cd;background:rgba(56,211,159,.07)}
.wk-step.done b{background:rgba(56,211,159,.85);color:#08231a}
.wk-step.cur{border-color:var(--acc);color:#fff;background:rgba(124,92,255,.18);font-weight:700}
.wk-step.cur b{background:linear-gradient(135deg,#7c5cff,#ff7a45);color:#fff}

/* 对话流 / 任务卡 */
.wk-chat{display:flex;flex-direction:column;gap:8px}
.wk-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:rgba(255,255,255,.025)}
.wk-card-done{border-color:rgba(56,211,159,.35)}
.wk-card-running{border-color:rgba(143,180,255,.7)}
.wk-card-warn{border-color:rgba(255,176,32,.6)}
.wk-card-failed{border-color:rgba(255,92,114,.55)}
.wk-card-h{display:flex;align-items:center;gap:8px;padding:8px 11px;cursor:pointer;background:rgba(255,255,255,.04);font-size:12px;font-weight:700}
.wk-card-h:hover{background:rgba(255,255,255,.08)}
.wk-card-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-card-b{margin-left:auto;font-size:10px;font-weight:600;color:var(--fg2);white-space:nowrap}
.wk-card-x{color:var(--fg2);font-size:11px}
.wk-card-b2{padding:10px 11px;font-size:11.5px;color:#cfd3e4;line-height:1.6}

.wk-pre{white-space:pre-wrap;word-break:break-word;background:rgba(0,0,0,.28);border:1px solid var(--line);
  border-radius:9px;padding:9px 10px;max-height:300px;overflow:auto;font-size:11.5px;line-height:1.7;margin:0 0 8px}
.wk-pre-sm{font-size:10.5px;max-height:170px;color:#b9bfd6}
.wk-hint{color:var(--fg2);font-size:11px}

.wk-gen{margin-bottom:8px}
.wk-gen img,.wk-gen video{width:100%;max-height:300px;object-fit:contain;border-radius:9px;background:#0b0e1a;display:block}
.wk-gen-m{font-size:10.5px;color:var(--fg2);margin-top:3px}
.wk-src{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.wk-src img{width:52px;height:52px;object-fit:cover;border-radius:7px;border:1px solid var(--line2)}
.wk-src span{font-size:10.5px;color:var(--fg2)}

.wk-sub{display:flex;gap:9px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.wk-sub:last-child{border-bottom:none}
.wk-sub > img,.wk-sub > .wk-ph{width:62px;height:110px;flex:none;object-fit:cover;border-radius:8px;background:#12162a;border:1px solid var(--line2)}
.wk-sub > .wk-ph{display:flex;align-items:center;justify-content:center;color:var(--fg2);font-size:10px}
.wk-sub-b{min-width:0;flex:1}
.wk-sub-b > b{font-size:11.5px}
.wk-sub-b > span{font-size:10px;color:var(--fg2);margin-left:6px}

.wk-mr{display:flex;gap:8px;font-size:10.5px;padding:2px 0;color:var(--fg2)}
.wk-mr span{min-width:56px;flex:none}
.wk-mr b{color:#d8dcec;font-weight:600;word-break:break-all}

.wk-shot{display:flex;gap:8px;align-items:baseline;padding:3px 0;font-size:11px;border-bottom:1px solid rgba(255,255,255,.04)}
.wk-shot b{color:#c9b8ff;flex:none;width:56px}
.wk-shot span{color:var(--fg2);flex:none;width:34px}
.wk-shot em{font-style:normal;color:#b9bfd6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 多轮问答式确认 */
.wk-ask{margin:10px 0;border:1px solid rgba(255,176,32,.42);border-radius:12px;background:rgba(255,176,32,.07);padding:11px 12px}
.wk-ask-q{font-size:12px;font-weight:700;color:#ffe6b8;margin-bottom:9px}
.wk-opt{display:flex;gap:10px;align-items:flex-start;padding:9px 11px;border-radius:10px;border:1px solid var(--line2);
  background:rgba(255,255,255,.04);margin-bottom:7px;cursor:pointer}
.wk-opt:hover{background:rgba(255,255,255,.1);border-color:var(--acc)}
.wk-opt b{width:20px;height:20px;flex:none;border-radius:6px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#7c5cff,#ff7a45);color:#fff;font-size:11px}
.wk-opt span{display:block;font-size:12px;color:#e8ebf5}
.wk-opt i{display:block;font-style:normal;font-size:10.5px;color:var(--fg2);margin-top:2px}

.wk-acts{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.wk-inline{width:auto;margin:0;padding:8px 15px}

.wk-logbox{margin-top:14px;border-top:1px solid var(--line);padding-top:9px}
.wk-logbox summary{cursor:pointer;font-size:11.5px;color:var(--fg2)}
.wk-log{margin-top:8px;max-height:200px;overflow:auto;font-size:10.5px;font-family:ui-monospace,Consolas,monospace;line-height:1.6}
.wk-log .ok{color:var(--ok)}
.wk-log .warn{color:var(--warn)}
.wk-log .err{color:var(--err)}

/* 上传小说 dropzone */
.wk-drop{
  border:1.5px dashed rgba(140,150,190,.5);border-radius:13px;padding:18px 14px;text-align:center;
  cursor:pointer;background:rgba(255,255,255,.025);transition:.15s;
}
.wk-drop:hover,.wk-drop.over{border-color:var(--acc);background:rgba(124,92,255,.12)}
.wk-drop-i{font-size:26px;line-height:1.2}
.wk-drop-t{font-size:12.5px;font-weight:700;margin-top:5px}
.wk-drop-s{font-size:10.5px;color:var(--fg2);margin-top:4px}
.wk-file{
  display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:11px;
  border:1px solid rgba(56,211,159,.42);background:rgba(56,211,159,.09);
}
.wk-file-n{min-width:0;flex:1}
.wk-file-n b{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-file-n span{font-size:10.5px;color:#9ff0cd}

/* ---------------- 弹层 / 吐司 ---------------- */
.sdh-modal{
  position:fixed;inset:0;background:rgba(4,6,14,.72);z-index:200;
  display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);
}
.sdh-modal.on{display:flex}
.sdh-modal-box{
  width:min(400px,92vw);border:1px solid var(--line2);border-radius:17px;overflow:hidden;
  background:linear-gradient(180deg,#171a2c,#0e101c);box-shadow:0 30px 80px rgba(0,0,0,.6);
}
.sdh-modal-h{display:flex;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line);font-weight:700}
.sdh-modal-h .sdh-mini{margin-left:auto}
.sdh-modal-b{padding:16px}

.sdh-toast{
  position:fixed;top:74px;left:50%;transform:translateX(-50%);z-index:300;
  padding:10px 18px;border-radius:11px;font-size:12.5px;transition:opacity .4s;
  background:rgba(30,34,54,.97);border:1px solid var(--line2);box-shadow:0 12px 34px rgba(0,0,0,.5);
}
.sdh-toast.ok{border-color:rgba(56,211,159,.5);color:var(--ok)}
.sdh-toast.err{border-color:rgba(255,92,114,.5);color:var(--err)}

/* 浮动面板在小屏上让一让 */
@media(max-width:720px){
  .sdh-top{padding:10px 14px}
  .sdh-main,.sdh-tabs{padding-left:14px;padding-right:14px}
}

/* ---------------- 画布分组节点（group + parentId） ---------------- */
.cv-node.cv-group{
  z-index:0;pointer-events:auto;
  background:rgba(124,92,255,.07);
  border:1px dashed rgba(150,130,255,.55);
  border-radius:16px;box-shadow:none;
}
.cv-node.cv-group .cv-group-h{
  position:absolute;left:12px;top:7px;
  font-size:11.5px;font-weight:700;color:#c9b8ff;letter-spacing:.3px;
  pointer-events:none;
}
.cv-node.cv-group.cv-dragging{outline-color:#8b6bff}