:root {
  /* 深色主题 深色主题（对齐设计 token）*/
  /* 背景层级（深→浅）*/
  --bg0: #0a0a0a;                 /* 页面底色 */
  --bg1: #242424;                 /* 主背景 / 面板 */
  --bg2: #2e2e2e;                 /* 凸起面板 */
  --bd: rgba(255, 255, 255, 0.1); /* 边框（半透明白）*/
  /* 文字层级（浅）*/
  --t1: #E5EAF3;                  /* 主文字 */
  --t2: #CFD3DC;                  /* 常规文字 */
  --t3: rgba(255, 255, 255, 0.6); /* 次要文字 */
  /* 品牌绿（设计 primary）+ 功能色 */
  --acc: #00DA5A;
  --acc2: #00DA5A;
  --ok: #00DA5A;
  --warn: #e6a23c;
  --danger: #f56c6c;
  /* 圆角阶梯（设计体系）*/
  --radius: 8px;
  --radius-xs: 2px;
  --radius-sm: 4px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-card: 20px;
  /* 字体（PingFang SC，与设计一致）*/
  --font: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;
  /* 玻璃 / 卡片面（深色半透明）*/
  --glass: rgba(255, 255, 255, 0.04);
  --glass-soft: rgba(255, 255, 255, 0.06);
  /* 阴影（深色加深）*/
  --shadow-soft: 0 2px 8px rgba(0, 0, 0, 0.36);
  --shadow-strong: 0 12px 32px 4px rgba(0, 0, 0, 0.36), 0 8px 20px rgba(0, 0, 0, 0.72);

  /* 品牌色映射（对齐设计）*/
  --brand-green: #00DA5A;
  --brand-green-hover: #5ee8ee;
  --brand-green-dark: #00b347;
  --brand-orange: #e6a23c;
  --brand-blue: #67F9FF;

  /* 品牌特色：青绿渐变 CTA + 青色强调 */
  --cta-gradient: linear-gradient(133deg, #67F9FF 3.17%, #A3FFEC 51.84%, #65FFAA 100%);
  --cta-text: #000000;
  --cyan: #67F9FF;
  --cyan-light: #A3FFEC;
  --cyan-hover: #5ee8ee;
  --text-gradient: linear-gradient(90deg, #B5F2FF 1.87%, #9DFFC9 100%);

  /* 二级语义变量（补全原作者预留但未定义的 token，映射到深色主题）*/
  --sf: var(--bg2);       /* surface 面板底（原 fallback #f7f8fa/#f0f1f3 等浅灰）*/
  --ink: var(--t1);       /* 主墨色文字（原 fallback #333）*/
  --ink1: var(--t1);
  --ink2: var(--t2);      /* 次墨色（原 fallback #666）*/
  --ink3: var(--t3);
  --t4: var(--t3);        /* 更次要文字（原 fallback #bbb/#ccc）*/
  --bg: var(--bg1);       /* 通用背景 */
  --terra: #c45d3e;       /* 暖橙装饰色（保留原色）*/
}

@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,600;0,9..40,700;1,9..40,400&display=swap");

* {
  box-sizing: border-box;
}

/* 表单控件深色化（覆盖浏览器默认白底，未显式设 background 的 input/select/textarea）*/
input, textarea, select {
  background: var(--bg2);
  color: var(--t1);
}
input[type="checkbox"], input[type="radio"] {
  accent-color: var(--acc);
}

html,
body {
  margin: 0;
  padding: 0;
  min-height: 100%;
  background: var(--bg0);
  color: var(--t1);
  font-family: var(--font);
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.6;
}

a {
  color: var(--acc);
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}

.app {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.topnav {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 0 24px;
  height: 64px;
  border-bottom: 1px solid var(--bd);
  background: var(--bg1);
  backdrop-filter: none;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
  position: sticky;
  top: 0;
  z-index: 50;
  transition: box-shadow 0.3s ease;
}

.topnav:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.topnav-hint-inline {
  font-size: 12px;
  color: rgba(168, 189, 222, 0.82);
  white-space: nowrap;
  user-select: none;
}

.topnav-click-hint {
  position: absolute;
  left: 50%;
  bottom: -34px;
  transform: translateX(-50%) translateY(-4px);
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid rgba(154, 201, 255, 0.56);
  background: linear-gradient(180deg, rgba(47, 74, 116, 0.95) 0%, rgba(31, 52, 87, 0.97) 100%);
  color: #e8f4ff;
  font-size: 12px;
  line-height: 1;
  white-space: nowrap;
  box-shadow: 0 10px 26px rgba(18, 37, 69, 0.5);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease, transform 0.18s ease;
}

.topnav-click-hint.on {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

.brand {
  font-weight: 700;
  letter-spacing: 0.02em;
  font-size: 26px;
  color: var(--brand-green);
  white-space: nowrap;
  text-shadow: none;
  transition: color 0.3s ease;
  display: flex;
  align-items: center;
  gap: 8px;
}

.brand:hover {
  color: var(--brand-green-hover);
}

/* 品牌 logo 圆点装饰 */
.brand::before {
  content: '';
  width: 8px;
  height: 8px;
  background: var(--brand-orange);
  border-radius: 50%;
  display: inline-block;
  animation: brand-dot-pulse 2s ease-in-out infinite;
}

@keyframes brand-dot-pulse {
  0%, 100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.2);
    opacity: 0.8;
  }
}

.steps {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 1;
  flex-wrap: wrap;
  padding: 0;
  border-radius: 0;
  border: none;
  background: transparent;
  box-shadow: none;
}

.steps.intro .step {
  animation: topnav-step-pulse 0.7s ease;
}

.steps.intro .step[data-order="1"] {
  animation-delay: 0.04s;
}

.steps.intro .step[data-order="2"] {
  animation-delay: 0.16s;
}

.steps.intro .step[data-order="3"] {
  animation-delay: 0.28s;
}

.steps.intro .step[data-order="4"] {
  animation-delay: 0.4s;
}

.step {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 20px;
  border-radius: 20px;
  border: none;
  color: var(--t2);
  cursor: pointer;
  user-select: none;
  font-size: 14px;
  font-weight: 500;
  background: transparent;
  transition:
    background 0.3s ease,
    color 0.3s ease,
    transform 0.2s ease;
  position: relative;
}

.step.pending {
  opacity: 0.6;
}

.step.done {
  color: var(--brand-green);
  background: rgba(0, 218, 90, 0.05);
}

/* 强制关闭顶部步骤条伪元素对钩，避免任何状态回显 */
.topnav .step::after,
.topnav .step.done::after,
.topnav .step.on::after,
.topnav .step.pending::after {
  content: none !important;
  display: none !important;
}

.step:hover {
  background: rgba(0, 218, 90, 0.08);
  color: var(--t1);
  transform: translateY(-1px);
}

.step.on {
  background: rgba(255,255,255,0.1);
  color: var(--brand-green);
  font-weight: 600;
  box-shadow: 0 4px 12px rgba(0, 218, 90, 0.3);
}

.step.on:hover {
  background: linear-gradient(135deg, var(--brand-green-hover) 0%, var(--brand-green) 100%);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 218, 90, 0.4);
}

/* Netflix 风格 - 统一红色 */

.step .sn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  font-size: 12px;
  font-weight: 700;
  background: var(--bg2);
  border: 2px solid var(--bd);
  color: var(--t2);
  transition: all 0.3s ease;
}

.step.on .sn {
  background: rgba(255, 255, 255, 0.25);
  border-color: rgba(255,255,255,0.08);
  color: #fff;
}

.step.done .sn {
  background: var(--brand-green);
  border-color: var(--brand-green);
  color: #fff;
}

.step:hover .sn {
  transform: scale(1.1);
}

.sa {
  width: 24px;
  height: 2px;
  border-radius: 999px;
  background: rgba(129, 154, 194, 0.38);
  box-shadow: inset 0 0 0 1px rgba(166, 188, 224, 0.14);
  user-select: none;
  transition: background 0.18s ease, box-shadow 0.18s ease;
}

.sa.done {
  background: linear-gradient(90deg, rgba(116, 229, 175, 0.75) 0%, rgba(156, 248, 205, 0.68) 100%);
  box-shadow: 0 0 8px rgba(87, 204, 145, 0.36);
}

@keyframes topnav-step-pulse {
  0% {
    transform: translateY(0) scale(1);
    box-shadow: none;
  }
  45% {
    transform: translateY(-1px) scale(1.02);
    box-shadow: 0 0 0 2px rgba(154, 210, 255, 0.22);
  }
  100% {
    transform: translateY(0) scale(1);
    box-shadow: none;
  }
}

@keyframes step-on-glint {
  0% {
    background-position: 150% 0;
  }
  100% {
    background-position: -80% 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .step.on::after {
    animation: none;
  }
}

.mn {
  flex: 1;
  padding: 20px 22px 40px;
  max-width: 1400px;
  width: 100%;
  margin: 0 auto;
}

.vw {
  display: none;
}
.vw.on {
  display: block;
}

.flash {
  margin-bottom: 16px;
  padding: 14px 18px;
  border-radius: var(--radius);
  border-left: 4px solid;
  background: var(--glass-soft);
  color: var(--t1);
  display: flex;
  align-items: flex-start;
  gap: 12px;
  animation: slideDown 0.3s ease;
}

.flash.ok {
  border-color: var(--ok);
  background: rgba(0, 218, 90, 0.08);
}

.flash.err {
  border-color: var(--danger);
  background: rgba(255, 107, 107, 0.08);
}

.flash .status-icon {
  font-size: 18px;
  font-weight: bold;
  line-height: 1;
  flex-shrink: 0;
  margin-top: 2px;
}

.flash.ok .status-icon {
  color: var(--ok);
}

.flash.err .status-icon {
  color: var(--danger);
}

.flash .status-content {
  flex: 1;
  min-width: 0;
}

.flash .status-content strong {
  display: block;
  font-size: 15px;
  font-weight: 600;
  margin-bottom: 4px;
  color: var(--t1);
}

.flash .status-hint {
  font-size: 13px;
  color: var(--t2);
  line-height: 1.5;
  margin-top: 4px;
}

.flash .status-hint .mono {
  color: var(--acc);
  font-family: "Courier New", monospace;
  font-size: 12px;
  padding: 2px 4px;
  background: rgba(91, 140, 255, 0.1);
  border-radius: 3px;
}

@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.6;
  }
}

.flash .status-icon.running {
  animation: pulse 1.5s ease-in-out infinite;
}

/* ── 圆圈 i 说明 tooltip（纯图标，hover 显示，不占位不溢出） ── */
.info-tip {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin-left: 6px;
  border-radius: 50%;
  background: var(--bg2);
  border: 1px solid var(--bd);
  color: var(--t3);
  cursor: help;
  vertical-align: middle;
  flex-shrink: 0;
  transition: all 0.15s;
}
.info-tip svg { width: 10px; height: 10px; display: block; }
.info-tip:hover {
  border-color: var(--brand-green, var(--acc));
  color: var(--brand-green, var(--acc));
  background: rgba(0, 218, 90, 0.06);
}
.info-tip__bubble {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;              /* 右对齐到图标，向左展开，避免溢出页面右边界 */
  width: max-content;
  max-width: min(360px, 80vw);   /* 不超过视口宽度，防溢出 */
  padding: 12px 14px;
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-left: 3px solid var(--brand-green, var(--acc));
  border-radius: 8px;
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.12);
  font-size: 12.5px;
  line-height: 1.7;
  color: var(--t2);
  font-weight: 400;
  white-space: normal;
  word-break: break-word;
  text-align: left;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.18s, visibility 0.18s;
  z-index: 200;
  pointer-events: none;
}
.info-tip:hover .info-tip__bubble {
  opacity: 1;
  visibility: visible;
}

.hd {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 16px;
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-left: 4px solid var(--brand-green, var(--acc));
  border-radius: 8px;
  padding: 16px 20px;
  box-shadow: var(--shadow-soft);
}

.hd-t {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-shadow: 0 0 20px rgba(102, 161, 255, 0.16);
}

.hd-s {
  font-size: 13px;
  color: var(--t2);
  margin-top: 4px;
}

/* ── Agent 智能体入口卡（项目界面签名元素） ── */
.agent-entry-card {
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-left: 4px solid var(--brand-green, var(--acc));
  border-radius: 8px;
  padding: 18px 20px;
  margin-bottom: 16px;
  box-shadow: var(--shadow-soft);
}
.agent-entry-head {
  margin-bottom: 14px;
}
.agent-entry-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 16px;
  font-weight: 700;
  color: var(--t1);
}
.agent-entry-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px; height: 22px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  color: #fff;
  background: linear-gradient(135deg, var(--brand-green, var(--acc)), var(--brand-green-dark));
  border-radius: 4px;
}
.agent-entry-sub {
  font-size: 13px;
  color: var(--t2);
  margin-top: 4px;
}
.agent-dropzones {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
@media (max-width: 720px) {
  .agent-dropzones { grid-template-columns: 1fr; }
}
.agent-dropzone {
  border: 2px dashed var(--bd);
  border-radius: 10px;
  padding: 26px 16px;
  text-align: center;
  color: var(--t3);
  cursor: pointer;
  transition: all 0.2s;
  background: var(--bg2);
}
.agent-dropzone--video { border-color: rgba(0, 218, 90, 0.35); }
.agent-dropzone--sub { border-color: rgba(245, 166, 35, 0.35); }
.agent-dropzone:hover,
.agent-dropzone.dragover {
  border-color: var(--brand-green, var(--acc));
  color: var(--brand-green, var(--acc));
  background: rgba(0, 218, 90, 0.04);
}
.agent-dropzone--sub:hover,
.agent-dropzone--sub.dragover {
  border-color: #f5a623;
  color: #f5a623;
  background: rgba(245, 166, 35, 0.05);
}
.agent-dropzone svg { display: block; margin: 0 auto 10px; }
.agent-dropzone-title { font-size: 15px; font-weight: 600; color: var(--t2); margin-bottom: 4px; }
.agent-dropzone-hint { font-size: 12px; }
.agent-file-list { margin-top: 12px; display: flex; flex-direction: column; gap: 6px; }
.agent-file-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: var(--bg2);
  border: 1px solid var(--bd);
  border-radius: 6px;
  font-size: 13px;
}
.agent-file-item .agent-file-icon { font-size: 16px; flex-shrink: 0; }
.agent-file-item .agent-file-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--t1); }
.agent-file-item .agent-file-bar { width: 80px; height: 4px; background: var(--bd); border-radius: 2px; overflow: hidden; flex-shrink: 0; }
.agent-file-item .agent-file-bar span { display: block; height: 100%; background: var(--brand-green, var(--acc)); transition: width 0.3s; }
.agent-file-item .agent-file-pct { font-size: 11px; color: var(--t3); width: 36px; text-align: right; flex-shrink: 0; font-variant-numeric: tabular-nums; }
.agent-file-item.done .agent-file-pct { color: var(--brand-green, var(--acc)); font-weight: 600; }

.vp-upload-details {
  margin-top: 14px;
  border: 1px solid var(--bd);
  border-radius: 8px;
  background: var(--bg1);
  overflow: hidden;
}
.vp-upload-details > summary {
  cursor: pointer;
  font-size: 15px;
  font-weight: 700;
  color: var(--t1);
  padding: 14px 16px;
  list-style: none;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 10px;
  transition: background 0.15s;
}
.vp-upload-details > summary:hover {
  background: rgba(0, 218, 90, 0.04);
}
.vp-upload-details > summary::-webkit-details-marker { display: none; }
.vp-upload-details > summary::before {
  content: '▸';
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: rgba(0, 218, 90, 0.1);
  color: var(--brand-green, var(--acc));
  font-size: 11px;
  font-weight: 700;
  transition: transform 0.18s;
  flex-shrink: 0;
}
.vp-upload-details[open] > summary::before { transform: rotate(90deg); }
.vp-upload-details[open] > summary {
  border-bottom: 1px solid var(--bd);
}
.vp-upload-details-body { padding: 14px 16px; }

.b {
  border: none;
  background: var(--bg2);
  color: var(--t1);
  padding: 10px 24px;
  border-radius: 20px;
  font-size: 14px;
  cursor: pointer;
  font-family: inherit;
  font-weight: 500;
  letter-spacing: 0;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
  transition:
    transform 0.3s ease,
    background 0.3s ease,
    box-shadow 0.3s ease;
}
.b:hover:not(:disabled) {
  background: rgba(255,255,255,0.08);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  transform: translateY(-2px);
}
.b:disabled {
  opacity: 0.68;
  cursor: not-allowed;
  box-shadow: none;
  transform: none;
}

.b.ba {
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--bd);
  color: var(--t1);
  font-weight: 500;
  box-shadow: none;
}

.b.ba:hover:not(:disabled) {
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.22);
  transform: translateY(-1px);
  box-shadow: none;
}

.b.bs {
  background: var(--bg1);
  border: 1px solid var(--bd);
  color: var(--t1);
  box-shadow: none;
}

.b.bs:hover:not(:disabled) {
  border-color: var(--brand-green);
  color: var(--brand-green);
  background: rgba(0, 218, 90, 0.05);
}

/* 生成类按钮：青色渐变 + 积分消耗（对齐深色主题）*/
.b.gen-btn {
  background: var(--cta-gradient);
  border: none;
  color: #073b3b;
  font-weight: 600;
  border-radius: 8px;
  box-shadow: 0 2px 10px rgba(103, 249, 255, 0.22);
}
.b.gen-btn:hover:not(:disabled) {
  background: var(--cta-gradient);
  filter: brightness(1.08);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(103, 249, 255, 0.34);
}
.b.gen-btn:disabled { opacity: 0.55; }
.b.gen-btn .gen-score {
  display: inline-flex; align-items: center;
  color: #073b3b; font-weight: 700; font-size: 13px; margin: 0 2px;
}
.b.gen-btn .bean-icon { width: 15px; height: 15px; margin-right: 3px; vertical-align: -2px; }
.b.gen-btn .gen-label { margin-left: 2px; }
.b.gen-btn .btn-step { background: rgba(0,0,0,0.18); color: #073b3b; border: none; }
.b.gen-btn svg.gen-btn-icon { width: 14px; height: 14px; margin-right: 3px; vertical-align: -2px; }

/* 单个资产卡的模型按钮（中性，全局模型已是 .model-card 卡片）*/
.btn-asset-card-img-model {
  border-color: var(--bd);
  color: var(--t2);
  font-size: 12px;
  padding: 4px 10px 4px 12px;
  cursor: pointer;
}
.btn-asset-card-img-model::after {
  content: " ▾";
  font-size: 14px;
  margin-left: 3px;
  opacity: 0.85;
}
.btn-asset-card-img-model:hover:not(:disabled) {
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.22);
}

.b.danger {
  background: linear-gradient(135deg, var(--danger) 0%, #ff3838 100%);
  color: #fff;
  box-shadow: 0 4px 12px rgba(255, 90, 90, 0.25);
}

.b.danger:hover:not(:disabled) {
  background: linear-gradient(135deg, #ff6b6b 0%, var(--danger) 100%);
  box-shadow: 0 6px 16px rgba(255, 90, 90, 0.35);
}

#btn-analyze-full {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  min-width: 220px;
  padding: 14px 36px;
  font-size: 16px;
  font-weight: 600;
  border-radius: 10px;
  letter-spacing: 0.04em;
  flex-shrink: 0;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

#btn-analyze-full:focus-visible {
  outline: 2px solid rgba(160, 215, 255, 0.95);
  outline-offset: 3px;
}

#btn-analyze-full.btn-analyze-go:not(:disabled) {
  box-shadow:
    0 2px 0 rgba(0, 30, 80, 0.35),
    0 6px 28px rgba(40, 100, 220, 0.55),
    0 0 0 1px rgba(255, 255, 255, 0.2);
}

#btn-analyze-full.btn-analyze-go:not(:disabled):hover {
  transform: translateY(-2px);
  box-shadow:
    0 3px 0 rgba(0, 30, 80, 0.3),
    0 10px 36px rgba(50, 120, 240, 0.6),
    0 0 0 1px rgba(255, 255, 255, 0.28);
}

#btn-analyze-full.btn-analyze-wait:disabled,
#btn-analyze-full.btn-analyze-done:disabled {
  opacity: 0.78;
  filter: grayscale(0.22);
  font-weight: 600;
}

#btn-analyze-full.btn-analyze-busy:disabled {
  opacity: 0.9;
  cursor: wait;
  filter: none;
  animation: btn-analyze-busy-pulse 1.1s ease-in-out infinite;
}

@keyframes btn-analyze-busy-pulse {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(120, 180, 255, 0.2);
  }
  50% {
    box-shadow: 0 0 0 5px rgba(120, 180, 255, 0.06);
  }
}

#btn-asset-adapt.btn-asset-task-busy:disabled,
#btn-asset-gen-all.btn-asset-task-busy:disabled {
  opacity: 0.9;
  cursor: wait;
  filter: none;
  animation: btn-analyze-busy-pulse 1.1s ease-in-out infinite;
}

.analyze-cta-bar {
  margin-top: 14px;
  padding: 12px 16px;
  border: 1px solid var(--bd);
  border-radius: 8px;
  background: var(--bg2);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
}

.analyze-cta-text {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
  flex: 1;
  min-width: 200px;
  color: var(--t2);
}

.analyze-cta-text strong {
  color: var(--brand-green-dark, var(--brand-green-dark));
  font-weight: 700;
}

.analyze-cta-bar--ready {
  background: var(--bg2);
}

.analyze-cta-bar--ready .analyze-cta-text {
  color: var(--t2);
}

.analyze-cta-bar--ready .analyze-cta-text strong {
  color: var(--brand-green-dark);
}

/* 进度状态（扁平，与状态条同级，无嵌套卡片） */
.analyze-status-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  font-weight: 600;
  color: var(--brand-green, var(--acc));
}
.analyze-status-bar {
  display: inline-block;
  flex: 1;
  min-width: 100px;
  max-width: 240px;
  height: 6px;
  background: var(--bd);
  border-radius: 999px;
  overflow: hidden;
}
.analyze-status-bar span {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, var(--brand-green, var(--acc)), #00d407);
  border-radius: 999px;
}

@media (max-width: 640px) {
  .analyze-cta-bar {
    flex-direction: column;
    align-items: stretch;
  }

  #btn-analyze-full {
    min-width: 0;
    width: 100%;
  }
}

.sr {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

@media (max-width: 900px) {
  .sr {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.sc {
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-left: 4px solid var(--brand-green, var(--acc));
  border-radius: 8px;
  padding: 14px 16px;
  box-shadow: var(--shadow-soft);
  transition: box-shadow 0.15s, transform 0.15s;
}
.sc:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.1); transform: translateY(-1px); }

.sc-l {
  font-size: 12px;
  color: var(--t2);
  margin-bottom: 6px;
}

.sc-v {
  font-size: 22px;
  font-weight: 700;
}

.etx {
  border: 1px solid var(--bd);
  background: var(--bg1);
  border-radius: 8px;
  padding: 14px 18px;
  line-height: 1.7;
  color: var(--t2);
  max-height: 220px;
  overflow: auto;
}

.dir-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 16px 0;
}

.dir-label {
  color: var(--t2);
  font-size: 13px;
}

.dir-opt {
  border: 1px solid var(--bd);
  background: var(--bg2);
  color: var(--t2);
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 12px;
  cursor: default;
}

.dir-opt.on {
  border-color: var(--acc);
  color: var(--brand-green-dark);
  background: rgba(0, 218, 90, 0.10);
  font-weight: 600;
}

.sbar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 18px;
  align-items: center;
  padding: 12px 18px;
  font-size: 13px;
  color: var(--t2);
  border-bottom: 1px solid var(--bd);
}

.dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  display: inline-block;
  margin-right: 6px;
}
.dg {
  background: var(--ok);
}
.dy {
  background: var(--warn);
}
.dw {
  background: #8b97ab;
}

.tlb-sp {
  flex: 1;
}

.pb {
  display: inline-block;
  width: 140px;
  height: 8px;
  background: var(--bg2);
  border-radius: 999px;
  overflow: hidden;
  vertical-align: middle;
  margin: 0 8px;
  border: 1px solid var(--bd);
}

.pbf {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, var(--acc), #7aa7ff);
  border-radius: 999px;
}

.eb {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 12px 14px 14px;
}

.ec {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 600;
  border: 1px solid var(--bd);
  color: var(--t2);
}

.ec-d {
  background: rgba(0, 218, 90, 0.12);
  border-color: rgba(0, 218, 90, 0.35);
  color: #7ef0a8;
  box-shadow: 0 0 6px rgba(0, 218, 90, 0.3);
}
.ec-p {
  background: rgba(255, 140, 66, 0.12);
  border-color: rgba(255, 140, 66, 0.35);
  color: var(--video-orange);
  box-shadow: 0 0 6px rgba(255, 140, 66, 0.3);
  animation: ec-p-pulse 2s ease-in-out infinite;
}
.ec-w {
  background: var(--bg2);
  opacity: 0.5;
}

@keyframes ec-p-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.7;
  }
}

.tabs {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
/* === 要点1：资产库 tabs 行（左 tab / 右批量按钮）+ 批量生成弹窗 === */
.tabs.v-a-tabs { justify-content: space-between; align-items: center; flex-wrap: nowrap; gap: 12px; }
.tabs.v-a-tabs .tabs-left { display: flex; gap: 8px; flex-wrap: nowrap; flex-shrink: 0; }
.tabs.v-a-tabs .v-a-batch-btns { display: flex; gap: 6px; flex-wrap: nowrap; flex: 1 1 auto; min-width: 0; justify-content: flex-end; }
.tabs.v-a-tabs .v-a-batch-btns .b { height: 32px; padding: 0 10px; font-size: 12px; border-radius: 8px; display: inline-flex; align-items: center; gap: 4px; flex-shrink: 1; min-width: 0; overflow: hidden; }
#v-a .ms-toolbar { display: none; align-items: center; gap: 10px; padding: 8px 12px; margin-bottom: 10px; background: var(--bg2); border: 1px solid var(--bd); border-radius: 8px; font-size: 13px; }
#v-a.ms-mode .ms-toolbar { display: flex; }
.bg-section { padding: 12px 0; border-top: 1px solid var(--bd); }
.bg-section:first-of-type { border-top: none; padding-top: 0; }
.bg-section-title { font-size: 11px; font-weight: 600; color: var(--t3); margin-bottom: 10px; letter-spacing: 0.04em; }
.bg-scope-radios { display: flex; gap: 8px; flex-wrap: wrap; }
.bg-scope-radio { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border: 1px solid var(--bd); border-radius: 8px; background: var(--bg1); color: var(--t2); font-size: 13px; cursor: pointer; transition: all 0.15s; }
.bg-scope-radio:hover { border-color: rgba(255,255,255,0.28); color: var(--t1); }
.bg-scope-radio input { accent-color: var(--brand-green); cursor: pointer; margin: 0; }
.bg-scope-radio:has(input:checked) { border-color: rgba(255,255,255,0.4); background: rgba(255,255,255,0.08); color: var(--t1); }
.bg-scope-hint { margin: 10px 0 0; padding: 10px 12px; font-size: 12px; line-height: 1.6; color: var(--t2); background: var(--bg0); border: 1px solid var(--bd); border-radius: 8px; }
.bg-params-wrap { display: flex; align-items: center; }
.bg-params-wrap .params-display { width: 100%; }
.params-popover { z-index: 300; }
/* 改编需求回显标签（要点2）：显示在每集改编按钮左侧，点击弹完整内容 */
.ast-sb-ep-head .adapt-req-badge { display: inline-block; vertical-align: middle; max-width: 420px; padding: 4px 12px; margin-right: 6px; font-size: 13px; color: var(--t2); background: rgba(103,249,255,0.08); border: 1px solid rgba(103,249,255,0.22); border-radius: 999px; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: all 0.15s; }
.ast-sb-ep-head .adapt-req-badge:hover { background: rgba(103,249,255,0.14); color: var(--t1); }

.tab {
  border: 1px solid var(--bd);
  background: var(--bg2);
  color: var(--t2);
  padding: 8px 14px;
  border-radius: 999px;
  cursor: pointer;
  font-family: inherit;
  font-size: 13px;
}
.tab.on {
  border-color: rgba(255,255,255,0.25);
  color: var(--t1);
  background: rgba(255,255,255,0.08);
  font-weight: 600;
}

.tlb {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 12px;
}

.tlb input[type="text"],
.tlb select {
  background: var(--bg1);
  border: 1px solid var(--bd);
  color: var(--t1);
  padding: 8px 10px;
  border-radius: 8px;
  font-family: inherit;
  font-size: 13px;
}

.panel {
  border: 1px solid var(--bd);
  background: var(--bg1);
  border-radius: 8px;
  overflow: hidden;
  margin-bottom: 20px;
  box-shadow: var(--shadow-soft);
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}

.panel:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-strong);
  border-color: var(--brand-green);
}

.tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.tbl th,
.tbl td {
  border-bottom: 1px solid var(--bd);
  padding: 10px 12px;
  text-align: left;
  vertical-align: top;
}

.tbl th {
  color: var(--t3);
  font-weight: 600;
  font-size: 12px;
  background: linear-gradient(180deg, rgba(20, 31, 50, 0.95) 0%, rgba(17, 26, 42, 0.98) 100%);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.thumb {
  width: 44px;
  height: 44px;
  border-radius: 8px;
  object-fit: cover;
  border: 2px solid var(--bd);
  background: var(--bg2);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
  transition: all 0.2s ease;
}

.thumb:hover {
  border-color: var(--timeline-blue);
  transform: scale(1.05);
  box-shadow: 0 4px 12px rgba(91, 156, 255, 0.4);
}

.mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 12px;
  color: var(--t2);
}

.shot-card {
  border: 1px solid rgba(114, 144, 191, 0.3);
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 12px;
  background: var(--glass-soft);
  box-shadow: var(--shadow-soft);
}

.shot-card h4 {
  margin: 0 0 8px;
  font-size: 14px;
}

.episode-sb-head {
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--bd);
}

.shot-readonly {
  font-size: 12px;
  color: var(--t3);
  margin-top: 8px;
  line-height: 1.45;
  word-break: break-word;
}

/* —— 分镜内容生成（三栏） —— */
.sb-topbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 16px;
  margin-bottom: 12px;
  padding: 12px 18px;
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-radius: 8px;
  box-shadow: var(--shadow-soft);
}

.sb-video-extend-control {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
}
.sb-video-extend-control::after {
  content: '';
  width: 1px;
  height: 20px;
  background: var(--bd);
  margin-left: 10px;
  flex-shrink: 0;
}

.sb-video-extend-lbl {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--t2);
  cursor: pointer;
  user-select: none;
  padding: 4px 10px;
  border-radius: 6px;
  transition: background 0.15s;
}
.sb-video-extend-lbl:hover {
  background: rgba(0, 0, 0, 0.03);
}

/* 自定义 toggle switch */
.sb-video-extend-cb {
  -webkit-appearance: none;
  appearance: none;
  width: 36px;
  height: 20px;
  background: #ccc;
  border-radius: 20px;
  position: relative;
  cursor: pointer;
  transition: background 0.25s ease;
  border: none;
  outline: none;
  flex-shrink: 0;
}
.sb-video-extend-cb::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  background: var(--bg1);
  border-radius: 50%;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.sb-video-extend-cb:checked {
  background: var(--brand-green, var(--acc));
}
.sb-video-extend-cb:checked::after {
  transform: translateX(16px);
  box-shadow: 0 1px 4px rgba(0, 218, 90, 0.3);
}
.sb-video-extend-cb:focus-visible {
  box-shadow: 0 0 0 2px rgba(0, 218, 90, 0.3);
}

.sb-shot-prev-cb:disabled + span {
  opacity: 0.45;
  cursor: not-allowed;
}

/* 单镜头延续 toggle */
.sb-shot-prev-cb {
  -webkit-appearance: none;
  appearance: none;
  width: 30px;
  height: 16px;
  background: #ccc;
  border-radius: 16px;
  position: relative;
  cursor: pointer;
  transition: background 0.25s ease;
  border: none;
  outline: none;
  flex-shrink: 0;
  vertical-align: middle;
}
.sb-shot-prev-cb::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 12px;
  height: 12px;
  background: var(--bg1);
  border-radius: 50%;
  transition: transform 0.25s ease;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.18);
}
.sb-shot-prev-cb:checked {
  background: var(--brand-green, var(--acc));
}
.sb-shot-prev-cb:checked::after {
  transform: translateX(14px);
}
.sb-shot-prev-cb:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.sb-top-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
}

/* 全局视频生成状态条 */
.global-gen-status-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  padding: 6px 12px;
  border-radius: 6px;
  background: rgba(0, 218, 90, 0.07);
  border: 1px solid rgba(0, 218, 90, 0.25);
  font-size: 13px;
  color: var(--t1);
  line-height: 1.4;
}
.global-gen-spinner {
  display: inline-block;
  width: 13px;
  height: 13px;
  border: 2px solid rgba(0, 218, 90, 0.25);
  border-top-color: var(--brand-green);
  border-radius: 50%;
  flex-shrink: 0;
  animation: global-gen-spin 0.75s linear infinite;
}
@keyframes global-gen-spin {
  to { transform: rotate(360deg); }
}

/* ── 视频生成页面布局重构：横向剧集条 + sticky 分镜 ── */

/* === 视频生成页重构：两态（剧集看板 ↔ 生产工作室）=== */
/* 默认态A 剧集看板：显示 board，隐藏生产布局；.vg-studio-on 反转 */
#v-g:not(.vg-studio-on) .sb-layout { display: none; }
#v-g.vg-studio-on .vg-episode-board { display: none; }
.vg-episode-board { padding: 20px; }
.vg-board-title { font-size: 15px; font-weight: 600; color: var(--t1); margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--bd); }
.vg-board-sub { font-size: 12px; color: var(--t3); font-weight: 400; margin-left: 6px; }
.vg-ep-board-list { padding: 4px 0; }
/* 态A 看板的 sb-ep-item（复刻顶部 .sb-col-ep 剧集条，稍大 + 显示段数） */
.vg-episode-board .sb-ep-item { width: 116px !important; min-width: 116px !important; max-width: 116px !important; padding: 8px 8px 7px !important; }
.vg-episode-board .sb-ep-count { display: inline !important; font-size: 10px !important; color: var(--t3) !important; }
.vg-board-empty { padding: 40px; text-align: center; color: var(--t3); font-size: 14px; }

/* studio 态：左栏 248px + 隐藏集数横条 + 主区单分镜聚焦 */


/* 左栏批量操作区（集数选择按钮下方） */
.vg-batch-actions { display: flex; flex-direction: column; gap: 10px; padding: 0 0 10px; margin-bottom: 6px; border-bottom: 1px solid var(--bd); flex-shrink: 0; }
.vg-batch-gen-btn { height: 32px; padding: 0 12px; font-size: 12px; border-radius: 8px; border: none; color: #000; cursor: pointer; background: linear-gradient(133deg, #67F9FF, #A3FFEC, #65FFAA); display: inline-flex; align-items: center; gap: 6px; justify-content: center; width: 100%; }
.vg-batch-gen-btn .gen-score { font-weight: 600; }
.vg-batch-gen-btn:hover { opacity: 0.9; }
.vg-batch-gen-btn:disabled { opacity: 0.45; cursor: not-allowed; }
/* 批量延续开关（沿用 ms-switch 标准样式） */
.vg-batch-prev-row { display: flex; align-items: center; justify-content: space-between; padding: 6px 10px; border-radius: 6px; background: rgba(20,22,28,0.92); border: 1px solid var(--bd); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.vg-batch-prev-row .label { font-size: 12px; color: var(--t2); }
.vg-batch-prev-row .ms-switch { flex-shrink: 0; }
.vg-batch-prev-row:hover { background: rgba(255,255,255,0.06); }
/* 单镜延续开关（工具栏内，复用 ms-switch；毛玻璃模糊 hover） */
.vg-prev-switch { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; flex-shrink: 0; padding: 4px 8px; border-radius: 6px; background: rgba(20,22,28,0.92); border: 1px solid var(--bd); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); transition: all 0.15s; }
.vg-prev-switch:hover { background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.22); }
.vg-prev-switch .label { font-size: 11px; color: var(--t2); user-select: none; }
.vg-prev-switch.is-locked { cursor: not-allowed; pointer-events: none; }
.vg-prev-switch.is-locked .ms-switch-track { background: rgba(255,255,255,0.08); }
.vg-prev-switch.is-locked .label { color: var(--t3); }

#v-g.vg-studio-on { height: calc(100vh - 84px); overflow: hidden; }
#v-g.vg-studio-on .sb-col-main { border: none !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; }
/* studio 去框直接排版（去左栏/分镜卡/参考素材的 border/radius/bg，省空间自适应）*/
#v-g.vg-studio-on .sb-col-shots { border: none !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; }
#v-g.vg-studio-on .sb-shot-section { border: none !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; }
#v-g.vg-studio-on .sb-shot-section.vg-active { border: none !important; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-col { border: none; border-radius: 0; background: transparent; }
#v-g.vg-studio-on .sb-layout { grid-template-columns: 200px minmax(0, 1fr); grid-template-rows: 1fr; min-height: calc(100vh - 100px); height: calc(100vh - 100px); }
#v-g.vg-studio-on .sb-col-ep { display: none; }
#v-g.vg-studio-on .sb-col-shots { position: relative; top: auto; overflow: hidden; min-height: 0; }
#v-g.vg-studio-on .sb-shot-list { -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 18px, #000 calc(100% - 18px), transparent 100%); mask-image: linear-gradient(to bottom, transparent 0, #000 18px, #000 calc(100% - 18px), transparent 100%); }   /* 左栏索引上下超出渐隐，非硬切断（nav 元素 class 为 sb-shot-list）*/
#v-g.vg-studio-on .sb-col-main { overflow: hidden; align-self: stretch; padding: 0; display: flex; flex-direction: column; }
/* 镜头切换动效（淡入 + 轻微上滑，非滚动翻页）*/
@keyframes vg-shot-fade-in-up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
#v-g.vg-studio-on .sb-shot-section.vg-active.vg-shot-enter { animation: vg-shot-fade-in-up 0.3s ease; }
#v-g.vg-studio-on .sb-all-shots { padding: 0 !important; flex: 1 1 0 !important; min-height: 0 !important; display: flex !important; flex-direction: column !important; }
/* === 本集资产区（要点5）：横跨顶部 + 横向 scroll + 竖标签 === */
#v-g .vg-ep-assets { flex: 0 0 auto; display: flex; flex-direction: row; background: transparent; border: none; border-radius: 0; margin-bottom: 14px; overflow: visible; }
#v-g .vg-ep-assets-vtitle { writing-mode: vertical-rl; text-orientation: upright; font-size: 13px; font-weight: 600; color: var(--t1); background: transparent; padding: 10px 6px; flex: 0 0 auto; display: flex; align-items: center; justify-content: center; border-right: 1px solid var(--bd); }
#v-g .vg-ep-assets-scroll { display: flex; flex-direction: row; gap: 14px; padding: 6px 8px; overflow-x: auto; overflow-y: hidden; flex: 1 1 auto; min-width: 0; align-items: stretch; scrollbar-width: none; }
#v-g .vg-ep-assets-scroll::-webkit-scrollbar { display: none; }
#v-g .vg-ep-asset-seg { display: flex; flex-direction: row; align-items: stretch; flex: 0 0 auto; }
#v-g .vg-ep-asset-seg + .vg-ep-asset-seg { border-left: 1px solid var(--bd); padding-left: 14px; }
#v-g .vg-ep-asset-seg-label { writing-mode: vertical-rl; text-orientation: upright; font-size: 11px; font-weight: 600; color: var(--t3); padding: 0 4px; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
#v-g .vg-ep-asset-cards { display: flex; gap: 8px; }
#v-g .vg-ep-asset-card { flex: 0 0 auto; width: 72px; }
#v-g .vg-ep-asset-thumb { width: 72px; height: 64px; border-radius: 6px; background: var(--bg1); border: 1px solid var(--bd); overflow: hidden; display: flex; align-items: center; justify-content: center; font-size: 22px; font-weight: 600; color: var(--t2); margin-bottom: 3px; }
#v-g .vg-ep-asset-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
#v-g .vg-ep-asset-thumb.has-img { font-size: 0; }
#v-g .vg-ep-asset-name { font-size: 11px; color: var(--t1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; }
#v-g .vg-ep-asset-empty { font-size: 11px; color: var(--t3); padding: 20px 12px; white-space: nowrap; }
#v-g .vg-ep-asset-add-btn { flex: 0 0 auto; align-self: stretch; width: 60px; border-radius: 6px; border: 1px dashed var(--bd); background: var(--bg1); color: var(--t3); font-size: 12px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.15s; margin-left: 8px; }
#v-g .vg-ep-asset-add-btn:hover { border-color: rgba(255,255,255,0.3); color: var(--t1); background: rgba(255,255,255,0.06); }
/* 本集资产卡片：替换/删除按钮（hover 显示，符号）*/
#v-g .vg-ep-asset-card { position: relative; }
#v-g .vg-ep-asset-replace, #v-g .vg-ep-asset-remove { position: absolute; top: 4px; width: 18px; height: 18px; padding: 0; border-radius: 50%; border: 1px solid var(--bd); background: var(--bg2); color: var(--t2); font-size: 11px; cursor: pointer; opacity: 0; transition: opacity 0.15s; display: flex; align-items: center; justify-content: center; z-index: 5; line-height: 1; }
#v-g .vg-ep-asset-replace { right: 22px; }
#v-g .vg-ep-asset-remove { right: 4px; background: rgba(255,80,80,0.85); color: #fff; border-color: rgba(255,80,80,0.9); }
#v-g .vg-ep-asset-card:hover .vg-ep-asset-replace, #v-g .vg-ep-asset-card:hover .vg-ep-asset-remove { opacity: 1; }
#v-g .vg-ep-asset-replace:hover { background: rgba(255,255,255,0.12); color: var(--t1); }
/* 提示词上方引用缩略图：只图、真实图 */
#v-g .vg-prompt-ref-thumb img { width: 100%; height: 100%; object-fit: cover; border-radius: 5px; display: block; }
#v-g .vg-prompt-ref-thumb.has-img { background: var(--bg1); font-size: 0; }
/* 引用资产缩略图：替换/删除按钮（hover 显示）*/
#v-g .vg-prompt-ref { position: relative; }
#v-g .vg-prompt-ref-replace, #v-g .vg-prompt-ref-remove { position: absolute; top: -6px; width: 18px; height: 18px; padding: 0; border-radius: 50%; border: 1px solid var(--bd); background: var(--bg2); color: var(--t2); font-size: 9px; cursor: pointer; opacity: 0; transition: opacity 0.15s; display: flex; align-items: center; justify-content: center; z-index: 5; }
#v-g .vg-prompt-ref-replace { right: 12px; }
#v-g .vg-prompt-ref-remove { right: -6px; background: rgba(255,80,80,0.85); color: #fff; border-color: rgba(255,80,80,0.9); }
#v-g .vg-prompt-ref:hover .vg-prompt-ref-replace, #v-g .vg-prompt-ref:hover .vg-prompt-ref-remove { opacity: 1; }
#v-g .vg-prompt-ref-replace:hover { background: rgba(255,255,255,0.12); color: var(--t1); }
/* @引用下拉分组（角色/场景/道具）*/
.asset-mention-group { padding: 2px 0; }
.asset-mention-group-header { font-size: 11px; font-weight: 600; color: var(--t3); padding: 8px 12px 4px; border-bottom: 1px solid var(--bd); margin-bottom: 2px; }
/* 提示词引用缩略图 hover 大图浮层 */
.vg-ref-hover-tip { position: absolute; max-width: 220px; max-height: 220px; border-radius: 8px; overflow: hidden; border: 1px solid var(--bd); box-shadow: 0 6px 18px rgba(0,0,0,0.6); z-index: 500; pointer-events: none; }
.vg-ref-hover-tip img { max-width: 220px; max-height: 220px; display: block; }
/* 引用资产标签（提示词引用缩略图行最左）*/
#v-g .vg-prompt-refs-label { font-size: 11px; color: var(--t3); flex: 0 0 auto; align-self: center; padding-right: 8px; white-space: nowrap; }
/* edit-col 内本集资产区：紧凑 + 不抢占提示词高度 */
#v-g .vg-edit-col > .vg-ep-assets { margin-bottom: 8px; flex: 0 0 auto; }
#v-g .vg-edit-col > .vg-ep-assets .vg-ep-asset-thumb { width: 60px; height: 60px; font-size: 22px; }
#v-g .vg-edit-col > .vg-ep-assets .vg-ep-asset-card { width: 60px; }
/* 提示词上方缩略图（要点5）*/
#v-g.vg-studio-on .vg-prompt-refs { display: flex; gap: 6px; padding: 6px 10px; border-bottom: 1px solid var(--bd); min-height: 8px; flex: 0 0 auto; overflow-x: auto; }
#v-g .vg-prompt-ref { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; width: 44px; }
#v-g .vg-prompt-ref-thumb { width: 40px; height: 40px; border-radius: 6px; background: linear-gradient(135deg, rgba(103,249,255,0.12), rgba(0,218,90,0.08)); border: 1px solid var(--bd); display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 600; color: var(--t2); }
#v-g .vg-prompt-ref-name { font-size: 9px; color: var(--t3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; text-align: center; }
#v-g .vg-prompt-refs-empty { font-size: 11px; color: var(--t3); padding: 4px 2px; }
/* 单分镜聚焦：仅 active section 显示 */
#v-g.vg-studio-on .sb-shot-section { display: none; margin-bottom: 0; }
#v-g.vg-studio-on .sb-shot-section.vg-active { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; height: 100%; }
#v-g.vg-studio-on .sb-shot-section.vg-active > .sb-seg-head { flex: 0 0 auto; }
#v-g.vg-studio-on .sb-shot-section.vg-active > .sb-editor-split { flex: 1 1 auto; min-height: 0; display: grid; align-items: stretch; }
/* 左栏集数按钮 */
.vg-ep-picker { display: flex; align-items: center; justify-content: space-between; width: 100%; height: 36px; padding: 0 12px; border: 1px solid var(--bd); border-radius: 8px; background: var(--bg1); color: var(--t1); font-size: 13px; font-weight: 600; cursor: pointer; margin-bottom: 10px; flex-shrink: 0; }
.vg-ep-picker:hover { border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.06); }
.vg-ep-picker-chev { color: var(--t3); transition: transform 0.15s; }
.vg-ep-picker.on .vg-ep-picker-chev { transform: rotate(180deg); }
/* 集数看板下拉（浮在左栏，向右延展） */
.vg-ep-picker-dropdown { position: fixed; left: 16px; right: 16px; width: auto; max-width: none; max-height: 70vh; overflow-y: auto; padding: 14px; background: var(--bg2); border: 1px solid var(--bd); border-radius: 10px; box-shadow: 0 14px 36px rgba(0,0,0,0.5); z-index: 90; }
/* 集数选择 modal（全屏遮罩 + 居中卡片，替代下拉）*/
.vg-ep-picker-modal { position: fixed; inset: 0; z-index: 200; display: none; align-items: center; justify-content: center; }
.vg-ep-picker-modal-bg { position: absolute; inset: 0; background: rgba(0,0,0,0.6); }
.vg-ep-picker-modal-card { position: relative; width: min(960px, calc(100vw - 80px)); max-width: calc(100vw - 32px); max-height: 80vh; background: var(--bg2); border: 1px solid var(--bd); border-radius: 12px; padding: 20px; overflow-y: auto; }
.vg-ep-picker-modal-title { font-size: 16px; font-weight: 600; color: var(--t1); margin-bottom: 16px; display: flex; justify-content: space-between; align-items: center; }
.vg-ep-picker-modal-close { background: none; border: none; color: var(--t3); font-size: 18px; cursor: pointer; padding: 4px 8px; border-radius: 6px; }
.vg-ep-picker-modal-close:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
.vg-ep-picker-modal-body .sb-ep-list { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; }
/* 剧集状态徽标色（独立于选中态：已完成=品牌绿，进行中=青，未开始=灰）*/
.sb-ep-status-badge.is-completed { background: rgba(0,218,90,0.14) !important; color: var(--brand-green, #00DA5A) !important; border: 1px solid rgba(0,218,90,0.4) !important; }
.sb-ep-status-badge.is-running { background: rgba(103,249,255,0.12) !important; color: #67F9FF !important; border: 1px solid rgba(103,249,255,0.3) !important; }
.sb-ep-status-badge.is-pending { background: rgba(255,255,255,0.05) !important; color: var(--t3) !important; border: 1px solid var(--bd) !important; }
.vg-ep-picker-dropdown[hidden] { display: none; }
/* 下拉用 --mini class 控制，无需 dropdown 覆盖 */

/* section 重组：两列（编辑 flex + 视频），提示词 resize:none 撑满，参考素材移入编辑区下方 */
#v-g.vg-studio-on .sb-editor-split.vg-reshaped { grid-template-columns: minmax(0, 1.5fr) 1fr; gap: 0; align-items: stretch; grid-template-rows: 1fr; background: var(--bg2); border: 1px solid var(--bd); border-radius: 12px; overflow: hidden; }
#v-g.vg-studio-on .vg-edit-col { display: flex; flex-direction: column; gap: 2px; min-width: 0; min-height: 0; flex: 1 1 auto; overflow: hidden; padding: 12px 14px; border-right: 1px solid var(--bd); }
#v-g .vg-ep-asset-empty { font-size: 11px; color: var(--t3); padding: 20px 8px; }
/* 提示词上方引用缩略图（板块③）*/
#v-g.vg-studio-on .vg-prompt-refs { display: flex; gap: 6px; padding: 6px 10px; border-bottom: 1px solid var(--bd); min-height: 8px; flex: 0 0 auto; overflow-x: auto; }
#v-g .vg-prompt-ref { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; width: 40px; }
#v-g .vg-prompt-ref-thumb { width: 36px; height: 36px; border-radius: 5px; background: linear-gradient(135deg, rgba(103,249,255,0.12), rgba(0,218,90,0.08)); border: 1px solid var(--bd); display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 600; color: var(--t2); }
#v-g .vg-prompt-ref-name { font-size: 9px; color: var(--t3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; text-align: center; }
#v-g .vg-prompt-refs-empty { font-size: 11px; color: var(--t3); padding: 4px 2px; }
#v-g.vg-studio-on .vg-edit-col .sb-prompt-block { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; gap: 6px; border: none; border-radius: 0; background: transparent; overflow: hidden; }
/* 三板块独立（要点5）：片段标题板块② 独立行 */
#v-g.vg-studio-on .vg-edit-col > .sb-seg-head { flex: 0 0 auto; padding: 2px 4px; margin: 0 !important; }
#v-g.vg-studio-on .vg-edit-col .sb-prompt-block > label { flex: 0 0 auto; }
#v-g.vg-studio-on .vg-edit-col .shot-card.sb-shot-editor { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; border: none; background: transparent; box-shadow: none; padding: 0; margin: 0; border-radius: 0; align-self: stretch; }
#v-g.vg-studio-on .vg-edit-col .sb-prompt-block > label { display: none; }
#v-g.vg-studio-on .vg-edit-col .sb-video-ref-label { display: none; }
#v-g.vg-studio-on .vg-edit-col .sb-prompt-group { border: none; background: transparent; box-shadow: none; border-radius: 0; }
#v-g.vg-studio-on .vg-edit-col .sb-prompt-group:focus-within { border: none; box-shadow: none; }
#v-g.vg-studio-on .vg-edit-col .sb-prompt-ta { border: 1px solid var(--bd); border-radius: 8px; background: var(--bg1); }
#v-g.vg-studio-on .vg-edit-col .shot-card > .sb-prompt-group { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; align-self: stretch; }
#v-g.vg-studio-on .vg-edit-col .sb-prompt-ta { resize: none !important; flex: 1 1 auto !important; min-height: 0 !important; }   /* 强制填满到 actions 位置 */
/* studio 参考素材：横向单行（缩略图横滚 + 右端固定＋按钮），恢复名称标注 */
#v-g.vg-studio-on .vg-edit-col .sb-ref-col { position: relative; z-index: 20; flex: 0 0 auto; display: flex; flex-direction: row; align-items: center; gap: 8px; padding: 10px 12px; border: none; border-bottom: 1px solid var(--bd); border-radius: 0; background: transparent; }
#v-g.vg-studio-on .vg-edit-col .asset-ref-add-dropdown { z-index: 30; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-col > .sb-col-title { display: none; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-col > .sb-ref-hint { display: none; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-strip { flex: 1 1 auto; flex-direction: row !important; gap: 6px; max-height: 54px; overflow-x: auto; overflow-y: hidden; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-cell { flex: 0 0 60px !important; width: 60px; min-height: 0; position: relative; overflow: visible; display: flex; flex-direction: column; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-cell::after { content: none !important; display: none !important; }   /* 去掉 🖼 IMAGE 类型角标 */
#v-g.vg-studio-on .vg-edit-col .sb-ref-cell img,
#v-g.vg-studio-on .vg-edit-col .sb-ref-cell video { width: 100%; height: 44px; aspect-ratio: auto; max-height: 44px; object-fit: cover; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-cap { display: block !important; position: static; font-size: 9px; color: var(--t3); background: none; padding: 2px 2px 0; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-radius: 0; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-add-wrap { flex: 0 0 auto; margin-top: 0; }
/* studio 参考素材 +号：竖条窄（高=参考图 56，宽 40）；替换/删除按钮随缩略图减小 */
#v-g.vg-studio-on .vg-edit-col .asset-ref-upload-btn { width: 40px; height: 56px; font-size: 22px; padding: 0; flex: 0 0 40px; min-width: 40px; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-add-wrap { width: auto !important; margin-top: 0; margin-left: auto; }   /* +号右对齐 + 窄（覆盖原 176px 固定宽）*/
#v-g.vg-studio-on .vg-edit-col .sb-ref-remove-btn { font-size: 9px; padding: 1px 3px; right: 2px; top: 2px; line-height: 1; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-remove-btn svg { width: 9px; height: 9px; }
#v-g.vg-studio-on .vg-reshaped .sb-col-gen { display: flex; flex-direction: column; min-height: 0; flex: 1 1 auto; padding: 12px; }
/* 视频预览 frame：撑满 col-gen 剩余高度（修复 width:auto+aspect-ratio 在 flex 里塌缩成 4×2 的空白 bug）*/
#v-g.vg-studio-on .vg-reshaped .sb-col-gen .sb-preview-frame { flex: 1 1 auto; min-height: 200px; align-self: center; width: auto; max-width: 100%; aspect-ratio: 9/16; margin: 0 0 8px; max-height: calc(100% - 8px); }
/* 提示词右下角浮动控件（润色 + 生成） */
#v-g.vg-studio-on .vg-prompt-relative { position: relative; }
/* 提示词文本框底部：从按键行高度开始，文字自身渐隐（mask-image），横贯全行 */
#v-g.vg-studio-on .vg-prompt-relative { position: relative; }
#v-g.vg-studio-on .vg-prompt-actions { position: absolute; right: 8px; bottom: 6px; display: flex; gap: 6px; z-index: 3; }
#v-g.vg-studio-on .vg-prompt-polish { height: 34px; padding: 0 14px; font-size: 13px; border-radius: 8px; border: 1px solid var(--bd); background: var(--bg1); color: var(--t2); cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
#v-g.vg-studio-on .vg-prompt-polish:hover { border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.06); color: var(--t1); }
#v-g.vg-studio-on .vg-video-params { height: 34px; padding: 0 12px; font-size: 13px; border-radius: 8px; border: 1px solid var(--bd); background: var(--bg1); color: var(--t2); cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
#v-g.vg-studio-on .vg-video-params:hover { border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.06); color: var(--t1); }
#v-g.vg-studio-on .vg-video-params.on { color: var(--t1); border-color: rgba(255,255,255,0.28); }
/* vg-prompt-actions 三按钮统一高度/字号/不换行 */
#v-g.vg-studio-on .vg-prompt-actions .vg-prompt-polish,
#v-g.vg-studio-on .vg-prompt-actions .params-display,
#v-g.vg-studio-on .vg-prompt-actions .sb-gen-big { height: 34px; font-size: 13px; white-space: nowrap; flex: 0 0 auto; }
#v-g.vg-studio-on .vg-prompt-actions .sb-gen-big { padding: 0 14px; margin: 0; width: auto !important; flex: 0 0 auto; }
#v-g.vg-studio-on .vg-prompt-actions .params-display { padding: 0 12px; }
/* 缩略图 replace/remove 减小（缩略图 84 上，16×16）*/
#v-g.vg-studio-on .vg-edit-col .sb-ref-replace-btn,
#v-g.vg-studio-on .vg-edit-col .sb-ref-remove-btn { width: 16px !important; height: 16px !important; font-size: 9px !important; padding: 0 !important; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-replace-btn svg { width: 9px; height: 9px; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-replace-btn { right: 2px; top: 2px; }
#v-g.vg-studio-on .vg-edit-col .sb-ref-remove-btn { left: 2px; top: 2px; }
#v-g.vg-studio-on .vg-prompt-actions .sb-gen-big { margin: 0; }
/* 提示词底部留白，避免浮动按钮遮挡文字（按键高 34 + 下边距 6 + 余量）*/
/* 提示词文字在按键行上方开始渐隐（mask-image 横贯全行），按键坐落已淡出处 */
#v-g.vg-studio-on .vg-prompt-relative .sb-prompt-ta { padding-bottom: 52px !important; -webkit-mask-image: linear-gradient(to bottom, black 0%, black calc(100% - 52px), transparent calc(100% - 18px), transparent 100%); mask-image: linear-gradient(to bottom, black 0%, black calc(100% - 52px), transparent calc(100% - 18px), transparent 100%); }
/* 视频区：视频撑满 + 工具按钮区 */
#v-g.vg-studio-on .vg-reshaped .sb-col-gen .sb-preview-video { width: 100%; flex: 1 1 auto; min-height: 220px; max-height: none; object-fit: contain; background: #000; border-radius: 8px; }
#v-g.vg-studio-on .vg-video-tools { display: flex; gap: 6px; padding: 10px 0 0; margin-top: 10px; border-top: 1px solid var(--bd); flex-wrap: nowrap; }
#v-g.vg-studio-on .vg-tool-btn { flex: 1 1 0; min-width: 0; height: 56px; padding: 6px 4px; border-radius: 8px; border: 1px solid var(--bd); background: var(--bg1); color: var(--t2); cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; font-size: 11px; transition: all 0.15s; }
#v-g.vg-studio-on .vg-tool-btn svg { width: 15px; height: 15px; }
#v-g.vg-studio-on .vg-tool-btn:hover { background: rgba(20,22,28,0.92); color: var(--t1); border-color: rgba(255,255,255,0.22); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
/* 保存视频选单（要点5）：当前片段 / 完整一集 / 批量下载本集 */
.vg-save-menu { position: fixed; z-index: 220; min-width: 232px; max-width: 264px; padding: 6px; background: var(--bg2); border: 1px solid var(--bd); border-radius: 10px; box-shadow: 0 14px 36px rgba(0,0,0,0.55); display: none; box-sizing: border-box; }
.vg-save-opt { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; width: 100%; padding: 8px 10px; border: none; background: transparent; color: var(--t2); cursor: pointer; border-radius: 6px; text-align: left; }
.vg-save-opt:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
.vg-save-opt-label { font-size: 13px; font-weight: 500; }
.vg-save-opt-desc { font-size: 11px; color: var(--t3); }
/* 单镜延续三态按钮（要点3）：自动 / 开启 / 关闭 */
#v-g.vg-studio-on .vg-prev-switch { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 8px 0 10px; font-size: 12px; border-radius: 8px; border: 1px solid var(--bd); background: rgba(20,22,28,0.92); color: var(--t2); cursor: pointer; flex-shrink: 0; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); transition: all 0.15s; }
#v-g.vg-studio-on .vg-prev-switch:hover { background: rgba(255,255,255,0.1); color: var(--t1); }
#v-g.vg-studio-on .vg-prev-switch .vg-prev-icon { font-size: 13px; line-height: 1; }
#v-g.vg-studio-on .vg-prev-switch .vg-prev-label { font-size: 12px; }
#v-g.vg-studio-on .vg-prev-switch .vg-prev-mode-label { font-size: 11px; padding: 1px 7px; border-radius: 999px; background: rgba(255,255,255,0.08); color: var(--t2); }
#v-g.vg-studio-on .vg-prev-switch.is-auto .vg-prev-mode-label { background: rgba(103,249,255,0.16); color: #67F9FF; }
#v-g.vg-studio-on .vg-prev-switch.is-on .vg-prev-mode-label { background: rgba(0,218,90,0.18); color: var(--brand-green); }
#v-g.vg-studio-on .vg-prev-switch.is-off .vg-prev-mode-label { background: rgba(255,255,255,0.06); color: var(--t3); }
#v-g.vg-studio-on .vg-prev-switch.is-locked { cursor: not-allowed; opacity: 0.5; pointer-events: none; }
#v-g.vg-studio-on .vg-prev-switch.is-locked .vg-prev-mode-label { background: rgba(255,255,255,0.06); color: var(--t3); }
/* 批量生成本集弹窗：延续三态单选 */
.vgbc-prev-opt { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; background: var(--bg0); border: 1px solid var(--bd); border-radius: 8px; cursor: pointer; transition: border-color 0.15s, background 0.15s; }
.vgbc-prev-opt:hover { border-color: rgba(255,255,255,0.22); }
.vgbc-prev-opt.on { border-color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.06); }
.vgbc-prev-radio { flex-shrink: 0; width: 16px; height: 16px; border-radius: 50%; border: 1.5px solid var(--t3); margin-top: 2px; position: relative; transition: border-color 0.15s; }
.vgbc-prev-radio.on { border-color: var(--brand-green, #00DA5A); }
.vgbc-prev-radio.on::after { content: ""; position: absolute; top: 3px; left: 3px; width: 7px; height: 7px; border-radius: 50%; background: var(--brand-green, #00DA5A); }
.vgbc-prev-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.vgbc-prev-label { font-size: 13px; font-weight: 600; color: var(--t1); }
.vgbc-prev-desc { font-size: 11px; color: var(--t3); line-height: 1.5; }
.vg-prev-menu { position: fixed; z-index: 220; min-width: 220px; padding: 6px; background: var(--bg2); border: 1px solid var(--bd); border-radius: 10px; box-shadow: 0 14px 36px rgba(0,0,0,0.55); display: none; box-sizing: border-box; }
.vg-prev-opt { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; width: 100%; padding: 8px 10px; border: none; background: transparent; color: var(--t2); cursor: pointer; border-radius: 6px; text-align: left; }
.vg-prev-opt:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
.vg-prev-opt.on { background: rgba(255,255,255,0.1); }
.vg-prev-opt-label { font-size: 13px; font-weight: 500; }
.vg-prev-opt-desc { font-size: 11px; color: var(--t3); }
/* 视频设置选单（折叠态按钮 + popover） */
#v-g.vg-studio-on .vg-video-params { height: 30px; padding: 0 10px; font-size: 12px; border-radius: 8px; border: 1px solid var(--bd); background: rgba(20,22,28,0.92); color: var(--t2); cursor: pointer; display: inline-flex; align-items: center; gap: 4px; backdrop-filter: blur(4px); }
#v-g.vg-studio-on .vg-video-params:hover { background: rgba(255,255,255,0.1); color: var(--t1); }
#v-g.vg-studio-on .vg-video-params.on { color: var(--t1); border-color: rgba(255,255,255,0.28); background: rgba(20,22,28,0.96); }
.vg-video-params-popover { position: fixed; z-index: 220; width: 260px; padding: 14px; background: var(--bg2); border: 1px solid var(--bd); border-radius: 10px; box-shadow: 0 14px 36px rgba(0,0,0,0.5); display: none; box-sizing: border-box; }
.vg-vp-row { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.vg-vp-row:last-child { margin-bottom: 0; }
.vg-vp-row > label:first-child { width: 72px; flex-shrink: 0; font-size: 12px; color: var(--t3); font-weight: 600; }
.vg-vp-sec { display: flex; gap: 6px; flex: 1; }
.vg-vp-opt { flex: 1; padding: 6px 0; border-radius: 6px; border: 1px solid var(--bd); background: var(--bg1); color: var(--t2); font-size: 12px; cursor: pointer; text-align: center; transition: all 0.12s; }
.vg-vp-opt:hover { border-color: rgba(255,255,255,0.22); }
.vg-vp-opt.on { background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.4); color: var(--t1); }
.vg-vp-switch { display: inline-flex; align-items: center; cursor: pointer; }
.vg-vp-switch input { display: none; }
.vg-vp-switch .vg-vp-track { width: 34px; height: 18px; border-radius: 10px; background: rgba(255,255,255,0.18); position: relative; transition: background 0.2s; }
.vg-vp-switch .vg-vp-track::after { content: ''; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; transition: transform 0.2s; }
.vg-vp-switch input:checked + .vg-vp-track { background: var(--brand-green); }
.vg-vp-switch input:checked + .vg-vp-track::after { transform: translateX(16px); }
/* 清理：隐藏顶部工具栏（功能下沉到视频区/左栏）+ 返回顶部按钮 */
#v-g .sb-top-actions { display: none !important; }
#v-g.vg-studio-on .hd { display: none !important; }   /* studio 隐藏整个 .hd 容器（不只 .sb-top-actions）*/
/* studio 台词高亮：wrap 撑满 + grid-row 填满（文本区填到 actions） */
#v-g.vg-studio-on .vg-edit-col .prompt-hl-wrap { border: none; border-radius: 0; background: transparent; overflow: hidden; display: grid; flex: 1 1 auto; min-height: 0; grid-template-rows: 1fr; align-self: stretch; }
#v-g.vg-studio-on .vg-edit-col .prompt-hl-wrap .sb-prompt-ta { background: transparent !important; border: none !important; border-radius: 0; min-height: 0 !important; height: 100% !important; }
#v-g #sb-back-top { display: none !important; }
/* SEG 标题行信息提示（右侧） */
/* SEG 标题行右侧提示：直接文字（非圆点 popover），muted + 溢出省略 */
#v-g.vg-studio-on .vg-seg-tip { font-size: 11px; font-weight: 400; color: var(--t3); max-width: 45%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-flex; align-items: center; }
#v-g.vg-studio-on .vg-seg-tip b { color: var(--brand-green, #00DA5A); font-weight: 600; }

.sb-layout {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  grid-template-rows: auto 1fr;
  gap: 12px 14px;
  align-items: stretch;
  min-height: calc(100vh - 60px);
}
.sb-col-main {
  align-self: start;
}

/* 剧集列：横跨顶部全宽 */
.sb-col-ep {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px 16px;
  border: 1px solid var(--bd, var(--bd));
  border-radius: 8px;
  background: var(--bg1);
  box-shadow: var(--shadow-soft);
}
.sb-col-ep > .sb-col-title {
  flex-shrink: 0;
  white-space: nowrap;
  font-size: 13px;
  font-weight: 600;
  color: var(--t2);
  padding-bottom: 6px;
  border-bottom: 1px solid var(--bd, #eee);
}

/* 横向剧集列表：多行换行 */
.sb-ep-list {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  overflow: visible;
  padding-bottom: 4px;
  scrollbar-width: thin;
  scrollbar-color: rgba(0,0,0,.1) transparent;
}
.sb-ep-list::-webkit-scrollbar { height: 3px; }
.sb-ep-list::-webkit-scrollbar-thumb { background: rgba(0,0,0,.1); border-radius: 3px; }

/* 紧凑剧集卡片 */
.sb-ep-item-row {
  flex-shrink: 0;
  width: auto;
  min-width: unset;
}
/* 隐藏生成按钮（防误操作） */
.sb-ep-generate-btn { display: none !important; }

.sb-ep-item {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  padding: 6px 6px 5px !important;
  text-align: center;
  width: 96px;
  min-width: 96px;
  max-width: 96px;
  border-radius: 6px;
  font-size: 12px !important;
  line-height: 1.3 !important;
  border: 1px solid var(--bd, var(--bd)) !important;
  background: var(--bg1, #fff) !important;
  transition: all 0.15s;
  text-decoration: none !important;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.sb-ep-item:hover {
  border-color: rgba(0, 218, 90, 0.4) !important;
  background: rgba(0, 218, 90, 0.04) !important;
  box-shadow: 0 2px 6px rgba(0, 218, 90, 0.08);
}
.sb-ep-item.on {
  background: rgba(0,218,90,0.10) !important;
  color: #fff;
  border-color: var(--brand-green, #00DA5A) !important;
  box-shadow: 0 0 0 1px rgba(0,218,90,0.55), 0 2px 10px rgba(0,218,90,0.18) !important;
}
.sb-ep-mainline {
  justify-content: center !important;
  gap: 4px !important;
}
.sb-ep-title {
  font-size: 12px !important;
  font-weight: 600 !important;
}
.sb-ep-count { display: none !important; }
.sb-ep-subline {
  display: flex !important;
  margin-top: 1px !important;
  justify-content: center !important;
  gap: 3px !important;
}
.sb-ep-status-badge {
  font-size: 9px !important;
  padding: 0px 4px !important;
  line-height: 1.2 !important;
  border-radius: 3px !important;
}
.sb-ep-progress-track { display: none !important; }
.sb-ep-progress-text {
  display: inline !important;
  font-size: 10px !important;
  color: var(--t3, #aaa) !important;
}

/* 选中集卡片：绿色背景下的子元素改为白色，确保可读 */
.sb-ep-item.on .sb-ep-title { color: #fff !important; }
.sb-ep-item.on .sb-ep-count { color: rgba(255,255,255,0.08) !important; }
.sb-ep-item.on .sb-ep-progress-text { color: #fff !important; }
/* 选中态不再覆盖状态徽标色：已完成/进行中/未开始各自保持绿/青/灰，选中仅靠绿环体现 */
.sb-ep-item.on .sb-ep-running-spinner {
  border-color: rgba(255,255,255,0.3) !important;
  border-top-color: #fff !important;
}

/* 分镜侧栏：sticky 跟随滚动 */
.sb-col-shots {
  position: sticky;
  top: 72px;
  max-height: calc(100vh - 80px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--bd, var(--bd));
  border-radius: 8px;
  background: var(--bg1);
  box-shadow: var(--shadow-soft);
  padding: 10px 8px;
}
/* 左栏头部：集数（主）+ 分镜片段（次）两级结构 */
.sb-shots-header {
  flex-shrink: 0;
  padding: 4px 4px 10px;
  margin-bottom: 8px;
  border-bottom: 1px solid var(--bd, #eee);
}
.sb-shots-eyebrow {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--t3, #999);
  text-transform: uppercase;
  margin-bottom: 5px;
}
.sb-ep-select {
  display: block;
  width: 100%;
  box-sizing: border-box;
  padding: 7px 10px;
  border: 1px solid var(--bd, var(--bd));
  border-radius: 6px;
  background: var(--bg1, #fff);
  color: var(--t1, var(--t1));
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  outline: none;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.sb-ep-select:hover { border-color: var(--brand-green, var(--acc)); }
.sb-ep-select:focus { border-color: var(--brand-green, var(--acc)); box-shadow: 0 0 0 3px rgba(0,218,90,0.12); }
.sb-shots-sub {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-top: 10px;
  font-size: 11px;
  font-weight: 600;
  color: var(--t3, #999);
  letter-spacing: 0.02em;
}
.sb-shots-progress {
  font-family: ui-monospace, monospace;
  font-size: 11px;
  font-weight: 700;
  color: var(--brand-green, var(--acc));
  background: rgba(0, 218, 90, 0.1);
  padding: 1px 6px;
  border-radius: 3px;
}
/* 侧栏内 shot 紧凑排列 */
.sb-col-shots .sb-shot-item {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 6px;
  padding: 6px 10px !important;
  min-height: 32px;
  font-size: 13px !important;
  line-height: 1.4 !important;
  border-radius: 5px !important;
  border: 1px solid transparent !important;
  white-space: nowrap !important;
  transition: all 0.15s;
}
.sb-col-shots .sb-shot-item:hover {
  background: rgba(0, 0, 0, 0.03) !important;
  border-color: var(--bd) !important;
}
.sb-col-shots .sb-shot-item.on {
  background: rgba(0, 218, 90, 0.08) !important;
  border-color: var(--brand-green, var(--acc)) !important;
  border-left: 3px solid var(--brand-green, var(--acc)) !important;
}
.sb-col-shots .sb-shot-seg {
  display: inline !important;
  font-size: 12px;
  font-weight: 600;
  font-family: ui-monospace, monospace;
  white-space: nowrap;
  flex-shrink: 0;
}
.sb-col-shots .sb-shot-time {
  display: flex !important;
  flex-direction: column !important;
  gap: 0;
  margin-top: 0;
  line-height: 1.3;
  flex: 1;
  min-width: 0;
}
.sb-col-shots .sb-shot-dur {
  font-size: 11px;
  color: var(--t2, #555);
  font-weight: 600;
}
.sb-col-shots .sb-shot-range {
  font-size: 10px;
  color: var(--t3, #aaa);
}
.sb-col-shots .sb-col-title {
  display: none;
}
.sb-ep-tag {
  display: inline-block;
  font-size: 12px;
  font-weight: 500;
  color: var(--brand-green, var(--acc));
  background: rgba(0, 218, 90, 0.08);
  padding: 1px 6px;
  border-radius: 3px;
  margin-left: 6px;
  vertical-align: middle;
}
.sb-shot-list::-webkit-scrollbar { width: 3px; }
.sb-shot-list::-webkit-scrollbar-thumb { background: rgba(0,0,0,.08); border-radius: 3px; }

/* === 分镜管理：插入按钮 — 默认隐藏，hover 才显示 === */
.sb-shot-insert-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 8px;
  border: none;
  background: transparent;
  cursor: pointer;
  flex-shrink: 0;
  margin: 0;
  padding: 0;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.2s, height 0.15s;
}
.sb-shot-insert-btn:hover {
  opacity: 1;
  height: 20px;
}
.sb-shot-insert-btn::before,
.sb-shot-insert-btn::after {
  content: '';
  flex: 1;
  height: 0;
  border-top: 1px dashed var(--bd, #ddd);
  margin: 0 4px;
  transition: border-color 0.2s;
}
.sb-insert-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1px solid var(--bd, #ddd);
  color: var(--t4, #bbb);
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
  transition: all 0.2s;
  flex-shrink: 0;
}
.sb-insert-label {
  font-size: 11px;
  color: var(--brand-green, var(--acc));
  font-weight: 500;
  max-width: 0;
  overflow: hidden;
  opacity: 0;
  white-space: nowrap;
  transition: all 0.25s;
}
.sb-shot-insert-btn:hover::before,
.sb-shot-insert-btn:hover::after {
  border-top-color: var(--brand-green, var(--acc));
}
.sb-shot-insert-btn:hover .sb-insert-circle {
  border-color: var(--brand-green, var(--acc));
  color: var(--brand-green, var(--acc));
  background: rgba(0, 218, 90, 0.06);
  transform: scale(1.1);
}
.sb-shot-insert-btn:hover .sb-insert-label {
  max-width: 60px;
  opacity: 1;
}
.sb-shot-insert-btn:active .sb-insert-circle {
  transform: scale(0.95);
}

/* === 分镜管理：状态圆点 === */
.sb-shot-status {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--t4, #ccc);
  transition: background 0.3s, box-shadow 0.3s;
}
.sb-shot-status[data-status="completed"] {
  background: var(--brand-green, var(--acc));
  box-shadow: 0 0 4px rgba(0, 218, 90, 0.3);
}
.sb-shot-status[data-status="generating"] {
  background: #f5a623;
  box-shadow: 0 0 4px rgba(245, 166, 35, 0.3);
  animation: sb-status-pulse 1.5s ease-in-out infinite;
}
.sb-shot-status[data-status="pending"] {
  background: var(--t4, #ccc);
}
@keyframes sb-status-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

/* === 分镜管理：拖拽手柄（最左） === */
.sb-shot-grip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 12px;
  flex-shrink: 0;
  color: var(--t4, #c2c2c2);
  cursor: grab;
  opacity: 0.4;
  transition: opacity 0.15s, color 0.15s;
  margin-right: 2px;
}
.sb-shot-item:hover .sb-shot-grip { opacity: 0.85; color: var(--t3, #999); }
.sb-shot-grip:active { cursor: grabbing; }
.sb-shot-item.sb-shot-dragging { opacity: 0.3; -webkit-user-drag: none; }
/* 拖拽进行中：禁止选区/链接拖拽，减少浏览器触发"拆分视图/新标签"的几率 */
.sb-shot-list:has(.sb-shot-dragging) {
  user-select: none;
  -webkit-user-select: none;
}
.sb-shot-list:has(.sb-shot-dragging) .sb-shot-item {
  -webkit-user-drag: none;
}

/* 拖拽实时预览占位卡：绿色虚线边框，显示分镜将落在何处 */
.sb-drag-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 12px;
  margin: 2px 0;
  border: 2px dashed var(--brand-green, var(--acc));
  border-radius: 6px;
  background: rgba(0, 218, 90, 0.08);
  color: var(--brand-green, var(--acc));
  font-size: 11px;
  font-weight: 600;
  animation: sb-drag-ph-pulse 1.2s ease-in-out infinite;
}
.sb-drag-placeholder svg { flex-shrink: 0; }
@keyframes sb-drag-ph-pulse {
  0%, 100% { background: rgba(0, 218, 90, 0.08); }
  50% { background: rgba(0, 218, 90, 0.16); }
}

/* 转圈（最右）—— 仅 generating 时由 JS 置 display:inline-flex；默认蓝色环 */
.sb-shot-spin {
  display: none;
  align-items: center;
  justify-content: center;
  width: 13px;
  height: 13px;
  flex-shrink: 0;
  margin-left: 4px;
  border: 2px solid rgba(59, 130, 246, 0.25);
  border-top-color: #3b82f6;
  border-radius: 50%;
  animation: sb-spin 0.7s linear infinite;
}
@keyframes sb-spin {
  to { transform: rotate(360deg); }
}

/* === 分镜管理：垃圾箱删除按钮 === */
.sb-shot-delete-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border: none;
  background: transparent;
  color: var(--t4, #bbb);
  font-size: 13px;
  cursor: pointer;
  border-radius: 4px;
  opacity: 0;
  transition: all 0.15s;
  flex-shrink: 0;
  margin-left: auto;
  padding: 0;
  line-height: 1;
}
.sb-shot-item:hover .sb-shot-delete-btn {
  opacity: 0.55;
}
.sb-shot-delete-btn:hover {
  opacity: 1 !important;
  color: #e05b5b !important;
  background: rgba(224, 91, 91, 0.08);
}

/* === 分镜管理：删除确认弹窗 === */
.sb-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.35);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s, visibility 0.2s;
}
.sb-modal-overlay.sb-modal--visible {
  opacity: 1;
  visibility: visible;
}
.sb-modal-box {
  background: var(--bg1, #fff);
  border-radius: 10px;
  padding: 28px 32px 20px;
  box-shadow: 0 12px 40px rgba(0,0,0,0.15);
  max-width: 340px;
  width: 90%;
  text-align: center;
  transform: scale(0.92);
  transition: transform 0.2s;
}
.sb-modal--visible .sb-modal-box {
  transform: scale(1);
}
.sb-modal-icon-trash {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(224, 91, 91, 0.08);
  margin: 0 auto 14px;
}
.sb-modal-icon-trash::after {
  content: '🗑';
  font-size: 20px;
  line-height: 1;
}
.sb-modal-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--t1, #333);
  margin-bottom: 6px;
}
.sb-modal-desc {
  font-size: 12px;
  color: var(--t3, #888);
  margin-bottom: 22px;
  line-height: 1.5;
}
.sb-modal-actions {
  display: flex;
  gap: 10px;
  justify-content: center;
}
.sb-modal-actions button {
  padding: 7px 22px;
  border-radius: 6px;
  font-size: 13px;
  cursor: pointer;
  border: 1px solid var(--bd, #ddd);
  transition: all 0.15s;
  font-weight: 500;
}
.sb-modal-cancel {
  background: var(--bg1, #fff);
  color: var(--t2, #666);
}
.sb-modal-cancel:hover {
  background: var(--bg2, #f5f5f5);
}
.sb-modal-confirm {
  background: #e05b5b;
  color: #fff;
  border-color: #e05b5b;
}
.sb-modal-confirm:hover {
  background: #c94444;
}

/* === 分镜管理：section 动画 === */
.sb-shot-section--inserting {
  animation: sbShotFadeIn 0.3s ease;
}
@keyframes sbShotFadeIn {
  from {
    opacity: 0;
    transform: translateY(-12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.sb-shot-section--removing {
  animation: sbShotFadeOut 0.25s ease forwards;
  pointer-events: none;
}
@keyframes sbShotFadeOut {
  to {
    opacity: 0;
    transform: scale(0.97);
    max-height: 0;
    padding-top: 0;
    padding-bottom: 0;
    margin-bottom: 0;
    overflow: hidden;
    border-width: 0;
  }
}

/* 滚动对齐：为 sticky 顶栏留出空间 */
.sb-shot-section {
  scroll-margin-top: 80px;
}

/* 响应式：窄屏回退纵向 */
@media (max-width: 1100px) {
  .sb-layout {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .sb-col-ep {
    grid-column: 1;
    flex-direction: column;
  }
  .sb-ep-list {
    flex-direction: column !important;
    overflow-x: visible;
  }
  .sb-ep-item-row { width: auto; }
  .sb-ep-generate-btn { display: block !important; }
  .sb-ep-count { display: inline; }
  .sb-ep-progress-track { display: block; }
  .sb-col-shots {
    position: static;
    max-height: none;
    overflow-y: visible;
    padding-top: 0;
  }
}

.sb-all-shots {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.sb-shot-section {
  border: 1px solid var(--bd);
  border-left: 4px solid var(--brand-green);
  border-radius: 8px;
  padding: 20px;
  background: var(--bg1);
  box-shadow: var(--shadow-soft);
  position: relative;
  transition: box-shadow 0.2s ease, border-left-color 0.2s ease;
  min-height: 580px !important;
}

.sb-shot-section:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
  border-left-color: var(--brand-green-dark);
}

.sb-shot-section--focus {
  border-left-width: 4px;
  border-left-color: var(--brand-orange);
  box-shadow:
    0 0 0 3px rgba(255, 138, 0, 0.1),
    0 4px 16px rgba(0, 0, 0, 0.08);
  background: linear-gradient(90deg, rgba(255, 138, 0, 0.02) 0%, var(--bg1) 100%);
}

.sb-col-gen--shot {
  min-width: 0;
}

.sb-col-gen--shot .sb-preview-video {
  max-height: 200px;
}

/* 剧集改编：左栏竖排集数 + 右栏剧情（勿用 .sb-layout 四列网格） */
#v-adapt .sb-adapt-layout {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 20px;
  align-items: start;
}

#v-adapt .sb-adapt-layout > aside.sb-col-ep {
  width: 100%;
  min-width: 0;
}

#v-adapt .sb-adapt-layout .sb-ep-list {
  flex-direction: column;
  flex-wrap: nowrap;
  gap: 6px;
  align-items: stretch;
}

#v-adapt .sb-adapt-layout .sb-ep-item {
  flex: none;
  white-space: normal;
  width: 100%;
  box-sizing: border-box;
}

#v-adapt .sb-adapt-layout > main.sb-col-main {
  width: 100%;
  min-width: 0;
}

@media (max-width: 900px) {
  #v-adapt .sb-adapt-layout {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}

/* 剧集改编 Tab：本集剧情输入框 — 全宽、加高 */
#v-adapt .episode-sb-head textarea.ta.compact {
  min-height: 300px;
  font-size: 15px;
  line-height: 1.68;
}

#v-adapt .episode-sb-head {
  margin-bottom: 12px;
  padding-bottom: 0;
  border-bottom: none;
}

#v-adapt .adapt-step-block {
  margin-top: 12px;
}

#v-adapt .adapt-step-hint {
  margin: 6px 0 0;
  font-size: 12px;
  line-height: 1.55;
  color: var(--t2);
  max-width: 52em;
}

/* 剧集改编 · 分镜总览（自资产库迁入） */
.adapt-sb-overview {
  margin-top: 28px;
  padding: 20px;
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-radius: 8px;
  box-shadow: var(--shadow-soft);
}

.adapt-sb-overview-title {
  margin: 0;
  padding-left: 0;
  border-left: none;
  font-size: 15px;
  font-weight: 600;
  color: var(--t1);
  line-height: 1.2;
}

#v-adapt .adapt-sb-overview .ast-sb-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin-bottom: 16px;
}

.sb-col-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--t2);
  margin-bottom: 8px;
}

.sb-muted {
  color: var(--t2);
  font-size: 13px;
  line-height: 1.6;
  margin: 0;
}

.sb-ep-list,
.sb-shot-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.sb-shot-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(0,0,0,.08) transparent;
}

.sb-ep-list {
  gap: 10px;
}

.sb-ep-item-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  align-items: center;
}

.sb-ep-item,
.sb-shot-item {
  display: block;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid var(--bd);
  background: var(--bg2);
  color: var(--t1);
  text-decoration: none;
  font-size: 13px;
  line-height: 1.35;
  transition: background 0.12s, border-color 0.12s;
}

.sb-ep-item {
  padding: 10px 10px 8px;
}

.sb-ep-mainline {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

.sb-ep-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--t1);
}

.sb-ep-count {
  font-size: 12px;
  color: var(--t3);
}

.sb-ep-subline {
  margin-top: 6px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.sb-ep-progress-text {
  font-size: 12px;
  color: var(--t2);
  font-weight: 600;
}

.sb-ep-status-badge {
  font-size: 11px;
  line-height: 1;
  padding: 4px 8px;
  border-radius: 999px;
  border: 1px solid rgba(120, 130, 150, 0.28);
  color: #5c677d;
  background: rgba(120, 130, 150, 0.1);
}

.sb-ep-status-badge.is-running {
  border-color: rgba(37, 99, 235, 0.35);
  color: #1d4ed8;
  background: rgba(37, 99, 235, 0.1);
}

.sb-ep-status-badge.is-completed {
  border-color: rgba(0, 218, 90, 0.35);
  color: #0a8f20;
  background: rgba(0, 218, 90, 0.12);
}

.sb-ep-status-badge.is-partial_failed,
.sb-ep-status-badge.is-failed {
  border-color: rgba(220, 38, 38, 0.35);
  color: #b91c1c;
  background: rgba(220, 38, 38, 0.1);
}

.sb-ep-progress-track {
  margin-top: 7px;
  display: block;
  width: 100%;
  height: 3px;
  border-radius: 999px;
  background: rgba(120, 130, 150, 0.2);
  overflow: hidden;
}

.sb-ep-progress-fill {
  display: block;
  height: 100%;
  width: 0%;
  border-radius: inherit;
  background: linear-gradient(90deg, #22c55e 0%, #16a34a 100%);
  transition: width 0.2s ease;
}

.sb-ep-running-spinner {
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 2px solid rgba(103, 249, 255, 0.22);
  border-top-color: #67F9FF;
  border-radius: 50%;
  flex-shrink: 0;
  animation: global-gen-spin 0.75s linear infinite;
}

.sb-ep-running-spinner[hidden] {
  display: none;
}

.sb-ep-item.is-ep-running .sb-ep-progress-fill {
  background: linear-gradient(90deg, #3b82f6 0%, #2563eb 100%);
}

.sb-ep-status-badge[hidden] {
  display: none;
}

.sb-ep-generate-btn {
  min-width: 64px;
  padding: 8px 12px;
  border-radius: 999px;
  font-size: 12px;
}

.sb-ep-item:hover,
.sb-shot-item:hover {
  border-color: var(--t3);
}

.sb-ep-item.on {
  background: rgba(0, 218, 90, 0.08);
  border-color: var(--brand-green, var(--acc));
}

.sb-shot-item.is-running {
  background: rgba(37, 99, 235, 0.1);
  border-color: rgba(37, 99, 235, 0.42);
}

/* 注：原 SEG ::after 转圈已移除，避免与右侧 .sb-shot-spin 重复 */

.sb-shot-seg {
  display: block;
  font-weight: 600;
  font-family: ui-monospace, monospace;
  font-size: 12px;
}

.sb-shot-time {
  display: block;
  font-size: 11px;
  color: var(--t3);
  margin-top: 2px;
}

.sb-seg-head {
  margin-bottom: 12px;
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}

.sb-seg-id {
  font-size: 18px;
  font-weight: 700;
  font-family: ui-monospace, monospace;
  color: var(--timeline-blue);
  text-shadow: 0 0 10px rgba(91, 156, 255, 0.3);
  letter-spacing: 0.05em;
}

.sb-seg-meta {
  font-size: 13px;
  color: var(--t2);
  margin-top: 0;
  display: inline-flex;
  align-items: baseline;
  gap: 0;
}

.sb-dot {
  margin: 0 6px;
}

.sb-tag-row {
  display: none;   /* 标签信息已由参考图列承载，隐藏避免冗余 */
}

.sb-chip {
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(91, 156, 255, 0.12);
  border: 1px solid rgba(91, 156, 255, 0.35);
  color: var(--timeline-blue);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  transition: all 0.2s ease;
}

.sb-chip:hover {
  background: rgba(91, 156, 255, 0.2);
  border-color: rgba(91, 156, 255, 0.5);
  box-shadow: 0 0 8px rgba(91, 156, 255, 0.3);
}

.sb-episode-fold summary.sb-sum {
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
  color: var(--t2);
}

.sb-editor-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 200px;
  gap: 16px;
  align-items: start;
}

.sb-editor-split--with-gen {
  grid-template-columns: minmax(0, 1fr) 180px 200px;
  gap: 14px;
}

@media (max-width: 1100px) {
  .sb-editor-split--with-gen {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 900px) {
  .sb-editor-split {
    grid-template-columns: 1fr;
  }
}

.sb-ref-strip {
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: 60vh;
  overflow-y: auto;
  padding-bottom: 4px;
}

.sb-ref-cell {
  border: 1px solid var(--bd);
  border-radius: 8px;
  overflow: hidden;
  background: var(--bg1);
  position: relative;
  flex-shrink: 1;
  min-height: 50px;
}

.sb-ref-cell img,
.sb-ref-cell video {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 150px;
  min-height: 40px;
  object-fit: cover;
  background: var(--bg2, #f5f5f5);
  transition: transform 0.2s ease;
}

.sb-ref-cell img {
  cursor: zoom-in;
}

.sb-ref-cell:hover img,
.sb-ref-cell:hover video {
  transform: scale(1.05);
}

.sb-ref-cell {
  position: relative;
  overflow: hidden;
}

/* 参考素材类型角标 */
.sb-ref-cell::after {
  content: attr(data-ref-type);
  position: absolute;
  top: 6px;
  left: 6px;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: rgba(0, 0, 0, 0.7);
  color: white;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.sb-ref-cell:hover::after {
  opacity: 1;
}

/* 视频类型的参考素材样式 */
.sb-ref-cell[data-type="video"] {
  border-color: var(--video-orange);
  background: rgba(255, 140, 66, 0.05);
  box-shadow: 0 0 0 1px rgba(255, 140, 66, 0.2);
}

.sb-ref-cell[data-type="video"]::after {
  content: '▶ VIDEO';
  background: linear-gradient(135deg, var(--video-orange), #ff6b35);
}

.sb-ref-cell[data-type="image"]::after {
  content: '🖼 IMAGE';
  background: linear-gradient(135deg, var(--scene-cyan), #06b6d4);
}

/* 参考素材名称：叠加在缩略图底部 */
.sb-ref-cap {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 4px 8px;
  font-size: 10px;
  color: #fff;
  background: linear-gradient(transparent, rgba(0,0,0,0.7));
  display: flex;
  align-items: flex-end;
  gap: 4px;
  pointer-events: none;
  z-index: 1;
  word-break: break-all;
}
.sb-ref-cap-name {
  color: #fff;
  font-weight: 500;
  line-height: 1.2;
  white-space: normal;
}
.sb-ref-type-badge { display: none; }
.sb-ref-cap-text { flex: 1; min-width: 0; }

/* 缩略图操作按钮：替换 + 移除（右上角，始终可见，悬停增强） */
.sb-ref-replace-btn,
.sb-ref-remove-btn {
  position: absolute;
  top: 5px;
  z-index: 3;
  width: 26px;
  height: 26px;
  border: none;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.82);
  color: #fff;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.9;
  transition: opacity 0.15s ease, background 0.15s ease, transform 0.15s ease;
  backdrop-filter: blur(4px);
}
.sb-ref-remove-btn { right: 5px; font-size: 13px; line-height: 1; }
.sb-ref-replace-btn { right: 37px; font-size: 14px; line-height: 1; }
.sb-ref-cell:hover .sb-ref-replace-btn,
.sb-ref-cell:hover .sb-ref-remove-btn { opacity: 1; }
.sb-ref-replace-btn:hover { background: var(--brand-green, var(--acc)); transform: scale(1.08); }
.sb-ref-remove-btn:hover { background: #e05b5b; transform: scale(1.08); }
.sb-ref-replace-btn svg,
.sb-ref-remove-btn svg { width: 14px; height: 14px; }

.sb-ref-type-badge.sb-ref-type-video {
  background: #8b5cf6;
}

.sb-ref-add {
  margin-top: 12px;
}

.sb-ref-add-wrap {
  margin-top: 8px;
}

.sb-shot-meta-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}

.sb-shot-duration-lbl {
  margin: 0;
  white-space: nowrap;
}

.sb-shot-duration-inp {
  width: 130px;
  max-width: 100%;
}

.sb-shot-prev-lbl {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--t2);
  user-select: none;
  white-space: nowrap;
  flex-shrink: 0;
}

.sb-shot-prev-cb {
  accent-color: var(--brand-green);
}

/* 首个分镜的"延续上一镜"锁死态 */
.sb-shot-prev-lbl.is-locked {
  opacity: 0.45;
  cursor: not-allowed;
  position: relative;
}
.sb-shot-prev-lbl.is-locked::after {
  content: '🔒';
  font-size: 11px;
  margin-left: 2px;
}
.sb-shot-prev-lbl.is-locked .sb-shot-prev-cb {
  cursor: not-allowed;
}

.sb-preview-placeholder {
  aspect-ratio: 16 / 10;
  border: 2px dashed var(--bd);
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  color: var(--t3);
  font-size: 14px;
  font-weight: 500;
  background:
    linear-gradient(135deg, var(--bg2) 0%, #ffffff 100%);
  position: relative;
  transition: all 0.3s ease;
}

.sb-preview-placeholder:hover {
  background: linear-gradient(135deg, #ffffff 0%, #f6fff6 100%);
  border-color: var(--brand-green);
  color: var(--brand-green);
}

/* 卡片风格播放图标 */
.sb-preview-placeholder::before {
  content: '▶';
  font-size: 48px;
  color: var(--brand-green);
  opacity: 0.2;
  position: absolute;
}

.sb-preview-placeholder:hover::before {
  opacity: 0.4;
  transform: scale(1.1);
}

.sb-preview-video {
  width: 100%;
  border-radius: 8px;
  border: 2px solid var(--bd);
  max-height: 200px;
  background: #000;
  box-shadow: var(--shadow-soft);
  position: relative;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
  overflow: hidden;
}

.sb-preview-video:hover {
  transform: scale(1.03);
  box-shadow: 0 8px 24px rgba(0, 218, 90, 0.2);
  border-color: var(--brand-green);
}

/* 播放器绿色进度条 */
.sb-preview-video::before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--brand-green), var(--brand-blue));
  opacity: 0.9;
  pointer-events: none;
}

/* 播放按钮遮罩 */
.sb-preview-video::after {
  content: '▶';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 60px;
  height: 60px;
  background: rgba(0, 218, 90, 0.85);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 24px;
  opacity: 0;
  transition: opacity 0.3s ease;
  padding-left: 4px;
  line-height: 60px;
  text-align: center;
}

.sb-preview-video:hover::after {
  opacity: 1;
}

.sb-gen-status {
  font-size: 12px;
  color: var(--t3);
  margin-bottom: 8px;
}

.sb-gen-status.ok {
  color: #6a9;
}

.sb-gen-status.is-running {
  color: #2563eb;
  font-weight: 600;
}

/* ── DEMO 视频占位海报帧 ────────────────────────────────────────── */
.sb-preview-frame {
  position: relative;
  aspect-ratio: 9 / 16;            /* 竖屏短剧窗口，固定比例 */
  max-height: 420px;               /* 限高，避免过长 */
  width: auto;
  margin-left: auto;
  margin-right: auto;
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid var(--bd);
  background: #000;                /* 黑底：非 9:16 内容留黑边 */
  cursor: pointer;
  transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.sb-preview-frame::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: var(--sb-poster, none);
  background-size: contain;        /* 海报 contain：保留比例，不足处黑色 */
  background-position: center;
  background-repeat: no-repeat;
  transition: transform 0.4s ease;
}
.sb-preview-frame::after {
  /* 底部渐变条 — 输出格传送带感 */
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--brand-green, var(--acc)) 0%, #2563eb 100%);
  opacity: 0.85;
}
.sb-preview-frame:hover {
  border-color: var(--brand-green, var(--acc));
  box-shadow: 0 4px 16px rgba(0, 218, 90, 0.18);
}
.sb-preview-frame:hover::before { transform: scale(1.04); }

/* 无海报时的兜底底纹 */
.sb-preview-frame--pending,
.sb-preview-frame--empty {
  background: #000;
  cursor: default;
}
.sb-preview-frame--pending::before,
.sb-preview-frame--empty::before { display: none; }

/* 角标：示例画面 */
.sb-preview-corner {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 3;
  font-size: 10px;
  font-weight: 600;
  color: #f5a623;
  background: rgba(245, 166, 35, 0.16);
  border: 1px solid rgba(245, 166, 35, 0.4);
  padding: 2px 7px;
  border-radius: 3px;
  letter-spacing: 0.5px;
  backdrop-filter: blur(4px);
}
/* DEMO 水印 */
.sb-preview-demo {
  position: absolute;
  bottom: 10px;
  right: 8px;
  z-index: 3;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 1.5px;
  color: rgba(255, 255, 255, 0.5);
  font-family: ui-monospace, monospace;
}
/* 居中播放钮 */
.sb-preview-play {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  z-index: 3;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--brand-green, var(--acc));
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
  transition: transform 0.2s, box-shadow 0.2s;
}
.sb-preview-frame:hover .sb-preview-play {
  transform: translate(-50%, -50%) scale(1.12);
  box-shadow: 0 6px 24px rgba(0, 218, 90, 0.5);
}
.sb-preview-play svg { margin-left: 2px; }

/* 生成中：扫描线 */
.sb-preview-frame--generating { cursor: default; }
.sb-preview-frame--generating::before { opacity: 0.55; filter: blur(0.5px); }
.sb-preview-scan {
  position: absolute;
  left: 0; right: 0;
  height: 40%;
  z-index: 2;
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(245, 166, 35, 0.08) 40%,
    rgba(245, 166, 35, 0.35) 50%,
    rgba(245, 166, 35, 0.08) 60%,
    transparent 100%
  );
  animation: sb-scan 1.8s linear infinite;
}
@keyframes sb-scan {
  0% { top: -40%; }
  100% { top: 100%; }
}
.sb-preview-genlabel {
  position: absolute;
  bottom: 10px;
  left: 8px;
  z-index: 3;
  font-size: 11px;
  font-weight: 600;
  color: #f5a623;
  background: rgba(26, 29, 36, 0.7);
  padding: 3px 8px;
  border-radius: 3px;
  backdrop-filter: blur(4px);
}
.sb-preview-frame--pending .sb-preview-genlabel {
  color: var(--t3);
  background: rgba(26, 29, 36, 0.5);
}

.sb-preview-stop-btn {
  position: absolute;
  bottom: 10px;
  right: 8px;
  z-index: 3;
  font-size: 11px;
  font-weight: 600;
  color: #fff;
  background: #e05b5b;
  border: none;
  border-radius: 4px;
  padding: 4px 10px;
  cursor: pointer;
  transition: background 0.15s;
}
.sb-preview-stop-btn:hover { background: #c94444; }

/* Lightbox */
.sb-demo-lightbox {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background: rgba(0, 0, 0, 0.82);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5vh 5vw;
  animation: sb-lb-fade 0.2s ease;
}
@keyframes sb-lb-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
.sb-demo-lightbox-inner {
  position: relative;
  max-width: 90vw;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.sb-demo-lightbox-inner img {
  max-width: 90vw;
  max-height: 80vh;
  border-radius: 8px;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
  object-fit: contain;
}
.sb-demo-lightbox-tag {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.6);
}
.sb-demo-lightbox-close {
  position: absolute;
  top: -14px;
  right: -14px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: none;
  background: var(--bg1);
  color: #333;
  font-size: 16px;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
.sb-demo-lightbox-close:hover { background: var(--brand-green, var(--acc)); color: #fff; }

.sb-shot-section--error {
  border-left-color: #e05b5b;
}

.sb-shot-error {
  margin-top: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid rgba(224, 91, 91, 0.4);
  background: rgba(224, 91, 91, 0.1);
  color: #b73b3b;
  font-size: 12px;
  line-height: 1.5;
}

.sb-shot-error.hidden {
  display: none;
}

.sb-shot-error strong {
  font-weight: 600;
}

.sb-gen-big {
  width: 100%;
  margin-top: 8px;
  padding: 12px 14px;
  font-weight: 600;
}
/* 视频生成列内的按钮：各占满一行（容器已有 flex-wrap:wrap 会自动换行），避免长文字溢出 */
.sb-col-gen--shot .sb-gen-big,
.sb-col-gen--shot button[onclick*="openShotHistoryModal"] {
  flex: 0 0 100%;
  width: 100%;
  margin: 0;
  padding: 10px 12px;
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.sb-col-gen--shot .sb-gen-big { margin-top: 8px; }
/* 全集生成进行中：禁用所有单镜头生成按钮 */
.ep-video-generating .sb-gen-big {
  pointer-events: none;
  opacity: 0.38;
  cursor: not-allowed;
  position: relative;
}
.ep-video-generating .sb-gen-big::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: transparent;
  cursor: not-allowed;
}

.sb-modal {
  width: 520px;
  max-width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-radius: 12px;
  padding: 20px 22px;
}

.sb-dl-list {
  margin: 0;
  padding-left: 18px;
  line-height: 1.8;
  font-size: 13px;
}

.sb-dl-list a {
  color: var(--t1);
}

.asset-card {
  border: 1px solid var(--bd);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 16px;
  background: var(--bg1);
  position: relative;
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
  box-shadow: var(--shadow-soft);
}

/* 鼠标悬停：仅轻微阴影，无位移、无左侧色条变化 */
.asset-card:hover {
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.28);
}

/* 中性化：取消资产彩色标识（左侧色条 + 圆点），统一中性边框 */
.asset-card { border-left: 1px solid var(--bd) !important; }
.asset-card-color-dot { display: none !important; }

/* 资产类型标签 */
.asset-card-type-badge {
  position: absolute;
  top: 14px;
  right: 16px;
  font-size: 11px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 12px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  opacity: 0.8;
}

/* 彩色圆点标识 */
.asset-card-color-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1);
}

/* 为不同资产ID生成不同颜色的类 */
.asset-card[data-asset-color="0"] { border-left-color: #ff6b6b; }
.asset-card[data-asset-color="0"] .asset-card-color-dot { background: #ff6b6b; }

.asset-card[data-asset-color="1"] { border-left-color: #4ecdc4; }
.asset-card[data-asset-color="1"] .asset-card-color-dot { background: #4ecdc4; }

.asset-card[data-asset-color="2"] { border-left-color: #45b7d1; }
.asset-card[data-asset-color="2"] .asset-card-color-dot { background: #45b7d1; }

.asset-card[data-asset-color="3"] { border-left-color: #f9ca24; }
.asset-card[data-asset-color="3"] .asset-card-color-dot { background: #f9ca24; }

.asset-card[data-asset-color="4"] { border-left-color: #6c5ce7; }
.asset-card[data-asset-color="4"] .asset-card-color-dot { background: #6c5ce7; }

.asset-card[data-asset-color="5"] { border-left-color: #a29bfe; }
.asset-card[data-asset-color="5"] .asset-card-color-dot { background: #a29bfe; }

.asset-card[data-asset-color="6"] { border-left-color: #fd79a8; }
.asset-card[data-asset-color="6"] .asset-card-color-dot { background: #fd79a8; }

.asset-card[data-asset-color="7"] { border-left-color: #fdcb6e; }
.asset-card[data-asset-color="7"] .asset-card-color-dot { background: #fdcb6e; }

.asset-card[data-asset-color="8"] { border-left-color: #00b894; }
.asset-card[data-asset-color="8"] .asset-card-color-dot { background: #00b894; }

.asset-card[data-asset-color="9"] { border-left-color: #e17055; }
.asset-card[data-asset-color="9"] .asset-card-color-dot { background: #e17055; }

.asset-card[data-asset-color="10"] { border-left-color: #74b9ff; }
.asset-card[data-asset-color="10"] .asset-card-color-dot { background: #74b9ff; }

.asset-card[data-asset-color="11"] { border-left-color: #a29bfe; }
.asset-card[data-asset-color="11"] .asset-card-color-dot { background: #a29bfe; }

.asset-card[data-asset-color="12"] { border-left-color: #fd79a8; }
.asset-card[data-asset-color="12"] .asset-card-color-dot { background: #fd79a8; }

.asset-card[data-asset-color="13"] { border-left-color: #ffeaa7; }
.asset-card[data-asset-color="13"] .asset-card-color-dot { background: #ffeaa7; }

.asset-card[data-asset-color="14"] { border-left-color: #55efc4; }
.asset-card[data-asset-color="14"] .asset-card-color-dot { background: #55efc4; }

.asset-card[data-asset-color="15"] { border-left-color: #81ecec; }
.asset-card[data-asset-color="15"] .asset-card-color-dot { background: #81ecec; }

/* 卡片风格 - 资产类型彩色区分 */
.asset-card[data-asset-type="characters"] {
  border-left-color: var(--brand-green);
}

.asset-card[data-asset-type="scenes"] {
  border-left-color: var(--brand-blue);
}

.asset-card[data-asset-type="props"] {
  border-left-color: var(--brand-orange);
}

.asset-card[data-asset-type="characters"] .asset-card-type-badge {
  background: rgba(0, 218, 90, 0.1);
  color: var(--brand-green);
  border: 1px solid rgba(0, 218, 90, 0.3);
  text-transform: uppercase;
  font-size: 11px;
  font-weight: 600;
}

.asset-card[data-asset-type="scenes"] .asset-card-type-badge {
  background: rgba(57, 197, 187, 0.1);
  color: var(--brand-blue);
  border: 1px solid rgba(57, 197, 187, 0.3);
  text-transform: uppercase;
  font-size: 11px;
  font-weight: 600;
}

.asset-card[data-asset-type="props"] .asset-card-type-badge {
  background: rgba(255, 138, 0, 0.1);
  color: var(--brand-orange);
  border: 1px solid rgba(255, 138, 0, 0.3);
  text-transform: uppercase;
  font-size: 11px;
  font-weight: 600;
}

.asset-card h4 {
  margin: 0 0 10px;
  font-size: 14px;
  font-weight: 600;
}

.asset-card .asset-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 16px;
  margin-bottom: 12px;
}

@media (max-width: 900px) {
  .asset-card .asset-grid {
    grid-template-columns: 1fr;
  }
}

.asset-card textarea.ta.compact {
  min-height: 72px;
}

.asset-card .asset-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

/* 资产卡片预览：16:9 比例，覆盖全局 .thumb 的 44px */
.asset-card .thumb {
  width: 176px;
  height: 99px;
  border-radius: 12px;
  object-fit: cover;
  box-sizing: border-box;
}

.asset-card img.thumb {
  cursor: zoom-in;
}

@media (max-width: 640px) {
  .asset-card .thumb {
    width: min(176px, 100%);
    height: auto;
    aspect-ratio: 16 / 9;
  }
}

/* === 资产详情态：完整复刻视频生成工作室布局 === */
.asset-detail-on .asset-card.ad-expanded { padding: 22px 24px; }
/* 上：固定信息 */
.ad-info { padding-bottom: 18px; border-bottom: 1px solid var(--bd); }
.ad-info > * + * { margin-top: 6px; }
.ad-info .asset-grid { margin-top: 12px; }
/* 下：生成区 */
.ad-gen { margin-top: 18px; }
.ad-gen-title { font-size: 14px; font-weight: 600; color: var(--t1); margin-bottom: 12px; }
/* 统一容器（一个背景，左右两列共用，中间竖线分隔）*/
.ad-split { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 0; align-items: stretch; background: var(--bg2); border: 1px solid var(--bd); border-radius: 12px; overflow: hidden; min-height: 380px; }
/* 左列：参考图条 + 提示词（整个左列一个背景，参考图与提示词共用同一区域，仅隐性分隔）*/
.ad-edit-col { display: flex; flex-direction: column; min-width: 0; min-height: 0; flex: 1 1 auto; overflow: hidden; border-right: 1px solid var(--bd); }
/* 参考图条：固定高度（加高），与提示词同背景，"引用参考"文字 + 横向缩略图（保持原比例）*/
.ad-ref-strip { display: flex; flex-direction: row; align-items: center; gap: 10px; padding: 10px 12px; flex: 0 0 auto; min-height: 72px; background: transparent; }
.ad-ref-label { flex: 0 0 auto; font-size: 12px; color: var(--t3); font-weight: 500; white-space: nowrap; }
.ad-ref-strip .asset-ref-preview { flex: 1 1 auto; min-width: 0; }
.ad-ref-strip .asset-ref-preview-title { display: none; }
.ad-ref-strip .asset-ref-preview-grid { flex-direction: row !important; flex-wrap: nowrap; gap: 8px; overflow-x: auto; overflow-y: hidden; align-items: center; }
.ad-ref-strip .asset-ref-preview-item img { width: auto !important; height: 56px !important; aspect-ratio: auto !important; border-radius: 6px; flex: 0 0 auto; }   /* 保持原比例，固定高度 */
.ad-ref-strip .asset-ref-preview-item .asset-ref-label { display: none; }
.ad-ref-strip .asset-ref-preview-placeholder { width: auto !important; height: auto !important; padding: 0 !important; min-height: 0 !important; display: flex; align-items: center; }
.ad-ref-strip .asset-ref-preview-placeholder-icon { display: none; }
.ad-ref-strip .asset-ref-preview-placeholder-text { font-size: 11px; color: var(--t3); }
/* 提示词块（撑满左列剩余，与参考图同背景）*/
.ad-prompt-block { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; padding: 0 12px 10px; }
.ad-prompt-block > label.lbl { flex: 0 0 auto; font-size: 12px; color: var(--t3); }
.ad-prompt-block > p { flex: 0 0 auto; font-size: 12px; color: var(--t2); line-height: 1.5; margin: 0 0 4px; }
/* 提示词组（对齐 .sb-prompt-group：带边框容器 + bg1 + 圆角；textarea 不可拖动+内部滚动+文字渐隐）*/
.ad-prompt-group { position: relative; display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; border: 1px solid var(--bd); border-radius: 8px; background: var(--bg1); overflow: visible; }   /* overflow:visible 让参考图添加下拉不被裁剪 */
.ad-prompt-group:focus-within { border-color: var(--brand-green, #00DA5A); }
.ad-prompt-group .prompt-wrap { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.ad-prompt-group .prompt-wrap > textarea.ta { flex: 1 1 auto !important; min-height: 0 !important; height: auto !important; resize: none !important; border: none !important; border-radius: 0; background: transparent; padding: 10px 12px 12px; color: var(--t1); overflow-y: auto;
  -webkit-mask-image: linear-gradient(to bottom, black 0%, black calc(100% - 24px), transparent 100%);
  mask-image: linear-gradient(to bottom, black 0%, black calc(100% - 24px), transparent 100%); }
/* 底部工具栏（.asset-ai-toolbar.ad-toolbar：优化/反推左对齐，其他按钮 .ad-toolbar-right 右对齐）*/
.ad-prompt-group .asset-ai-toolbar.ad-toolbar { display: flex; align-items: center; gap: 4px; padding: 6px 8px; border-top: 1px solid var(--bd); background: var(--bg1); flex: 0 0 auto; }
.ad-prompt-group .asset-ai-toolbar.ad-toolbar .asset-ai-btn { height: 30px; padding: 0 10px; font-size: 12px; border: none; background: transparent; color: var(--t3); border-radius: 6px; }
.ad-prompt-group .asset-ai-toolbar.ad-toolbar .asset-ai-btn:hover, .ad-prompt-group .asset-ai-toolbar.ad-toolbar .asset-ai-btn.active { background: rgba(255,255,255,0.08); color: var(--t1); }
.ad-prompt-group .asset-ai-toolbar.ad-toolbar .asset-ai-divider { display: none; }
.ad-toolbar-right { display: flex; align-items: center; gap: 6px; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; }
.ad-toolbar-right .params-display, .ad-toolbar-right .ad-tool-btn, .ad-toolbar-right .ad-gen-btn { height: 30px; font-size: 12px; white-space: nowrap; flex: 0 0 auto; border-radius: 6px; display: inline-flex; align-items: center; cursor: pointer; gap: 4px; }
.ad-toolbar-right .asset-ref-add-wrap { width: auto !important; margin: 0 !important; position: relative; flex: 0 0 auto; }
/* 详情态添加参考图下拉：向上弹（避免被统一容器 overflow:hidden 裁剪）+ 高层级 */
.ad-toolbar-right .asset-ref-add-dropdown { z-index: 200; }
.ad-toolbar-right .asset-ref-add-dropdown.open { top: auto; bottom: calc(100% + 4px); }
.ad-toolbar-right .ad-ref-add { width: auto; min-width: 0; height: 30px; padding: 0 12px; font-size: 12px; font-weight: 400; border: 1px solid var(--bd); background: var(--bg2); color: var(--t2); white-space: nowrap; }
.ad-toolbar-right .ad-ref-add:hover { border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.06); color: var(--t1); }
.ad-toolbar-right .params-display { padding: 0 10px; border: 1px solid var(--bd); background: var(--bg2); color: var(--t2); max-width: 260px; overflow: hidden; }
.ad-toolbar-right .params-display:hover { border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.06); }
.ad-toolbar-right .ad-tool-btn { padding: 0 10px; border: 1px solid var(--bd); background: var(--bg2); color: var(--t2); }
.ad-toolbar-right .ad-tool-btn:hover { border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.06); color: var(--t1); }
.ad-toolbar-right .ad-gen-btn { padding: 0 14px; border: none; background: linear-gradient(133deg,#67F9FF,#A3FFEC,#65FFAA); color: #06281a; font-weight: 600; }
.ad-toolbar-right .ad-gen-btn:hover { box-shadow: 0 4px 14px rgba(0,218,90,0.28); }
/* 右列：生成结果（撑满居中）+ 历史（底部）*/
.ad-gen-col { display: flex; flex-direction: column; min-height: 0; flex: 1 1 auto; padding: 12px; gap: 10px; }
.ad-result { flex: 1 1 auto; min-height: 0; display: flex; align-items: center; justify-content: center; background: #000; border-radius: 8px; overflow: hidden; }
.ad-result .thumb { width: auto; height: auto; max-width: 100%; max-height: 100%; object-fit: contain; cursor: zoom-in; }
.ad-history { flex: 0 0 auto; }
.ad-history > .vg-tool-btn { width: 100%; height: 56px; padding: 6px 4px; border-radius: 8px; border: 1px solid var(--bd); background: var(--bg1); color: var(--t2); cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; font-size: 11px; transition: all 0.15s; }
.ad-history > .vg-tool-btn svg { width: 15px; height: 15px; }
.ad-history > .vg-tool-btn:hover { background: rgba(20,22,28,0.92); color: var(--t1); border-color: rgba(255,255,255,0.22); }
@media (max-width: 900px) { .ad-split { grid-template-columns: 1fr; min-height: 0; } .ad-edit-col { border-right: none; border-bottom: 1px solid var(--bd); } }

/* 资产卡片参考图预览容器 */
/* 添加参考图的包装容器 */
.asset-ref-add-wrap {
  position: relative;
  width: 176px;
  margin-top: 6px;
}

/* "+" 触发按钮 */
.asset-ref-upload-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 32px;
  border-radius: 8px;
  border: 1px dashed var(--bd);
  background: var(--bg0);
  color: var(--t2);
  font-size: 18px;
  font-weight: 300;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
  user-select: none;
}

.asset-ref-upload-btn:hover {
  background: var(--bg2);
  color: var(--t1);
  border-color: var(--t3);
}

/* 下拉菜单 */
.asset-ref-add-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 60;
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-radius: 10px;
  padding: 4px;
  min-width: 170px;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35);
  display: none;
}

.asset-ref-add-dropdown.open {
  display: block;
}
.asset-ref-add-dropdown.drop-up { top: auto; bottom: calc(100% + 4px); }

.asset-ref-add-option {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 8px 10px;
  border-radius: 7px;
  background: none;
  border: none;
  color: var(--t1);
  font-size: 13px;
  cursor: pointer;
  text-align: left;
  box-sizing: border-box;
  transition: background 0.12s;
  user-select: none;
  white-space: nowrap;
}

.asset-ref-add-option:hover {
  background: var(--bg2);
}

/* 来自 prompt 的参考图（非 ref_imgs 锁定，只读展示） */
.asset-ref-from-prompt {
  opacity: 0.65;
}

.asset-ref-from-prompt:hover {
  opacity: 0.9;
}

/* ── 角色分组视图 ──────────────────────────────────────────── */

.char-group {
  border: 1px solid var(--bd);
  border-radius: 8px;
  overflow: hidden;
  margin-bottom: 10px;
  background: var(--bg1);
  box-shadow: var(--shadow-soft);
}

.char-group-header {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 18px;
  cursor: pointer;
  user-select: none;
  transition: background 0.15s;
}
.char-group-header:hover {
  background: var(--bg0);
}

.char-group-rep {
  width: 80px;
  height: 80px;
  flex-shrink: 0;
  border-radius: 8px;
  overflow: hidden;
  background: var(--bg0);
  border: 1px solid var(--bd);
}
.char-group-rep img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.char-group-noimg {
  width: 100%;
  height: 100%;
  background: var(--bg0);
}

.char-group-info {
  flex: 0 0 300px;
  min-width: 0;
}

/* 右侧描述区：原始/转化两栏，竖线分隔 */
.char-group-desc-side {
  flex: 1 1 0%;
  min-width: 0;
  border-left: 1px solid var(--bd);
  padding-left: 16px;
  margin-left: 4px;
}

.char-group-aliases {
  font-size: 12px;
  color: var(--t2);
  margin-top: 4px;
  line-height: 1.45;
}

.char-group-actions {
  flex-shrink: 0;
  display: flex;
  align-items: center;
}

.char-group-merge-btn {
  font-size: 12px;
  padding: 4px 10px;
  white-space: nowrap;
}

.char-outfit-alias-badge {
  position: absolute;
  top: 6px;
  left: 6px;
  z-index: 1;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 600;
  color: #fff;
  background: rgba(23, 162, 184, 0.92);
}

.char-outfit-alias.char-outfit-pending {
  opacity: 1;
}

.asset-merge-modal {
  width: min(920px, calc(100vw - 32px));
  max-height: calc(100vh - 48px);
  overflow: auto;
}

.asset-merge-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}

.asset-merge-intro {
  margin: 0 0 14px;
  font-size: 13px;
  line-height: 1.55;
}

.asset-merge-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

@media (max-width: 760px) {
  .asset-merge-layout {
    grid-template-columns: 1fr;
  }
}

.asset-merge-panel-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--t2);
  margin-bottom: 8px;
}

.asset-merge-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: 320px;
  overflow: auto;
  padding-right: 4px;
}

.asset-merge-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border: 1px solid var(--bd);
  border-radius: 8px;
  background: var(--bg1);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

.asset-merge-row.is-selected {
  border-color: rgba(0, 218, 90, 0.55);
  background: rgba(0, 218, 90, 0.08);
}

.asset-merge-row.is-disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.asset-merge-row-meta {
  flex: 1;
  min-width: 0;
}

.asset-merge-row-title {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
}

.asset-merge-row-sub {
  font-size: 11px;
  color: var(--t3);
  word-break: break-all;
  margin-top: 2px;
}

.asset-merge-row-thumb {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  border-radius: 6px;
  overflow: hidden;
  background: var(--bg0);
  border: 1px solid var(--bd);
}

.asset-merge-row-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.asset-merge-noimg {
  width: 100%;
  height: 100%;
  background: var(--bg0);
}

.asset-merge-preview {
  margin-top: 14px;
  font-size: 13px;
  line-height: 1.55;
  min-height: 1.5em;
}

.asset-merge-actions {
  margin-top: 14px;
}

.char-group-name-trans {
  font-size: 15px;
  font-weight: 600;
  color: var(--t2);
  margin-bottom: 3px;
}
.char-group-name-trans strong {
  color: var(--acc);
  font-weight: 700;
}
.char-name-edit-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  margin-left: 8px;
  border-radius: 5px;
  border: 1px solid rgba(255,255,255,0.28);
  background: rgba(255,255,255,0.12);
  color: var(--t1);
  cursor: pointer;
  vertical-align: middle;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
.char-name-edit-btn:hover { background: rgba(255,255,255,0.22); border-color: rgba(255,255,255,0.45); }
.char-name-edit-btn svg { width: 14px; height: 14px; }
.char-group-name-ori {
  font-size: 15px;
  font-weight: 600;
  color: var(--t1);
  margin-bottom: 4px;
}
.char-group-count {
  font-size: 12px;
  color: var(--t3);
}

.char-group-review-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}

.char-review-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.5;
}

.char-review-pending_leader {
  background: rgba(107, 122, 146, 0.15);
  color: var(--t2);
}

.char-review-awaiting_review {
  background: rgba(255, 193, 7, 0.18);
  color: #b8860b;
}

.char-review-approved_partial {
  background: rgba(23, 162, 184, 0.15);
  color: #17a2b8;
}

.char-review-complete {
  background: rgba(0, 218, 90, 0.15);
  color: #00DA5A;
}

.char-review-confirm-btn,
.char-review-revoke-btn {
  font-size: 12px;
  padding: 2px 10px;
}

.char-outfit-card.char-outfit-pending {
  opacity: 0.55;
}

.char-outfit-card.char-outfit-pending .char-outfit-noimg::after {
  content: "（待首图确认）";
  display: block;
  font-size: 11px;
  margin-top: 4px;
}

.char-group-arrow {
  flex-shrink: 0;
  color: var(--t3);
  transition: transform 0.2s;
}
.char-group.open .char-group-arrow {
  transform: rotate(180deg);
}

/* 服装网格 */
.char-group-body {
  display: none;
  padding: 0 18px 18px;
  border-top: 1px solid var(--bd);
}
.char-group.open .char-group-body {
  display: block;
}

.char-outfit-list-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--t2);
  margin: 14px 0 12px;
}

.char-outfit-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 12px;
}

.char-outfit-card {
  border: 1px solid var(--bd);
  border-radius: 10px;
  overflow: hidden;
  background: var(--bg0);
  cursor: pointer;
  transition: border-color 0.15s, box-shadow 0.15s;
  display: flex;
  flex-direction: column;
}
.char-outfit-card:hover {
  border-color: var(--acc);
  box-shadow: 0 2px 10px rgba(0,218,90,0.10);
}

.char-outfit-img {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--bg2);
  flex-shrink: 0;
}
.char-outfit-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.char-outfit-noimg {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  color: var(--t3);
}

.char-outfit-body {
  padding: 10px 12px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
}
.char-outfit-idtrans {
  font-size: 12px;
  font-weight: 600;
  color: var(--t1);
  word-break: break-all;
  line-height: 1.35;
}
.char-outfit-desc,
.char-outfit-desc-trans {
  font-size: 11px;
  color: var(--t3);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.char-outfit-desc-trans {
  color: var(--t2);
}
.char-outfit-edit-btn {
  margin-top: auto;
  align-self: flex-start;
  font-size: 12px;
  padding: 5px 14px;
}

.char-outfit-detach-btn {
  margin-top: 6px;
  align-self: flex-start;
  font-size: 12px;
  padding: 5px 14px;
  color: #c0392b;
  border-color: rgba(192, 57, 43, 0.35);
}

.char-outfit-detach-btn:hover {
  background: rgba(192, 57, 43, 0.08);
}

/* 编辑面板顶栏 */
.char-edit-topbar {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 0 16px;
  border-bottom: 1px solid var(--bd);
  margin-bottom: 20px;
}
.char-back-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
}
.char-edit-breadcrumb {
  font-size: 13px;
  color: var(--t2);
}

/* ─────────────────────────────────────────────────────────── */

.asset-ref-prompt-badge {
  font-size: 10px;
  color: var(--t3);
  font-style: italic;
  margin-top: 2px;
  line-height: 1.2;
}

/* 参考图移除按钮（悬停显示） */
.asset-ref-remove-btn {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: none;
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  font-size: 10px;
  line-height: 20px;
  text-align: center;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.15s;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.asset-ref-preview-item:hover .asset-ref-remove-btn {
  opacity: 1;
}

.asset-ref-remove-btn:hover {
  background: rgba(220, 50, 50, 0.8);
}

.asset-ref-preview {
  margin-top: 12px;
}

.asset-ref-preview-title {
  font-size: 11px;
  font-weight: 600;
  color: var(--t3);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}

/* 占位符（空状态） */
.asset-ref-preview-placeholder {
  width: 176px;
  height: 176px;
  border-radius: 12px;
  border: none;
  background: transparent;
}

.asset-ref-preview-placeholder-icon {
  font-size: 32px;
  font-weight: 300;
  line-height: 1;
  color: var(--t3);
  opacity: 0.5;
}

.asset-ref-preview-placeholder-text {
  font-size: 11px;
  color: var(--t3);
  opacity: 0.7;
}

/* 参考图网格 */
.asset-ref-preview-grid {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.asset-ref-preview-item {
  position: relative;
}

.asset-ref-preview-item img {
  width: 176px;
  height: 176px;
  border-radius: 12px;
  object-fit: cover;
  border: 1px solid var(--bd);
  background: var(--bg2);
  display: block;
  cursor: zoom-in;
}

.asset-ref-preview-item .asset-ref-label {
  font-size: 11px;
  color: var(--t2);
  margin-top: 4px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

@media (max-width: 640px) {
  .asset-ref-preview-placeholder,
  .asset-ref-preview-item img {
    width: min(176px, 100%);
    height: min(176px, 72vw);
  }
}

/* 按钮状态管理 - 通用样式 */
.btn-loading {
  position: relative;
  pointer-events: none;
  padding-left: 34px;
}

.btn-loading::after {
  content: "";
  position: absolute;
  width: 14px;
  height: 14px;
  top: 50%;
  left: 12px;
  margin: -7px 0 0 0;
  border: 2px solid currentColor;
  border-radius: 50%;
  border-top-color: transparent;
  animation: btn-spin 0.6s linear infinite;
}

@keyframes btn-spin {
  to { transform: rotate(360deg); }
}

/* 成功状态 */
.btn-success {
  background: var(--ok) !important;
  border-color: var(--ok) !important;
  color: #fff !important;
  pointer-events: none;
  transition: all 0.2s ease;
}

/* 错误状态 */
.btn-error {
  background: var(--danger) !important;
  border-color: var(--danger) !important;
  color: #fff !important;
  transition: all 0.2s ease;
}

/* 资产库 · 分镜 Tab */
.ast-sb-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 12px;
  margin-bottom: 14px;
  padding: 10px 12px;
  border: 1px solid var(--bd);
  border-radius: 10px;
  background: var(--bg2);
}

.ast-sb-epf {
  min-width: 120px;
  max-width: 160px;
}

.ast-sb-requirements {
  margin-bottom: 14px;
  padding: 10px 12px;
  border: 1px solid var(--bd);
  border-radius: 10px;
  background: var(--bg2);
}

.ast-sb-requirements-label {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--t1);
}

.ast-sb-requirements-inp {
  width: 100%;
  min-height: 7.5rem;
  max-height: min(40vh, 20rem);
  resize: vertical;
  overflow-y: auto;
  line-height: 1.55;
  font-size: 13px;
  box-sizing: border-box;
}

.ast-sb-requirements-inp:disabled {
  opacity: 0.65;
  cursor: not-allowed;
}

.ast-sb-requirements-hint {
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.55;
  color: var(--t3);
}

.btn-global-adapt {
  height: 34px;
  padding: 0 16px;
  font-size: 13px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-weight: 700;
  letter-spacing: 0.02em;
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease,
    filter 0.18s ease,
    border-color 0.18s ease;
}

.btn-global-adapt.btn-global-adapt--cta {
  border-color: rgba(110, 168, 255, 0.72);
  background: linear-gradient(135deg, #2f6fff 0%, #4b86ff 55%, #67a0ff 100%);
  color: #f8fbff;
  box-shadow:
    0 8px 18px rgba(39, 97, 218, 0.36),
    inset 0 1px 0 rgba(255, 255, 255, 0.25);
}

.btn-global-adapt.btn-global-adapt--partial {
  border-color: rgba(164, 177, 255, 0.74);
  background: linear-gradient(135deg, #5868f2 0%, #6e74ff 52%, #8f91ff 100%);
  color: #f8f9ff;
  box-shadow:
    0 8px 18px rgba(72, 74, 183, 0.36),
    inset 0 1px 0 rgba(255, 255, 255, 0.24);
}

.btn-global-adapt.btn-global-adapt--done {
  border: none;
  background: var(--cta-gradient);
  color: #073b3b;
  box-shadow: 0 2px 10px rgba(103, 249, 255, 0.22);
}

.btn-global-adapt:hover:not(:disabled) {
  transform: translateY(-1px);
  border-color: rgba(171, 214, 255, 0.9);
  box-shadow:
    0 12px 24px rgba(39, 97, 218, 0.48),
    0 0 0 1px rgba(190, 228, 255, 0.32),
    inset 0 1px 0 rgba(255, 255, 255, 0.3);
  filter: saturate(1.06) brightness(1.02);
}

.btn-global-adapt.btn-global-adapt--partial:hover:not(:disabled) {
  border-color: rgba(201, 206, 255, 0.92);
  box-shadow:
    0 12px 24px rgba(72, 74, 183, 0.48),
    0 0 0 1px rgba(209, 214, 255, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

.btn-global-adapt.btn-global-adapt--done:hover:not(:disabled) {
  border-color: rgba(164, 241, 207, 0.9);
  box-shadow:
    0 12px 24px rgba(25, 129, 82, 0.46),
    0 0 0 1px rgba(183, 247, 220, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

.btn-global-adapt:focus-visible {
  outline: 2px solid rgba(182, 225, 255, 0.95);
  outline-offset: 2px;
}

.btn-global-adapt:disabled {
  background: linear-gradient(135deg, #3a4d73 0%, #42587f 100%);
  border-color: rgba(111, 134, 170, 0.5);
  color: #bfcae0;
  box-shadow: none;
  filter: grayscale(0.16);
}

.ast-sb-table-wrap {
  overflow-x: auto;
  margin-bottom: 16px;
}

.ast-sb-sum th,
.ast-sb-sum td {
  vertical-align: middle;
}
/* 汇总表格表头：浅色系，替代深黑渐变 */
.ast-sb-sum thead th {
  background: var(--bg2);
  color: var(--t2);
  font-weight: 700;
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
  border-bottom: 2px solid var(--brand-green, var(--acc));
  padding: 12px 14px;
  white-space: nowrap;
}
/* 斑马纹 + 行 hover */
.ast-sb-sum tbody tr:nth-child(even) {
  background: rgba(0, 0, 0, 0.018);
}
.ast-sb-sum tbody tr {
  transition: background 0.12s;
}
.ast-sb-sum tbody tr:hover {
  background: rgba(0, 218, 90, 0.05);
}
.ast-sb-sum tbody td {
  padding: 11px 14px;
  border-bottom: 1px solid var(--bd);
}
.ast-sb-sum tbody tr:last-child td {
  border-bottom: none;
}

.ast-sb-actions-th {
  min-width: 128px;
  width: 140px;
}

.ast-sb-actions-cell {
  white-space: nowrap;
}

.ast-sb-row-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  min-width: 108px;
}

.ast-sb-row-actions .b {
  width: 100%;
  box-sizing: border-box;
}

.ast-sb-adapt-btn {
  font-weight: 700;
  letter-spacing: 0.01em;
  transition:
    transform 0.16s ease,
    box-shadow 0.16s ease,
    filter 0.16s ease,
    border-color 0.16s ease;
}

.ast-sb-adapt-btn.ast-sb-adapt-btn--cta {
  border-color: rgba(146, 191, 255, 0.72);
  background: linear-gradient(135deg, #3373ff 0%, #4c8fff 55%, #73b7ff 100%);
  color: #f7fbff;
  box-shadow:
    0 8px 20px rgba(42, 98, 222, 0.38),
    inset 0 1px 0 rgba(255, 255, 255, 0.26);
}

.ast-sb-adapt-btn.ast-sb-adapt-btn--cta:hover:not(:disabled) {
  transform: translateY(-1px);
  filter: saturate(1.07) brightness(1.02);
  box-shadow:
    0 12px 24px rgba(42, 98, 222, 0.5),
    inset 0 1px 0 rgba(255, 255, 255, 0.32);
}

.ast-sb-adapt-btn.ast-sb-adapt-btn--done {
  border-color: rgba(116, 219, 172, 0.66);
  background: linear-gradient(135deg, #1f8f5f 0%, #2bab73 52%, #49ca90 100%);
  color: #f5fff9;
  box-shadow:
    0 8px 20px rgba(30, 138, 90, 0.34),
    inset 0 1px 0 rgba(255, 255, 255, 0.24);
}

.ast-sb-adapt-btn.ast-sb-adapt-btn--done:hover:not(:disabled) {
  transform: translateY(-1px);
  filter: saturate(1.05) brightness(1.02);
  box-shadow:
    0 12px 24px rgba(30, 138, 90, 0.45),
    inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

.ast-sb-adapt-btn:focus-visible {
  outline: 2px solid rgba(184, 225, 255, 0.96);
  outline-offset: 2px;
}

.ast-sb-adapt-btn.ast-sb-adapt-btn--busy:disabled {
  opacity: 0.92;
  cursor: wait;
  animation: btn-analyze-busy-pulse 1.1s ease-in-out infinite;
}

.ast-sb-adapt-btn.ast-sb-adapt-btn--disabled:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  filter: grayscale(0.5);
  background: var(--bg2) !important;
  border-color: var(--bd) !important;
  color: var(--t3) !important;
  box-shadow: none !important;
}

.ast-sb-tr.ast-sb-tr--adapt-busy {
  box-shadow: inset 0 0 0 1px rgba(120, 180, 255, 0.45);
  background: rgba(70, 130, 220, 0.08);
}

.ast-sb-tr.ast-sb-tr--adapt-busy .ast-sb-gen-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.ast-sb-pill {
  display: inline-block;
  font-size: 12px;
  padding: 2px 10px;
  border-radius: 999px;
  background: var(--bg2);
  border: 1px solid var(--bd);
  color: var(--t2);
}

.ast-sb-pill.ok {
  background: rgba(80, 160, 100, 0.15);
  border-color: rgba(80, 160, 100, 0.35);
  color: #6a9;
}

.ast-sb-pill.stale {
  background: rgba(200, 140, 60, 0.15);
  border-color: rgba(200, 140, 60, 0.45);
  color: #c98a3a;
}

.ast-sb-stale-banner {
  margin: 0 0 12px;
  padding: 10px 14px;
  border-radius: 8px;
  border: 1px solid rgba(200, 140, 60, 0.45);
  background: rgba(200, 140, 60, 0.1);
  color: var(--t1);
  font-size: 13px;
  line-height: 1.6;
}

.ast-tag-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.ast-chip {
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 6px;
  background: rgba(138, 148, 168, 0.12);
  border: 1px solid rgba(138, 148, 168, 0.35);
  color: var(--t1);
}

.ast-chip.ch {
  background: rgba(186, 128, 72, 0.16);
  border-color: rgba(186, 128, 72, 0.38);
}

.ast-chip.sc {
  background: rgba(88, 124, 198, 0.16);
  border-color: rgba(88, 124, 198, 0.4);
}

.ast-sb-ep {
  margin-bottom: 12px;
  border: 1px solid var(--bd);
  border-radius: 10px;
  background: var(--bg2);
  padding: 0 4px 8px;
}

.ast-sb-sumcap {
  padding: 12px 14px;
  font-weight: 600;
  cursor: pointer;
}

.ast-sb-seg-list {
  padding: 0 10px 6px;
}

.ast-sb-seg {
  border: 1px solid var(--bd);
  border-radius: 8px;
  background: var(--bg1);
  padding: 14px 16px;
  margin-bottom: 14px;
}

.ast-sb-seg-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--bd);
}

.ast-sb-seg-id {
  font-weight: 700;
  font-size: 15px;
}

.ast-sb-seg-time {
  font-size: 12px;
  color: var(--t3);
}

/* 分镜级 场景/人物/道具 左右两栏（原始 | 改编，提示词上方）*/
.ast-sb-seg-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 12px; padding: 10px 12px; background: var(--bg2); border: 1px solid var(--bd); border-radius: 8px; }
.ast-sb-seg-meta-col { min-width: 0; }
.ast-sb-seg-meta-rows { display: flex; flex-wrap: wrap; align-items: baseline; gap: 14px; margin-top: 4px; }
.ast-sb-seg-meta-row { display: inline-flex; align-items: baseline; gap: 6px; }
.ast-sb-seg-meta-label { font-size: 11px; font-weight: 600; color: var(--t3); white-space: nowrap; }
.ast-sb-seg-meta-val { font-size: 12.5px; color: var(--t2); }
.ast-sb-seg-meta-empty { font-size: 12.5px; color: var(--t3); opacity: 0.6; }
@media (max-width: 900px) { .ast-sb-seg-meta { grid-template-columns: 1fr; } }

.ast-sb-seg-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

@media (max-width: 900px) {
  .ast-sb-seg-cols {
    grid-template-columns: 1fr;
  }
}

.ast-sb-col-h {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--t2);
  margin-bottom: 8px;
  letter-spacing: 0.02em;
}
/* 列头小色块区分原始/改编 */
.ast-sb-col-h::before {
  content: '';
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--t4, #bbb);
}
.ast-sb-seg-cols > div:last-child .ast-sb-col-h::before {
  background: var(--brand-green, var(--acc));
}

.ast-sb-col-t {
  font-size: 13.5px;
  line-height: 1.8;
  white-space: pre-line;
  text-align: left;
  word-break: break-word;
  color: var(--t1);
  max-height: 280px;
  overflow-y: auto;
  padding: 12px 14px;
  border: 1px solid var(--bd);
  border-radius: 8px;
  background: var(--bg2);
}

/* 改编列（第二列）：白底 + 绿色左边框，强调改编成果 */
.ast-sb-seg-cols > div:last-child .ast-sb-col-t {
  background: var(--bg1);
  border-left: 3px solid var(--brand-green, var(--acc));
}

textarea.ta {
  width: 100%;
  min-height: 90px;
  resize: vertical;
  background: var(--bg1);
  border: 1px solid var(--bd);
  color: var(--t1);
  border-radius: 6px;
  padding: 12px 16px;
  font-family: inherit;
  font-size: 14px;
  line-height: 1.6;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

textarea.ta:focus,
input.inp:focus,
select.inp:focus,
.tlb input[type="text"]:focus,
.tlb select:focus {
  outline: none;
  border-color: var(--brand-green);
  box-shadow: 0 0 0 3px rgba(0, 218, 90, 0.1);
}

label.lbl {
  display: block;
  font-size: 12px;
  color: var(--t2);
  margin-bottom: 4px;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.form-grid.form-grid-3col {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.form-lang-hint {
  margin-top: 5px;
  font-size: 12px;
  color: var(--t2);
  padding-left: 2px;
}

@media (max-width: 720px) {
  .form-grid,
  .form-grid.form-grid-3col {
    grid-template-columns: 1fr;
  }
}

input.inp,
select.inp {
  width: 100%;
  padding: 12px 16px;
  border-radius: 6px;
  border: 1px solid var(--bd);
  background: var(--bg1);
  color: var(--t1);
  font-family: inherit;
  font-size: 14px;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
select.inp {
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 36px;
  cursor: pointer;
}
.inp.inp-readonly {
  padding: 12px 16px;
  border-radius: 6px;
  border: 1px solid var(--bd);
  background: var(--bg2, #f5f5f5);
  color: var(--t2);
  font-size: 14px;
  line-height: 1.4;
  user-select: none;
  cursor: default;
}

.dialog-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 100;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.dialog-backdrop.on {
  display: flex;
}
/* 资产选择弹窗：从成员详情/任务分配等上层弹窗中打开时，需置于所有面板之上 */
#shot-asset-library-picker-modal { z-index: 300; }

/* 资产库：点击缩略图放大预览 */
.asset-img-lightbox {
  z-index: 110;
  padding: 24px;
}

.asset-img-lightbox-panel {
  position: relative;
  max-width: min(96vw, 1280px);
  max-height: 92vh;
  margin: auto;
}

.asset-img-lightbox-img {
  display: block;
  max-width: min(96vw, 1280px);
  max-height: 88vh;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: 12px;
  border: 1px solid var(--bd);
  background: var(--bg2);
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.55);
}

.asset-img-lightbox-x {
  position: absolute;
  top: -4px;
  right: -4px;
  z-index: 2;
  min-width: 40px;
  min-height: 40px;
  padding: 0 12px;
  font-size: 22px;
  line-height: 1;
  border-radius: 10px;
}

.asset-img-lightbox-name {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 12px;
  z-index: 2;
  padding: 8px 10px;
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.66);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.3;
  word-break: break-all;
  pointer-events: none;
}

/* 资产库选取 modal */
.asset-library-modal {
  width: min(860px, 96vw);
}

.asset-library-picker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 10px;
  max-height: 58vh;
  overflow-y: auto;
  padding: 2px;
}

.asset-library-picker-item {
  border: 2px solid transparent;
  border-radius: 10px;
  background: var(--bg2);
  padding: 8px;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
  user-select: none;
  -webkit-user-select: none;
}
/* 防止图片原生拖拽吞掉首次点击 */
.asset-library-picker-item img {
  -webkit-user-drag: none;
  user-drag: none;
  pointer-events: none;
}

.asset-library-picker-item:hover {
  border-color: var(--brand-green);
  background: var(--bg1);
  box-shadow: 0 0 0 3px rgba(0, 218, 90, 0.12);
}

.asset-library-picker-item.already-added {
  border-color: rgba(0, 218, 90, 0.5);
}

.asset-library-picker-item img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 7px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: var(--bg0);
  display: block;
}

.asset-library-picker-item .lib-name {
  font-size: 12px;
  color: var(--t1);
  margin-top: 6px;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.asset-library-picker-item .lib-type {
  font-size: 10px;
  color: var(--t3);
  margin-top: 2px;
}

.asset-library-picker-item .lib-added-badge {
  display: inline-flex;
  align-items: center;
  padding: 1px 6px;
  border-radius: 999px;
  background: rgba(0, 218, 90, 0.14);
  color: #7ef2bf;
  font-size: 10px;
  border: 1px solid rgba(0, 218, 90, 0.35);
  margin-top: 4px;
}

.asset-library-picker-section-title {
  font-size: 11px;
  font-weight: 600;
  color: var(--t3);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 6px 2px 4px;
  grid-column: 1 / -1;
}

/* ========== Shot Library Picker — Enhanced ========== */
.shot-pk-modal {
  width: min(920px, 96vw);
  /* 固定头尾 + body 内滚：确认按钮始终可见，弹窗整体不超出视口 */
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 32px) !important;
  overflow: hidden !important;
}
.shot-pk-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 4px;
}
.shot-pk-header h3 {
  margin: 0;
  font-size: 16px;
}
.shot-pk-toolbar {
  margin: 6px 0 0;
  display: flex;
  gap: 8px;
  align-items: center;
}
.shot-pk-search-wrap {
  position: relative;
  flex: 1;
  min-width: 0;
}
.shot-pk-search-icon {
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
}
.shot-pk-search {
  width: 100%;
  padding: 8px 12px 8px 32px;
  border: 1px solid var(--bd, #e0dcd6);
  border-radius: 8px;
  font-size: 13px;
  background: var(--bg1);
  color: var(--ink, #333);
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
  box-sizing: border-box;
}
.shot-pk-search:focus {
  border-color: var(--terra, #c45d3e);
  box-shadow: 0 0 0 2px rgba(196,93,62,0.12);
}
.shot-pk-search::placeholder { color: #bbb; }
.shot-pk-ep-filter {
  padding: 8px 28px 8px 10px;
  border: 1px solid var(--bd, #e0dcd6);
  border-radius: 8px;
  font-size: 13px;
  background: var(--bg1);
  color: var(--ink, #333);
  outline: none;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  transition: border-color 0.2s;
  flex-shrink: 0;
}
.shot-pk-ep-filter:focus { border-color: var(--terra, #c45d3e); }
.shot-pk-tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--bd, #e0dcd6);
  margin-top: 10px;
}
.shot-pk-tab {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 8px 16px;
  font-size: 13px;
  cursor: pointer;
  border: none;
  background: none;
  color: var(--t2, #888);
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color 0.15s, border-color 0.15s;
  font-weight: 500;
  font-family: inherit;
}
.shot-pk-tab:hover { color: var(--ink, #333); }
.shot-pk-tab.active {
  color: var(--terra, #c45d3e);
  border-bottom-color: var(--terra, #c45d3e);
  font-weight: 600;
}
.shot-pk-tab svg { flex-shrink: 0; }
.shot-pk-tab-count {
  font-size: 10px;
  background: var(--sf, #f0ede8);
  padding: 1px 6px;
  border-radius: 8px;
  color: var(--t3, #aaa);
  font-weight: 400;
}
.shot-pk-tab.active .shot-pk-tab-count {
  background: rgba(196,93,62,0.1);
  color: var(--terra, #c45d3e);
}
.shot-pk-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  padding: 8px 0;
  scroll-behavior: smooth;
}
.shot-pk-group {
  margin-bottom: 2px;
}
.shot-pk-group-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 6px;
  cursor: pointer;
  user-select: none;
  border-radius: 6px;
  transition: background 0.12s;
}
.shot-pk-group-head:hover {
  background: rgba(0,0,0,0.03);
}
.shot-pk-group-rep {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  object-fit: cover;
  border: 1.5px solid var(--bd, #e0dcd6);
  flex-shrink: 0;
  background: var(--bg0);
}
.shot-pk-group-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink, #333);
}
.shot-pk-group-en {
  font-size: 11px;
  color: var(--t3, #aaa);
  font-weight: 400;
}
.shot-pk-group-count {
  font-size: 10px;
  color: var(--t3, #aaa);
  background: var(--sf, #f0ede8);
  padding: 1px 7px;
  border-radius: 8px;
  margin-left: auto;
  flex-shrink: 0;
}
.shot-pk-group-arrow {
  font-size: 10px;
  color: var(--t3, #aaa);
  transition: transform 0.2s;
  flex-shrink: 0;
}
.shot-pk-group.collapsed .shot-pk-group-arrow {
  transform: rotate(-90deg);
}
.shot-pk-group-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
  gap: 8px;
  padding: 4px 0 10px;
}
.shot-pk-group.collapsed .shot-pk-group-grid {
  display: none;
}
.shot-pk-item {
  border: 2px solid transparent;
  border-radius: 8px;
  background: var(--bg2, #f5f3f0);
  padding: 6px;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
  position: relative;
  user-select: none;
  -webkit-user-select: none;
}
/* 防止图片原生拖拽吞掉首次点击（导致"点两下才选中"） */
.shot-pk-item img {
  -webkit-user-drag: none;
  user-drag: none;
  pointer-events: none;
}
.shot-pk-item::before {
  content: '';
  position: absolute;
  top: 8px;
  left: 8px;
  width: 18px;
  height: 18px;
  border: 2px solid rgba(0,0,0,0.18);
  border-radius: 4px;
  background: rgba(255,255,255,0.08);
  z-index: 2;
  transition: all 0.15s;
  pointer-events: none;
}
.shot-pk-item:hover {
  border-color: var(--brand-green, var(--acc));
  background: var(--bg1, #fff);
  box-shadow: 0 0 0 3px rgba(0,218,90,0.08);
}
.shot-pk-item:hover::before {
  border-color: var(--brand-green, var(--acc));
}
.shot-pk-item.selected {
  border-color: var(--brand-green, var(--acc));
  background: rgba(0,218,90,0.03);
  box-shadow: 0 0 0 3px rgba(0,218,90,0.12);
}
.shot-pk-item.selected::before {
  background: var(--brand-green, var(--acc));
  border-color: var(--brand-green, var(--acc));
}
.shot-pk-item.selected::after {
  content: '';
  position: absolute;
  top: 12px;
  left: 12px;
  width: 10px;
  height: 5.5px;
  border-left: 2px solid #fff;
  border-bottom: 2px solid #fff;
  transform: rotate(-45deg);
  z-index: 3;
  pointer-events: none;
}
.shot-pk-item:hover {
  border-color: var(--brand-green, var(--acc));
  background: var(--bg1, #fff);
  box-shadow: 0 0 0 3px rgba(0,218,90,0.12);
}
.shot-pk-item.already-added {
  border-color: rgba(0,218,90,0.4);
  opacity: 0.5;
  cursor: default;
}
.shot-pk-item.already-added::before {
  display: none;
}
.shot-pk-item.already-added:hover {
  box-shadow: none;
  border-color: rgba(0,218,90,0.4);
  background: var(--bg2, #f5f3f0);
}
.shot-pk-item img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 6px;
  background: var(--bg0, #fafaf8);
  display: block;
}
.shot-pk-item-name {
  font-size: 11px;
  color: var(--t1, #333);
  margin-top: 5px;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.shot-pk-item-sub {
  font-size: 10px;
  color: var(--t3, #aaa);
  margin-top: 1px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 400;
}
.shot-pk-item-badge {
  display: inline-flex;
  align-items: center;
  padding: 1px 6px;
  border-radius: 999px;
  background: rgba(0,218,90,0.14);
  color: #7ef2bf;
  font-size: 10px;
  border: 1px solid rgba(0,218,90,0.35);
  margin-top: 3px;
}
.shot-pk-empty {
  text-align: center;
  color: var(--t3, #aaa);
  font-size: 13px;
  padding: 28px 0;
}
.shot-pk-footer {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 0 0;
  border-top: 1px solid var(--bd, #e0dcd6);
  margin-top: 8px;
}
.shot-pk-footer-info {
  font-size: 12px;
  color: var(--t2, #888);
}
.shot-pk-footer-info strong {
  color: var(--brand-green, var(--acc));
  font-weight: 700;
}
.shot-pk-footer-actions {
  display: flex;
  gap: 8px;
}
#shot-pk-confirm-btn {
  min-width: 100px;
  transition: opacity 0.15s;
}
#shot-pk-confirm-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* ── 资产详情页 AI 双入口（提示词优化 / 提示词反推） ── */
.prompt-wrap { position: relative; display: flex; flex-direction: column; background: var(--bg1); border: 1px solid var(--bd); border-radius: 8px; overflow: hidden; }
.prompt-wrap > textarea.ta { border: none; border-radius: 0; background: transparent; padding: 10px 12px; min-height: 140px; flex: 1 1 auto; resize: vertical; }
.asset-ai-toolbar { position: static; display: flex; align-items: center; gap: 0; padding: 4px 6px; border-top: 1px solid var(--bd); background: transparent; }
.asset-ai-toolbar .asset-ai-btn { height: 30px; padding: 0 10px; font-size: 12px; background: transparent; border: none; color: var(--t3); border-radius: 4px; }
.asset-ai-toolbar .asset-ai-btn svg { width: 14px; height: 14px; }
.asset-ai-toolbar .asset-ai-btn:hover, .asset-ai-toolbar .asset-ai-btn.active { background: rgba(255,255,255,0.08); color: var(--t1); }
.asset-ai-divider { width: 1px; height: 14px; background: var(--bd); margin: 0 2px; flex-shrink: 0; }
.asset-ai-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 34px;
  padding: 0 14px;
  font-size: 13px;
  font-weight: 500;
  color: var(--t2);
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}
.asset-ai-btn:hover {
  border-color: rgba(255,255,255,0.28);
  background: rgba(255,255,255,0.06);
  color: var(--t1);
}
.asset-ai-btn.active {
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.32);
  color: var(--t1);
}
.asset-ai-btn--reverse { /* 反推：同款中性，图标区分 */ }
.asset-ai-btn--reverse:hover,
.asset-ai-btn--reverse.active {
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.32);
  color: var(--t1);
}

/* 资产 AI 面板容器：复用 shot-ai-inline 视觉 */
.asset-ai-panel {
  margin-top: 0;
  padding: 10px 12px;
  border: 1px solid var(--bd);
  border-top: 1px solid var(--bd);
  border-radius: 0 0 8px 8px;
  background: var(--bg1);
}
.asset-ai-panel-row {
  display: flex;
  gap: 8px;
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.asset-ai-panel-row--chips { align-items: center; }
.asset-ai-panel-row--chips .asset-ai-panel-gen { margin-left: auto; }
.asset-ai-panel-input {
  flex: 1;
  min-width: 200px;
  min-height: 60px;
  padding: 8px 10px;
  font-size: 13px;
  border: 1px solid var(--bd);
  border-radius: 6px;
  resize: vertical;
  font-family: inherit;
}
.asset-ai-panel-gen {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 34px;
  padding: 0 16px;
  font-size: 13px;
  font-weight: 600;
  background: var(--cta-gradient);
  color: #073b3b;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  white-space: nowrap;
  box-shadow: 0 2px 10px rgba(103, 249, 255, 0.22);
}
.asset-ai-panel-gen:hover { filter: brightness(1.08); }
.asset-ai-panel-gen:disabled { opacity: 0.6; cursor: not-allowed; }
.asset-ai-panel-gen .bean-icon { width: 15px; height: 15px; margin-right: 2px; vertical-align: -2px; }
.asset-ai-panel-gen .gen-score { color: #073b3b; font-weight: 700; margin: 0 2px; }

/* 反推面板：上传区 */
.asset-ai-reverse-drop {
  border: 2px dashed var(--bd);
  border-radius: 8px;
  padding: 20px;
  text-align: center;
  color: var(--t3);
  font-size: 13px;
  cursor: pointer;
  transition: all 0.15s;
  background: var(--bg2);
  margin-bottom: 8px;
}
.asset-ai-reverse-drop:hover {
  border-color: var(--brand-green, var(--acc));
  color: var(--brand-green, var(--acc));
  background: rgba(0, 218, 90, 0.04);
}
.asset-ai-reverse-drop svg {
  display: block;
  margin: 0 auto 6px;
}
.asset-ai-reverse-preview {
  position: relative;
  max-width: 200px;
  margin-bottom: 8px;
  border-radius: 8px;
  overflow: hidden;
  background: #000;
  border: 1px solid var(--bd);
}
.asset-ai-reverse-preview img {
  display: block;
  width: 100%;
  max-height: 180px;
  object-fit: contain;
}
.asset-ai-reverse-preview-clear {
  position: absolute;
  top: 6px; right: 6px;
  width: 24px; height: 24px;
  border-radius: 50%;
  border: none;
  background: rgba(0,0,0,0.6);
  color: #fff;
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
}

/* 复用视频页 AI 面板的 loading/result/actions 样式 */
.asset-ai-loading {
  display: flex; align-items: center; gap: 10px;
  padding: 16px; color: var(--brand-green, var(--acc)); font-size: 13px;
}
.asset-ai-loading[hidden] {
  display: none;
}
.asset-ai-result-hint {
  font-size: 12px; color: var(--t2); margin-bottom: 4px; font-weight: 600;
}
.asset-ai-result {
  width: 100%; min-height: 90px; padding: 10px;
  border: 1px solid var(--bd); border-radius: 6px;
  font-size: 13px; resize: vertical; font-family: inherit;
  margin-bottom: 8px;
}
.asset-ai-result-actions {
  display: flex; gap: 8px; justify-content: flex-end;
}
.asset-ai-discard {
  padding: 6px 16px; font-size: 12px; border: 1px solid var(--bd);
  border-radius: 6px; background: var(--bg1); color: var(--t2); cursor: pointer;
}
.asset-ai-discard:hover { background: var(--bg2); }
.asset-ai-adopt {
  padding: 6px 16px; font-size: 12px; font-weight: 600;
  border: none; border-radius: 6px; background: var(--brand-green, var(--acc)); color: #fff; cursor: pointer;
}
.asset-ai-adopt:hover { background: var(--brand-green-dark, var(--brand-green-dark)); }
.asset-ai-chip {
  padding: 3px 10px; font-size: 11px; border: 1px solid var(--bd);
  border-radius: 999px; background: var(--bg1); color: var(--t2); cursor: pointer;
  white-space: nowrap;
}
.asset-ai-chip:hover { border-color: var(--brand-green); color: var(--brand-green); }
@keyframes asset-ai-spin { to { transform: rotate(360deg); } }
.asset-ai-spin {
  width: 16px; height: 16px; border: 2px solid rgba(0,218,90,0.2);
  border-top-color: var(--brand-green); border-radius: 50%;
  animation: asset-ai-spin 0.7s linear infinite;
}

/* ── AI 辅助修改提示词 ── */

/* 触发按钮（在 textarea 下方工具栏内） */
.shot-ai-trigger-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 14px;
  font-size: 12px;
  font-weight: 500;
  color: var(--brand-green, var(--acc));
  background: transparent;
  border: 1px solid rgba(0, 218, 90, 0.3);
  border-radius: 5px;
  cursor: pointer;
  transition: all 0.15s;
  margin-left: auto;
}
.shot-ai-trigger-btn:hover {
  color: #fff;
  background: var(--brand-green, var(--acc));
  border-color: var(--brand-green, var(--acc));
  box-shadow: 0 2px 6px rgba(0, 218, 90, 0.2);
}
.shot-ai-trigger-btn svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  opacity: .7;
}
.shot-ai-trigger-btn:hover svg {
  opacity: 1;
}

/* 弹窗容器 */
.shot-ai-modal {
  width: min(560px, 92vw);
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 12px;
  box-shadow: 0 24px 80px rgba(0,0,0,.18), 0 0 0 1px rgba(0,0,0,.06);
}

/* 标题栏 */
.shot-ai-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 20px 12px;
  border-bottom: 1px solid var(--bd, #e5e7eb);
  flex-shrink: 0;
}
.shot-ai-header h3 {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--ink1, var(--t1));
}
.shot-ai-close-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: none;
  background: transparent;
  border-radius: 6px;
  color: var(--ink3, #999);
  cursor: pointer;
  transition: all 0.15s;
}
.shot-ai-close-btn:hover {
  background: var(--sf, #f0f1f3);
  color: var(--ink1, var(--t1));
}

/* 滚动体 — 核心 bug 修复 */
.shot-ai-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 14px 20px 20px;
  overscroll-behavior: contain;
}

/* 镜头信息 */
.shot-ai-shot-info {
  padding: 5px 10px;
  background: var(--sf, #f7f8fa);
  border-radius: 4px;
  font-size: 12px;
  color: var(--ink2, #888);
  margin-bottom: 14px;
  font-variant-numeric: tabular-nums;
}

/* 当前提示词折叠区 */
.shot-ai-context {
  border: 1px solid var(--bd, #e5e7eb);
  border-radius: 8px;
  margin-bottom: 14px;
  overflow: hidden;
}
.shot-ai-context-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 12px;
  cursor: pointer;
  font-size: 12px;
  color: var(--ink2, #666);
  background: var(--sf, #f7f8fa);
  user-select: none;
  transition: background 0.15s;
}
.shot-ai-context-head:hover {
  background: var(--bg, #ececee);
}
.shot-ai-context-label {
  display: flex;
  align-items: center;
  gap: 6px;
}
.shot-ai-context-label svg {
  flex-shrink: 0;
  opacity: .45;
}
.shot-ai-context-arrow {
  display: flex;
  align-items: center;
  transition: transform 0.2s;
}
.shot-ai-context-arrow.open {
  transform: rotate(180deg);
}
.shot-ai-context-body {
  padding: 10px 12px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--ink2, #666);
  max-height: 120px;
  overflow-y: auto;
  white-space: pre-wrap;
  word-break: break-all;
  background: var(--bg1);
  border-top: 1px solid var(--bd, #e5e7eb);
}

/* 快捷指令 */
.shot-ai-shortcuts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 14px;
}
.shot-ai-shortcut {
  padding: 5px 12px;
  font-size: 12px;
  color: var(--ink2, #666);
  background: var(--sf, #f7f8fa);
  border: 1px solid var(--bd, #e5e7eb);
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
  font-weight: 500;
}
.shot-ai-shortcut:hover {
  color: var(--brand-green, var(--acc));
  border-color: var(--brand-green, var(--acc));
  background: rgba(0, 218, 90, 0.06);
}

/* 字段标签 */
.shot-ai-field-label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  margin-bottom: 6px;
  color: var(--ink2, #666);
  letter-spacing: 0.01em;
}

/* 输入区 */
.shot-ai-input-wrap {
  margin-bottom: 10px;
}
.shot-ai-input {
  width: 100%;
  min-height: 56px;
  padding: 9px 12px;
  font-size: 13px;
  line-height: 1.5;
  border: 1px solid var(--bd, #e5e7eb);
  border-radius: 8px;
  resize: vertical;
  box-sizing: border-box;
  font-family: inherit;
  transition: border-color 0.15s, box-shadow 0.15s;
  color: var(--ink1, var(--t1));
}
.shot-ai-input:focus {
  outline: none;
  border-color: var(--brand-green, var(--acc));
  box-shadow: 0 0 0 3px rgba(0, 218, 90, 0.1);
}
.shot-ai-input::placeholder {
  color: var(--ink3, #bbb);
}

/* 生成按钮 */
.shot-ai-gen-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: fit-content;
  margin-left: auto;
  padding: 0 16px;
  height: 34px;
  font-size: 13px;
  font-weight: 600;
  color: #073b3b;
  background: var(--cta-gradient);
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s;
  margin-bottom: 16px;
  box-shadow: 0 2px 10px rgba(103, 249, 255, 0.22);
}
.shot-ai-gen-btn:hover {
  filter: brightness(1.08);
}
.shot-ai-gen-btn:active {
  filter: brightness(0.95);
}
.shot-ai-gen-btn svg {
  flex-shrink: 0;
  opacity: .85;
}

/* 生成中加载态 */
.shot-ai-modal.generating .shot-ai-gen-btn {
  opacity: .55;
  pointer-events: none;
}
.shot-ai-modal.generating .shot-ai-gen-btn::after {
  content: '';
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 2px solid rgba(255,255,255,.3);
  border-top-color: #fff;
  border-radius: 50%;
  animation: shot-ai-spin .6s linear infinite;
  margin-left: 6px;
}
@keyframes shot-ai-spin {
  to { transform: rotate(360deg); }
}

/* 分隔线 */
.shot-ai-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  color: var(--ink3, #aaa);
  font-size: 12px;
}
.shot-ai-divider::before,
.shot-ai-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--bd, #e5e7eb);
}
.shot-ai-divider-text {
  white-space: nowrap;
  font-weight: 500;
}

/* 结果区 */
.shot-ai-result-wrap {
  flex-shrink: 0;
}
.shot-ai-result {
  width: 100%;
  min-height: 120px;
  padding: 10px 12px;
  font-size: 13px;
  line-height: 1.7;
  border: 1px solid var(--bd, #e5e7eb);
  border-radius: 8px;
  resize: vertical;
  box-sizing: border-box;
  font-family: inherit;
  background: var(--bg2);
  margin-bottom: 12px;
  color: var(--ink1, var(--t1));
}
.shot-ai-result:focus {
  outline: none;
  border-color: var(--brand-green, var(--acc));
  box-shadow: 0 0 0 3px rgba(0, 218, 90, 0.1);
  background: var(--bg1);
}

/* 结果操作按钮 */
.shot-ai-result-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.shot-ai-btn {
  padding: 7px 18px;
  font-size: 13px;
  font-weight: 500;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.15s;
  border: none;
}
.shot-ai-btn--ghost {
  color: var(--ink2, #666);
  background: var(--sf, #f0f1f3);
  border: 1px solid var(--bd, #e5e7eb);
}
.shot-ai-btn--ghost:hover {
  background: #e8e9eb;
  color: var(--ink1, var(--t1));
}
.shot-ai-btn--primary {
  color: #fff;
  background: var(--brand-green, var(--acc));
}
.shot-ai-btn--primary:hover {
  filter: brightness(1.08);
}
.shot-ai-btn--primary:active {
  filter: brightness(0.95);
}

/* ── AI 内联修改面板（替代弹窗） ── */

.shot-ai-inline {
  border: 1px solid rgba(0, 218, 90, 0.2);
  border-top: none;
  border-radius: 0 0 8px 8px;
  background: linear-gradient(180deg, rgba(0, 218, 90, 0.02) 0%, #fff 100%);
  padding: 8px 10px;
  animation: shot-ai-inline-in 0.18s ease;
}
@keyframes shot-ai-inline-in {
  from { opacity: 0; max-height: 0; padding-top: 0; padding-bottom: 0; }
  to { opacity: 1; max-height: 800px; }
}

/* 工具栏内的快捷标签（打开 AI 面板时注入） */
.shot-ai-toolbar-chips {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
}
.shot-ai-inline-chip {
  padding: 2px 8px;
  font-size: 11px;
  color: var(--t2, #666);
  background: var(--bg2, var(--bg2));
  border: 1px solid var(--bd, var(--bd));
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.12s;
  white-space: nowrap;
}
.shot-ai-inline-chip:hover {
  color: var(--brand-green, var(--acc));
  border-color: var(--brand-green, var(--acc));
  background: rgba(0, 218, 90, 0.04);
}


/* 多行输入框 */
.shot-ai-inline-input {
  width: 100%;
  min-height: 40px;
  padding: 6px 10px;
  font-size: 13px;
  line-height: 1.5;
  border: 1px solid var(--bd, var(--bd));
  border-radius: 4px;
  outline: none;
  font-family: inherit;
  resize: vertical;
  box-sizing: border-box;
  transition: border-color 0.15s, box-shadow 0.15s;
  color: var(--t1);
  margin-bottom: 6px;
}
.shot-ai-inline-input:focus {
  border-color: var(--brand-green, var(--acc));
  box-shadow: 0 0 0 2px rgba(0, 218, 90, 0.08);
}
.shot-ai-inline-input::placeholder {
  color: var(--t3, #bbb);
}

/* 生成按钮 */
.shot-ai-inline-gen {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 7px 16px;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
  background: var(--brand-green, var(--acc));
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.15s;
}
.shot-ai-inline-gen:hover {
  filter: brightness(1.08);
}

/* 加载状态 */
.shot-ai-inline-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 24px 16px;
}
.shot-ai-inline-spin-lg {
  display: inline-block;
  width: 22px;
  height: 22px;
  border: 3px solid rgba(0, 218, 90, 0.15);
  border-top-color: var(--brand-green, var(--acc));
  border-radius: 50%;
  animation: shot-ai-spin .8s linear infinite;
}
.shot-ai-inline-loading-text {
  font-size: 13px;
  font-weight: 600;
  color: var(--t1);
}

/* 结果区 */
.shot-ai-inline-result-wrap {
  padding-top: 8px;
  border-top: 1px dashed var(--bd, var(--bd));
}
.shot-ai-inline-result-hint {
  font-size: 11px;
  font-weight: 600;
  color: var(--t3, #aaa);
  margin-bottom: 5px;
  letter-spacing: 0.02em;
}
.shot-ai-inline-result {
  width: 100%;
  min-height: 80px;
  padding: 6px 10px;
  font-size: 13px;
  line-height: 1.6;
  border: 1px solid var(--bd, var(--bd));
  border-radius: 4px;
  resize: vertical;
  box-sizing: border-box;
  font-family: inherit;
  background: var(--bg2);
  margin-bottom: 6px;
  color: var(--t1);
}
.shot-ai-inline-result:focus {
  outline: none;
  border-color: var(--brand-green, var(--acc));
}

/* 结果操作 */
.shot-ai-inline-result-actions {
  display: flex;
  justify-content: flex-end;
  gap: 6px;
}
.shot-ai-inline-discard {
  padding: 4px 12px;
  font-size: 12px;
  color: var(--t2, #666);
  background: var(--bg2, var(--bg2));
  border: 1px solid var(--bd, var(--bd));
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.12s;
}
.shot-ai-inline-discard:hover {
  background: #e8e9eb;
  color: var(--t1);
}
.shot-ai-inline-adopt {
  padding: 4px 12px;
  font-size: 12px;
  font-weight: 600;
  color: #fff;
  background: var(--brand-green, var(--acc));
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.12s;
}
.shot-ai-inline-adopt:hover {
  filter: brightness(1.08);
}

/* 确认采纳弹层 */
.shot-ai-inline-confirm {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 12px;
  margin-top: 6px;
  background: #fffbe6;
  border: 1px solid rgba(255, 190, 0, 0.3);
  border-radius: 5px;
}
.shot-ai-inline-confirm-text {
  font-size: 13px;
  font-weight: 500;
  color: #8a6d00;
}
.shot-ai-inline-confirm-actions {
  display: flex;
  gap: 6px;
}

/* -- Prompt editor: contenteditable with inline highlights -- */

.sb-prompt-editor-wrap {
  position: relative;
  flex: 1;
}

.sb-prompt-editor {
  width: 100%;
  height: 180px;
  min-height: 120px;
  padding: 10px 14px;
  font-family: inherit;
  font-size: 13px;
  line-height: 1.6;
  color: var(--t1, var(--t1));
  background: var(--bg0, #fafaf8);
  border: none;
  border-radius: 0;
  outline: none;
  overflow-y: auto;
  white-space: pre-wrap;
  word-wrap: break-word;
  overflow-wrap: break-word;
  box-sizing: border-box;
  resize: vertical;
}
.sb-prompt-editor:focus {
  outline: none;
}
.sb-prompt-editor:empty::before {
  content: attr(data-placeholder);
  color: var(--t3, #aaa);
  pointer-events: none;
  white-space: pre-wrap;
}

.sb-prompt-editor mark {
  background: rgba(0, 218, 90, 0.18);
  color: inherit;
  border-radius: 2px;
  padding: 0;
  border-bottom: 2px solid rgba(0, 218, 90, 0.45);
}


/* ── 透明 textarea + 高亮背景层（Demo 模式）── */
.prompt-hl-wrap {
  position: relative;
  width: 100%;
  display: grid;
  overflow: hidden;
}
.prompt-hl-wrap > * {
  grid-area: 1 / 1;
}
.prompt-hl-back {
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  white-space: pre-wrap;
  word-wrap: break-word;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
  color: var(--t1, var(--t1));
  padding: 12px 16px;
  box-sizing: border-box;
}
.prompt-hl-back mark {
  color: var(--brand-green-dark, var(--acc2));
  background: rgba(0, 218, 90, 0.12);
  border-bottom: 2px solid var(--brand-green, var(--acc));
  padding: 0 1px;
  border-radius: 2px;
}
.prompt-hl-wrap textarea.ta {
  position: relative;
  z-index: 1;
  color: transparent;
  caret-color: var(--t1, var(--t1));
  background: transparent;
  width: 100%;
  resize: vertical;
  box-sizing: border-box;
}
.prompt-hl-wrap textarea.ta::selection {
  color: transparent;
  background: rgba(0, 218, 90, 0.25);
}

/* 底部功能工具栏 */
.sb-prompt-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 6px 12px;
  border-top: 1px solid var(--bd, #eee);
  border-radius: 0 0 8px 8px;
  background: var(--bg2, var(--bg2));
}
/* 工具栏内 AI 修改按钮右对齐 */
.sb-prompt-toolbar .shot-ai-trigger-btn {
  margin-left: auto;
}
/* AI 按钮激活态（面板展开时） */
.sb-prompt-toolbar .shot-ai-trigger-btn.active {
  background: var(--brand-green, var(--acc));
  color: #fff;
  border-color: var(--brand-green, var(--acc));
}

.asset-history-modal {
  width: min(980px, 96vw);
}

.asset-history-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 10px;
  max-height: 62vh;
  overflow: auto;
}

.asset-history-item {
  border: 1px solid var(--bd);
  border-radius: 10px;
  background: var(--bg2);
  padding: 8px;
}

.asset-history-item img {
  width: 100%;
  height: 130px;
  object-fit: cover;
  border-radius: 8px;
  cursor: zoom-in;
  border: 1px solid rgba(255, 255, 255, 0.1);
}

/* 镜头历史为 9:16 竖屏，用 contain 完整展示，勿用固定矮框 + cover 裁切 */
.asset-history-item video {
  width: 100%;
  height: auto;
  aspect-ratio: 9 / 16;
  max-height: 320px;
  object-fit: contain;
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: #000;
}

.asset-history-meta {
  margin-top: 6px;
  font-size: 12px;
  color: var(--t2);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}

.asset-history-current {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(0, 218, 90, 0.16);
  color: #7ef2bf;
  font-size: 11px;
  border: 1px solid rgba(0, 218, 90, 0.4);
}

.asset-history-item .b {
  width: 100%;
  margin-top: 8px;
}

/* ===== 镜头历史版本：胶片条 + 详情面板 ===== */

/* 外层容器 */
.shot-history-wrap {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* ---- 胶片条：横向缩略图 ---- */
.shot-history-strip {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 4px;
  scrollbar-width: thin;
}
.shot-history-strip::-webkit-scrollbar { height: 4px; }
.shot-history-strip::-webkit-scrollbar-thumb { background: var(--bd, #ddd); border-radius: 2px; }

.shot-history-strip__item {
  flex-shrink: 0;
  width: 88px;
  border: 2px solid var(--bd, var(--bd));
  border-radius: 8px;
  overflow: hidden;
  cursor: pointer;
  transition: border-color 0.15s, box-shadow 0.15s;
  background: var(--bg2, var(--bg2));
  position: relative;
}
.shot-history-strip__item:hover {
  border-color: rgba(0, 218, 90, 0.5);
}
.shot-history-strip__item--active {
  border-color: var(--brand-green, var(--acc));
  box-shadow: 0 0 0 1px var(--brand-green, var(--acc));
}
.shot-history-strip__item--current {
  background: rgba(0, 218, 90, 0.03);
}

.shot-history-strip__item video {
  width: 100%;
  aspect-ratio: 9 / 16;
  height: auto;
  max-height: 90px;
  object-fit: cover;
  display: block;
  background: #000;
}
.shot-history-strip__item img {
  width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  object-fit: cover;
  display: block;
  background: var(--bg2, var(--bg2));
}

.shot-history-strip__label {
  padding: 3px 6px;
  display: flex;
  flex-direction: column;
  gap: 1px;
  font-size: 10px;
  line-height: 1.2;
}
.shot-history-strip__label .mono {
  font-weight: 600;
  color: var(--t1, var(--t1));
}
.shot-history-strip__time {
  color: var(--t3, #999);
  font-size: 9px;
  font-family: var(--font);
}

.shot-history-strip__badge {
  position: absolute;
  top: 4px;
  right: 4px;
  font-size: 9px;
  padding: 1px 4px;
  border-radius: 3px;
  background: var(--brand-green, var(--acc));
  color: #fff;
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* ---- 详情面板 ---- */
.shot-history-detail {
  border: 1px solid var(--bd, var(--bd));
  border-radius: 10px;
  background: var(--bg1, #fff);
  overflow: hidden;
}

.shot-history-detail__header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--bd, #eee);
  background: var(--bg2, var(--bg2));
}
.shot-history-detail__ver {
  font-size: 14px;
  font-weight: 700;
  color: var(--t1, var(--t1));
}
.shot-history-detail__time {
  font-size: 12px;
  color: var(--t3, #999);
}

.shot-history-detail__content {
  display: flex;
  gap: 12px;
  padding: 10px;
  align-items: stretch;
}

/* 详情：视频/图片 */
.shot-history-detail__video {
  flex-shrink: 0;
  width: 180px;
  height: 260px;
}
.shot-history-detail__video video {
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: 6px;
  background: #000;
  border: 1px solid rgba(0, 0, 0, 0.1);
}
.shot-history-detail__video img {
  width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  object-fit: cover;
  border-radius: 6px;
  background: var(--bg2, var(--bg2));
  border: 1px solid rgba(0, 0, 0, 0.1);
}

/* 详情：提示词 */
.shot-history-detail__prompt {
  flex: 1;
  min-width: 0;
  height: 260px;
  background: var(--bg0);
  border: 1px solid var(--bd);
  border-radius: 6px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.shot-history-detail__prompt-label {
  font-size: 10px;
  font-weight: 600;
  color: var(--t3, #aaa);
  margin-bottom: 3px;
  letter-spacing: 0.02em;
}
.shot-history-detail__prompt-text {
  flex: 1;
  font-size: 11px;
  line-height: 1.55;
  color: var(--t2, #555);
  white-space: pre-wrap;
  word-break: break-all;
  font-family: inherit;
  max-height: 240px;
  overflow-y: auto;
  scrollbar-width: thin;
}
.shot-history-detail__prompt-text::-webkit-scrollbar { width: 3px; }
.shot-history-detail__prompt-text::-webkit-scrollbar-thumb { background: var(--bd, #ddd); border-radius: 2px; }

/* 底部操作栏（关闭 + 应用，右对齐） */
.shot-history-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 10px;
}
.shot-history-footer .b { width: auto; }
.shot-history-detail__btn-disabled {
  background: var(--bg2, var(--bg2));
  color: var(--t3, #bbb);
  border: 1px solid var(--bd, var(--bd));
  cursor: not-allowed;
  opacity: 0.7;
}

/* 响应式：窄屏 */
@media (max-width: 640px) {
  .shot-history-detail__content {
    flex-direction: column;
  }
  .shot-history-detail__video {
    width: 100%;
  }
  .shot-history-detail__video video {
    max-height: 200px;
  }
  .shot-history-detail__video img {
    max-height: 200px;
  }
}

.sb-asset-sync-notice {
  margin: 10px 0 12px;
  border: 1px solid rgba(255, 170, 51, 0.95);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(92, 50, 8, 0.95) 0%, rgba(64, 34, 6, 0.96) 100%);
  padding: 10px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  box-shadow:
    0 0 0 1px rgba(255, 183, 77, 0.25) inset,
    0 10px 24px rgba(0, 0, 0, 0.25);
}

.sb-asset-sync-notice-main {
  display: flex;
  gap: 8px;
  align-items: center;
  color: #fff4d6;
  font-size: 13px;
  font-weight: 600;
}

.sb-asset-sync-notice-main strong {
  color: #ffd78a;
}

.sb-asset-sync-notice-actions {
  display: flex;
  gap: 8px;
}

.sb-asset-sync-notice .b {
  border-color: rgba(255, 183, 77, 0.7);
  background: rgba(255, 255, 255, 0.1);
  color: #fff2cf;
}

.sb-asset-sync-notice .b:hover:not(:disabled) {
  background: rgba(255, 183, 77, 0.22);
  border-color: rgba(255, 200, 120, 0.9);
}

.sb-regen-notice {
  margin: 10px 0 12px;
  border: 1px solid rgba(255, 106, 106, 0.92);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(92, 20, 20, 0.94) 0%, rgba(60, 14, 14, 0.96) 100%);
  padding: 10px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  box-shadow:
    0 0 0 1px rgba(255, 106, 106, 0.28) inset,
    0 10px 24px rgba(0, 0, 0, 0.26);
}

.sb-regen-notice-main {
  display: flex;
  gap: 8px;
  align-items: center;
  color: #ffe2e2;
  font-size: 13px;
  font-weight: 600;
}

.sb-regen-notice-main strong {
  color: #ff9f9f;
}

.sb-regen-notice-actions {
  display: flex;
  gap: 8px;
}

.shot-card.sb-needs-regen {
  border-color: rgba(255, 106, 106, 0.85);
  box-shadow: 0 0 0 1px rgba(255, 106, 106, 0.22) inset;
}

.sb-gen-big.sb-needs-regen {
  border-color: rgba(255, 120, 120, 0.95);
  background: linear-gradient(135deg, rgba(168, 54, 54, 0.9), rgba(122, 32, 32, 0.94));
  color: #ffe8e8;
}

/* ── sb-prompt-group：video_ref_prompt + prompt_trans 合并外框 ── */
.sb-prompt-group {
  border: 1px solid var(--bd, var(--bd));
  border-radius: 8px;
  overflow: visible;
  background: var(--bg1);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.sb-prompt-group:focus-within {
  border-color: var(--brand-green);
  box-shadow: 0 0 0 3px rgba(0, 218, 90, 0.08);
}
/* 组内 textarea：当被 contenteditable 包裹时隐藏自身边框 */
.sb-prompt-editor-wrap textarea.ta {
  border: none;
  border-radius: 0;
  box-shadow: none;
  transition: background 0.2s ease;
}
.sb-prompt-editor-wrap textarea.ta:focus {
  border: none;
  box-shadow: none;
  outline: none;
}

/* video_ref 标签条：默认收起 */
.sb-video-ref-label {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  padding: 0 16px;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--t1);
  background: var(--bg2, #f4f6f4);
  border-bottom: 0px dashed var(--bd);
  user-select: none;
  pointer-events: none;
  transition: max-height 0.28s ease, opacity 0.22s ease,
              padding-top 0.28s ease, padding-bottom 0.28s ease,
              border-bottom-width 0.1s ease;
}
/* ref_prev_shot 勾选时展开 */
.sb-prompt-group.has-ref-prev .sb-video-ref-label {
  max-height: 48px;
  opacity: 1;
  padding-top: 7px;
  padding-bottom: 7px;
  border-bottom-width: 1px;
}

/* prompt_trans 有未保存改动时的 dirty 标记 */
.shot-card.sb-prompt-dirty {
  border-color: rgba(255, 168, 40, 0.55);
}
/* dirty 时高亮组外框（如有），或直接高亮 textarea */
.shot-card.sb-prompt-dirty .sb-prompt-group {
  border-color: rgba(255, 168, 40, 0.7);
  box-shadow: 0 0 0 2px rgba(255, 168, 40, 0.12);
}
.shot-card.sb-prompt-dirty .sb-prompt-ta {
  border-color: rgba(255, 168, 40, 0.7);
  box-shadow: 0 0 0 2px rgba(255, 168, 40, 0.12);
}
.sb-prompt-dirty-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: #c87a00;
  background: rgba(255, 168, 40, 0.12);
  border: 1px solid rgba(255, 168, 40, 0.35);
  border-radius: 4px;
  padding: 1px 7px;
  margin-left: 8px;
  vertical-align: middle;
  user-select: none;
  transition: opacity 0.2s;
}
.sb-prompt-dirty-badge::before {
  content: '●';
  font-size: 7px;
  line-height: 1;
}

.del-dialog {
  width: 480px;
  max-width: 100%;
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-radius: 12px;
  padding: 22px 24px;
}

.del-dialog h3 {
  margin: 0 0 10px;
  font-size: 17px;
}

.del-dialog p {
  margin: 0 0 14px;
  color: var(--t2);
  line-height: 1.6;
  font-size: 13px;
}

.ck-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  font-size: 13px;
  color: var(--t2);
}

.dialog-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 16px;
}

.proj-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}

.proj-card {
  border: 1px solid var(--bd);
  border-radius: 8px;
  padding: 20px;
  background: var(--bg1);
  box-shadow: var(--shadow-soft);
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
  cursor: pointer;
  overflow: hidden;
  position: relative;
}

.proj-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--brand-green), var(--brand-blue), var(--brand-orange));
  opacity: 0;
  transition: opacity 0.3s ease;
}

.proj-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.15);
  border-color: var(--brand-green);
}

.proj-card:hover::before {
  opacity: 1;
}

.proj-card h3 {
  margin: 0 0 6px;
  font-size: 16px;
}

.proj-meta {
  font-size: 12px;
  color: var(--t2);
  margin-bottom: 12px;
}

.proj-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.toast {
  position: fixed;
  right: 16px;
  bottom: 16px;
  padding: 12px 16px;
  border-radius: 10px;
  border: 1px solid var(--bd);
  background: var(--bg1);
  color: var(--t1);
  z-index: 200;
  display: none;
  max-width: 360px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.45);
}
.toast.on {
  display: block;
}
.toast.err {
  border-color: rgba(255, 107, 107, 0.5);
}

/* 项目详情页：可关闭的错误提示（长文案不依赖短时 toast） */
.project-error-panel {
  display: none;
  position: fixed;
  top: 56px;
  left: 12px;
  right: 12px;
  z-index: 55;
  max-width: 920px;
  margin: 0 auto;
  pointer-events: none;
}
.project-error-panel.on {
  display: block;
  pointer-events: auto;
}
.project-error-panel-inner {
  border: 1px solid rgba(255, 107, 107, 0.45);
  border-radius: 10px;
  background: var(--bg1);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
  overflow: hidden;
}
.project-error-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px 8px 14px;
  border-bottom: 1px solid var(--bd);
  background: rgba(255, 107, 107, 0.08);
}
.project-error-panel-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--t1);
}
.project-error-panel-close {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  margin: -4px -6px -4px 0;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--t2);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.project-error-panel-close:hover {
  background: rgba(255, 255, 255, 0.08);
  color: var(--t1);
}
.project-error-panel-body {
  padding: 12px 14px 14px;
  max-height: min(42vh, 320px);
  overflow: auto;
  font-size: 13px;
  line-height: 1.55;
  color: var(--t1);
  white-space: pre-wrap;
  word-break: break-word;
}

/* 隐藏 file input，用 label 做成按钮 */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.file-btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

label.file-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 14px;
  border-radius: 8px;
  font-size: 13px;
  cursor: pointer;
  font-family: inherit;
  border: 1px solid var(--bd);
  background: var(--bg2);
  color: var(--t1);
  user-select: none;
}

label.file-btn:hover {
  border-color: var(--acc2);
}

label.file-btn-v {
  border-color: rgba(0, 218, 90, 0.45);
  color: var(--brand-green-dark);
}

label.file-btn-v.file-btn-v-active:hover {
  border-color: var(--acc);
  color: var(--brand-green-dark);
  background: rgba(0, 218, 90, 0.08);
}

label.file-btn-v.file-btn-v-uploading {
  border-color: rgba(0, 218, 90, 0.8);
  background: rgba(0, 218, 90, 0.12);
  color: var(--brand-green-dark);
  pointer-events: none;
  opacity: 0.92;
  animation: file-btn-v-pulse 1.1s ease-in-out infinite;
}

@keyframes file-btn-v-pulse {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(0, 218, 90, 0.35);
  }
  50% {
    box-shadow: 0 0 0 6px rgba(0, 218, 90, 0.08);
  }
}

label.file-btn-s {
  border-color: rgba(200, 150, 0, 0.45);
  color: #7a5a00;
}

.file-name {
  font-size: 12px;
  color: var(--t3);
  max-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#upload-panel {
  scroll-margin-top: 72px;
}

/* ==================== 资产 @ 提及选择器 ==================== */
.asset-mention-picker {
  position: fixed;
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
  max-height: 400px;
  overflow: hidden;
  z-index: 1000;
  display: flex;
  flex-direction: column;
}

.asset-mention-header {
  padding: 10px;
  border-bottom: 1px solid var(--bd);
}

.asset-mention-search {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--bd);
  border-radius: 6px;
  background: var(--bg0);
  color: var(--t1);
  font-size: 14px;
  box-sizing: border-box;
}

.asset-mention-search:focus {
  outline: none;
  border-color: #78b4ff;
}

.asset-mention-list {
  overflow-y: auto;
  max-height: 340px;
  padding: 6px;
}

.asset-mention-item {
  display: flex;
  align-items: center;
  padding: 10px;
  cursor: pointer;
  border-radius: 6px;
  transition: background 0.15s;
  gap: 12px;
}

.asset-mention-item:hover {
  background: var(--bg2);
}

.asset-mention-thumb {
  width: 48px;
  height: 48px;
  border-radius: 4px;
  object-fit: cover;
  flex-shrink: 0;
}

.asset-mention-thumb-empty {
  background: var(--bg0);
  border: 1px dashed var(--bd);
}

.asset-mention-info {
  flex: 1;
  min-width: 0;
}

.asset-mention-name {
  font-size: 14px;
  font-weight: 500;
  color: var(--t1);
  margin-bottom: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.asset-mention-meta {
  font-size: 12px;
  color: var(--t3);
  display: flex;
  gap: 8px;
}

.asset-mention-type {
  padding: 2px 6px;
  background: var(--bg2);
  border-radius: 3px;
  font-size: 11px;
}

.asset-mention-section-title {
  font-size: 10px;
  font-weight: 600;
  color: var(--t3);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 6px 12px 3px;
  border-top: 1px solid var(--bd);
  margin-top: 2px;
}

.asset-mention-section-title:first-child {
  border-top: none;
  margin-top: 0;
}

.asset-mention-empty {
  padding: 20px;
  text-align: center;
  color: var(--t3);
  font-size: 13px;
}

/* ==================== 文件上传进度条 ==================== */
.upload-progress-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 9999;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
  animation: fadeIn 0.2s ease;
}

.upload-progress-modal {
  background: var(--bg1);
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  width: 90%;
  max-width: 480px;
  overflow: hidden;
  animation: slideUp 0.3s ease;
}

.upload-progress-modal.upload-error .upload-progress-header {
  background: linear-gradient(135deg, var(--danger), #ff7b7b);
}

.upload-progress-header {
  background: var(--bg2);
  padding: 20px;
  color: white;
  display: flex;
  align-items: center;
  gap: 12px;
}

.upload-progress-icon {
  font-size: 32px;
  line-height: 1;
  animation: bounce 2s ease-in-out infinite;
}

.upload-progress-title {
  margin: 0;
  font-size: 18px;
  font-weight: 600;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.upload-progress-body {
  padding: 24px;
}

.upload-progress-bar {
  width: 100%;
  height: 12px;
  background: var(--bg2);
  border-radius: 999px;
  overflow: hidden;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
  margin-bottom: 16px;
}

.upload-progress-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--brand-green), var(--brand-blue));
  border-radius: 999px;
  transition: width 0.3s ease;
  position: relative;
  overflow: hidden;
}

.upload-progress-bar-fill::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.3) 50%,
    transparent 100%
  );
  animation: shimmer 1.5s linear infinite;
}

.upload-progress-info {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 13px;
  color: var(--t2);
  margin-bottom: 8px;
  gap: 12px;
}

.upload-progress-info span:first-child {
  font-weight: 700;
  font-size: 16px;
  color: var(--brand-green);
}

.upload-progress-eta {
  font-size: 12px;
  color: var(--t3);
  text-align: center;
}

.upload-error-message {
  padding: 16px;
  background: rgba(255, 90, 90, 0.1);
  border: 1px solid rgba(255, 90, 90, 0.3);
  border-radius: 6px;
  color: var(--danger);
  font-size: 14px;
  line-height: 1.6;
  margin-bottom: 16px;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes slideUp {
  from {
    transform: translateY(30px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes bounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-5px);
  }
}

@keyframes shimmer {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(200%);
  }
}

/* ==================== 键盘快捷键样式 ==================== */
kbd {
  display: inline-block;
  padding: 3px 8px;
  font-family: ui-monospace, monospace;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  color: var(--t1);
  background: var(--bg2);
  border: 1px solid var(--bd);
  border-radius: 4px;
  box-shadow:
    0 1px 0 rgba(0, 0, 0, 0.1),
    inset 0 0 0 1px rgba(255, 255, 255, 0.5);
}

.shortcuts-help-modal {
  background: var(--bg1);
  border-radius: 12px;
  padding: 32px;
  max-width: 480px;
  width: 90%;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}

.shortcuts-help-modal h3 {
  margin: 0 0 24px 0;
  font-size: 22px;
  color: var(--t1);
  text-align: center;
}

.shortcuts-list {
  margin-bottom: 24px;
}

.shortcut-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  margin-bottom: 8px;
  background: var(--bg2);
  border-radius: 8px;
  transition: background 0.2s ease;
}

.shortcut-item:hover {
  background: rgba(0, 218, 90, 0.05);
}

.shortcut-item kbd {
  margin: 0 2px;
}

.shortcut-item span {
  color: var(--t2);
  font-size: 14px;
  margin-left: auto;
  padding-left: 16px;
}

.shortcuts-tip {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 1000;
  animation: slideInRight 0.3s ease;
  transition: opacity 0.3s ease;
}

.shortcuts-tip-content {
  background: var(--bg1);
  border: 1px solid var(--bd);
  border-left: 4px solid var(--brand-green);
  border-radius: 8px;
  padding: 16px 20px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 14px;
  color: var(--t1);
}

.shortcuts-tip-close {
  background: transparent;
  border: none;
  color: var(--t3);
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  transition: all 0.2s ease;
  flex-shrink: 0;
}

.shortcuts-tip-close:hover {
  background: rgba(0, 0, 0, 0.05);
  color: var(--t1);
}

@keyframes slideInRight {
  from {
    transform: translateX(400px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

/* ==================== 卡片风格增强 ==================== */

/* 卡片样式视频网格 */
.brand-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 20px;
  padding: 8px 0;
}

@media (min-width: 1400px) {
  .brand-grid {
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  }
}

/* 卡片样式卡片 */
.brand-card {
  position: relative;
  border-radius: 8px;
  overflow: hidden;
  background: var(--bg1);
  border: 1px solid var(--bd);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  cursor: pointer;
  aspect-ratio: 16 / 9;
}

.brand-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 12px 32px rgba(0, 218, 90, 0.15);
  border-color: var(--brand-green);
  z-index: 10;
}

.brand-card-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}

.brand-card:hover .brand-card-img {
  transform: scale(1.05);
}

.brand-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    transparent 40%,
    rgba(0, 0, 0, 0.7) 100%
  );
  opacity: 0;
  transition: opacity 0.3s ease;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 16px;
}

.brand-card:hover .brand-card-overlay {
  opacity: 1;
}

.brand-card-title {
  color: white;
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 6px 0;
}

.brand-card-meta {
  color: rgba(255,255,255,0.08);
  font-size: 12px;
}

/* 品牌播放按钮 */
.brand-play-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 56px;
  height: 56px;
  background: rgba(0, 218, 90, 0.9);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: all 0.3s ease;
  box-shadow: 0 4px 12px rgba(0, 218, 90, 0.4);
}

.brand-card:hover .brand-play-btn {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1.1);
}

.brand-play-btn::after {
  content: '▶';
  color: white;
  font-size: 22px;
  margin-left: 3px;
}

/* VIP 标签 */
.brand-vip-badge {
  position: absolute;
  top: 8px;
  right: 8px;
  background: linear-gradient(135deg, var(--brand-orange), #ff6a00);
  color: white;
  font-size: 11px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 12px;
  text-transform: uppercase;
  box-shadow: 0 2px 8px rgba(255, 138, 0, 0.4);
}

/* 时间码显示样式 */
.timecode {
  font-family: 'Courier New', monospace;
  font-weight: 700;
  color: var(--t1);
  background: rgba(0, 0, 0, 0.7);
  padding: 4px 8px;
  border-radius: 2px;
  font-size: 12px;
  letter-spacing: 0.05em;
}

/* 进度条 */
.pb {
  position: relative;
  box-shadow: none;
  background: rgba(0, 218, 90, 0.15);
}

.pbf {
  position: relative;
  overflow: hidden;
  background: linear-gradient(90deg, var(--brand-green), var(--brand-blue));
  transition: width 0.3s ease;
  box-shadow: 0 0 8px rgba(0, 218, 90, 0.4);
}

/* 面板标题栏视频制作风格 */
.panel-header-cinema {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: linear-gradient(90deg, rgba(255, 140, 66, 0.08) 0%, transparent 100%);
  border-bottom: 1px solid var(--bd);
  position: relative;
}

.panel-header-cinema::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--video-orange), var(--video-teal));
}

/* 状态指示灯 */
.status-indicator {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: inline-block;
  margin-right: 8px;
  position: relative;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.3);
}

.status-indicator.recording {
  background: var(--danger);
  animation: recording-blink 1.2s ease-in-out infinite;
}

.status-indicator.processing {
  background: var(--brand-orange);
  animation: processing-rotate 2s linear infinite;
}

.status-indicator.ready {
  background: var(--brand-green);
  box-shadow: 0 0 8px var(--brand-green);
}

@keyframes recording-blink {
  0%, 100% {
    opacity: 1;
    box-shadow: 0 0 8px var(--danger);
  }
  50% {
    opacity: 0.3;
    box-shadow: 0 0 0 var(--danger);
  }
}

@keyframes processing-rotate {
  0% {
    transform: rotate(0deg);
    border-radius: 50%;
  }
  25% {
    border-radius: 40%;
  }
  50% {
    transform: rotate(180deg);
    border-radius: 50%;
  }
  75% {
    border-radius: 40%;
  }
  100% {
    transform: rotate(360deg);
    border-radius: 50%;
  }
}

/* 帧标记样式 */
.frame-marker {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 4px;
  background: rgba(91, 156, 255, 0.1);
  border: 1px solid rgba(91, 156, 255, 0.3);
  font-family: 'Courier New', monospace;
  font-size: 11px;
  font-weight: 600;
  color: var(--timeline-blue);
}

.frame-marker::before {
  content: '⏱';
  font-size: 12px;
}

/* 分镜网格叠加效果 */
.storyboard-grid-overlay {
  position: relative;
}

.storyboard-grid-overlay::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(91, 156, 255, 0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(91, 156, 255, 0.03) 1px, transparent 1px);
  background-size: 20px 20px;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.storyboard-grid-overlay:hover::before {
  opacity: 1;
}

/* ── 视频生成页“回到顶部”按钮 ──
   fixed 右上角；越过“集数选择”(.sb-col-ep)区域后淡入。
   按钮挂在 #v-g 内，父级 .vw{display:none} 自动在非视频视图隐藏。
   z-index 90 < 模态遮罩(100+)，弹窗打开时自然被盖住。 */
.sb-back-top {
  position: fixed;
  top: 80px;
  right: 16px;
  z-index: 90;
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  margin: 0;
  border: none;
  border-radius: 50%;
  background: var(--brand-green, var(--acc));
  color: #fff;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0, 218, 90, 0.3);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(8px);
  transition: opacity 0.2s ease, transform 0.2s ease,
    background-color 0.15s ease, box-shadow 0.15s ease;
}
.sb-back-top--visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}
.sb-back-top:hover {
  background: var(--brand-green-hover, #00d407);
  box-shadow: 0 6px 16px rgba(0, 218, 90, 0.4);
}
.sb-back-top:active {
  background: var(--brand-green-dark, var(--brand-green-dark));
}
.sb-back-top:focus-visible {
  outline: 2px solid var(--brand-green, var(--acc));
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .sb-back-top,
  .sb-back-top--visible {
    transition: none;
    transform: none;
  }
}

/* === 深色主题 风格形状增强（2026-06-23：大圆角 + 玻璃质感 + 深阴影）=== */
/* 主要面板/卡片统一大圆角（设计卡片 16-20px）*/
.panel,
.asset-card, .shot-card, .char-outfit-card, .blank-outfit-card, .brand-card, .agent-entry-card,
.asset-ai-panel, .asset-merge-panel,
.sb-col-main, .sb-col-ep, .sb-col-shots,
.del-confirm-box, .asset-img-lightbox-panel {
  border-radius: var(--radius-lg);
}
/* 弹窗/模态更大圆角 */
.asset-history-modal, .asset-library-modal, .asset-merge-modal, .modal, .modal-content {
  border-radius: var(--radius-card);
}
/* 卡片玻璃化（半透明底 + 模糊 + 半透明边框 + 深阴影）*/
.asset-card, .shot-card, .char-outfit-card, .brand-card, .agent-entry-card {
  background: var(--glass);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid var(--bd);
  box-shadow: var(--shadow-strong);
}
/* 面板玻璃化（半透明深底 + 模糊）*/
.panel, .asset-ai-panel, .asset-merge-panel,
.sb-col-main, .sb-col-ep, .sb-col-shots {
  background: rgba(36, 36, 36, 0.72);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid var(--bd);
}

/* === topnav 三段式重构（对齐设计：左品牌 / 中4功能 / 右积分+团队切换器）=== */
.topnav { justify-content: space-between; }
.topnav-left { flex-shrink: 0; display: flex; align-items: center; }
.topnav .brand {
  font-size: 17px; font-weight: 700; letter-spacing: 0.5px;
  color: var(--cyan-light); background: none; cursor: pointer;
}
.topnav-steps { flex: 1; justify-content: center; }
.topnav-right { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.user-score-trigger {
  display: flex; align-items: center; gap: 5px;
  padding: 6px 14px; border-radius: var(--radius-md);
  background: var(--glass); border: 1px solid var(--bd);
  color: var(--cyan-light); font-size: 13px; cursor: pointer;
  transition: border-color 0.2s;
}
.user-score-trigger:hover { border-color: var(--cyan); }
.user-score-icon { color: var(--cyan); font-size: 11px; }
.user-trigger {
  display: flex; align-items: center; gap: 8px;
  padding: 3px 12px 3px 3px; border-radius: var(--radius-card);
  background: var(--glass); border: 1px solid var(--bd);
  cursor: pointer; transition: border-color 0.2s;
}
.user-trigger:hover { border-color: var(--cyan); }
.user-trigger-team-initial {
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--cta-gradient); color: var(--cta-text);
  font-weight: 700; display: flex; align-items: center; justify-content: center; font-size: 13px;
}
.user-trigger-team-name { color: var(--t1); font-size: 13px; }
.user-account-badge {
  background: var(--brand-green); color: #000; font-size: 10px;
  padding: 1px 6px; border-radius: var(--radius-sm); font-weight: 600;
}
/* 项目列表页时隐藏中间 4 功能 step（body.on-plist 由 sw 注入）*/
body.on-plist .topnav-steps { display: none; }

/* === 项目列表页 v-plist（对齐设计 project-creation）=== */
.plist-wrap { max-width: 1280px; margin: 0 auto; padding: 32px 24px 64px; }
.plist-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 28px; }
.plist-title { font-size: 24px; font-weight: 600; color: var(--t1); margin: 0; }
.plist-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px;
}
.plist-card {
  background: var(--glass); border: 1px solid var(--bd); border-radius: var(--radius-card);
  overflow: hidden; cursor: pointer; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  transition: transform 0.2s, border-color 0.2s, box-shadow 0.2s;
}
.plist-card:hover { transform: translateY(-3px); border-color: var(--cyan); box-shadow: var(--shadow-strong); }
.plist-card-thumb {
  aspect-ratio: 16 / 9; background: linear-gradient(135deg, #2e2e2e, #1a1a1a);
  position: relative; display: flex; align-items: center; justify-content: center;
}
.plist-card-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.plist-done { color: var(--brand-green); font-size: 32px; font-weight: 700; }
.plist-prog { color: var(--cyan-light); font-size: 22px; font-weight: 700; }
.plist-card-body { padding: 14px 16px 16px; }
.plist-card-name { color: var(--t1); font-size: 15px; font-weight: 500; margin-bottom: 6px; }
.plist-card-meta { color: var(--t3); font-size: 12px; margin-bottom: 8px; }
.plist-card-space { color: var(--cyan-light); font-size: 12px; display: inline-flex; align-items: center; gap: 4px; }

/* === CTA 按钮（设计青绿渐变招牌，黑字）=== */
.cta-btn {
  background: var(--cta-gradient); color: var(--cta-text);
  border: none; border-radius: var(--radius);
  padding: 9px 20px; font-size: 14px; font-weight: 600;
  cursor: pointer; display: inline-flex; align-items: center; gap: 6px;
  transition: opacity 0.2s, transform 0.15s;
}
.cta-btn:hover { opacity: 0.9; transform: translateY(-1px); }
.cta-btn:active { transform: translateY(0); }
.cta-plus { font-size: 16px; line-height: 1; }

/* === 顶栏积分胶囊（对齐设计：积分+无限 | 购买积分，胶囊分两半）=== */
.svg-icon { display: inline-block; vertical-align: middle; fill: currentColor; width: 1em; height: 1em; }
.user-score-trigger {
  display: inline-flex; align-items: center;
  border-radius: var(--radius-card); background: var(--glass);
  border: 1px solid var(--bd); overflow: hidden;
}
.uss-btn {
  background: transparent; border: none; cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 10px; color: var(--t1); font-size: 13px;
  transition: background 0.2s;
}
.uss-left { border-radius: 18px 0 0 18px; }
.uss-right { border-radius: 0 18px 18px 0; }
.uss-left .svg-icon { width: 16px; height: 16px; color: var(--brand-green); }
.uss-div { width: 1px; height: 14px; background: rgba(255,255,255,0.2); flex-shrink: 0; }
.uss-btn:hover { background: rgba(255,255,255,0.06); }
.uss-btn:disabled { color: rgba(255,255,255,0.25); cursor: not-allowed; }
/* 团队切换器下拉箭头 */
.user-trigger .ut-arrow { width: 12px; height: 12px; color: var(--t1); margin-left: 2px; flex-shrink: 0; }

/* === 顶栏 logo + Drama Remake 标签（对齐设计 app-topnav-logo）=== */
.topnav-left { gap: 12px; }
.app-logo-icon { width: 80px; height: 24px; color: var(--t1); display: block; }
.topnav-divider { color: rgba(255,255,255,0.2); }
.drama-remake-tag { color: var(--t1); font-size: 15px; font-weight: 600; letter-spacing: 0.3px; }
.topnav-project-name { color: var(--t3); font-size: 13px; font-weight: 400; margin-left: 2px; }
.topnav-role-badge { display: inline-flex; align-items: center; margin-left: 8px; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 500; user-select: none; white-space: nowrap; }
.topnav-role-badge.is-admin { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.12); border: 1px solid rgba(0,218,90,0.35); cursor: pointer; }
.topnav-role-badge.is-admin:hover { background: rgba(0,218,90,0.2); border-color: rgba(0,218,90,0.55); }
.topnav-role-badge.is-member { color: var(--t3); background: rgba(255,255,255,0.06); border: 1px solid var(--bd); cursor: pointer; }
.topnav-role-badge.is-member:hover { color: var(--t1); background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.22); }
.topnav-project-info:not(:empty)::before { content: '· '; color: var(--t3); }

/* === hover/active 改半透明白（对齐设计 app-hover-active-gray，减绿色强调）=== */
.uss-btn:hover, .user-trigger:hover { background: rgba(255,255,255,0.08); }
.uss-btn:active { background: rgba(255,255,255,0.12); }
.topnav .step { transition: background 0.2s, color 0.2s; border-radius: var(--radius); }
.topnav .step:hover { background: rgba(255,255,255,0.08); }
.topnav .step.on { background: rgba(255,255,255,0.1); }

/* === 左侧设计主导航（胶囊 shell，对齐 app-aside-nav-menu）=== */
.app-aside { position: fixed; top: 76px; left: 16px; bottom: 16px; z-index: 40; }
.app-aside-shell {
  width: 64px; padding: 4px; display: flex; flex-direction: column; align-items: center; gap: 4px;
  background: rgb(31, 31, 31); border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 999px;
}
.app-aside-item {
  width: 56px; height: 70px; border: none; background: transparent; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  border-radius: 50px; color: rgba(255, 255, 255, 0.6); transition: background 0.2s, color 0.2s;
}
.app-aside-item:hover { background: rgba(255, 255, 255, 0.05); color: rgba(255, 255, 255, 1); }
.app-aside-item.is-active { color: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 0.1); }
.app-aside-icon .svg-icon { width: 22px; height: 22px; }
.app-aside-label { font-size: 10px; line-height: 1; }
.app-aside-divider { width: 32px; height: 1px; background: rgba(255, 255, 255, 0.08); margin: 4px 0; }
.app-aside-drama .app-aside-label { color: var(--brand-green); font-weight: 600; }
/* 工作台（非 plist）隐藏左侧 nav */
body:not(.on-plist) .app-aside { display: none; }
/* 项目列表页主内容左让出 nav */
body.on-plist .plist-wrap { padding-left: 96px; }

/* === 修正（2026-06-23）：左侧 nav 去呼吸光标 + 垂直居中 === */
.app-aside { top: 50%; bottom: auto; transform: translateY(-50%); }
.app-aside-item.is-active { background: transparent; }
.app-aside-item.is-active .app-aside-label,
.app-aside-item.is-active .svg-icon { color: rgba(255, 255, 255, 1); }

/* === 修正：顶栏按钮圆角/高度紧凑（对齐设计 header 60px，不过圆过大）=== */
.uss-left { border-radius: 8px 0 0 8px; }
.uss-right { border-radius: 0 8px 8px 0; }
.uss-btn { padding: 4px 10px; font-size: 12px; }
.user-score-trigger { border-radius: 10px; }
.user-trigger { border-radius: 10px; padding: 2px 10px 2px 3px; }
.user-trigger-team-initial { width: 24px; height: 24px; font-size: 12px; }
.user-trigger-team-name { font-size: 12px; }
.user-account-badge { font-size: 10px; padding: 1px 5px; }

/* === 修正：topnav step 去绿色阴影，简洁白色背景 === */
.topnav .step { padding: 6px 14px; border-radius: 8px; font-size: 13px; box-shadow: none !important; border: 1px solid transparent !important; }
.topnav .step.on { background: rgba(255, 255, 255, 0.1); box-shadow: none !important; border: 1px solid transparent !important; color: var(--t1); }
.topnav .step:hover { background: rgba(255, 255, 255, 0.08); box-shadow: none !important; }
.topnav .step .sn { background: rgba(255, 255, 255, 0.1); color: var(--t1); }

/* === 去掉 brand 橙色脉冲呼吸点 === */
.brand::before { display: none !important; content: none !important; animation: none !important; }

/* === 返回项目列表按钮（仅工作台显示）=== */
.topnav-back {
  display: none;
  background: transparent; border: 1px solid var(--bd); color: var(--t2);
  padding: 4px 12px; border-radius: var(--radius); cursor: pointer;
  font-size: 12px; transition: background 0.2s, color 0.2s;
}
.topnav-back:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
body:not(.on-plist) .topnav-back { display: inline-flex; align-items: center; }

/* === 项目卡（对齐设计 space-brandnew-item-card）=== */
.space-card {
  position: relative; background: var(--glass); border: 1px solid var(--bd);
  border-radius: var(--radius-card); overflow: hidden;
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  transition: transform 0.2s, border-color 0.2s, box-shadow 0.2s;
}
.space-card:hover { transform: translateY(-2px); border-color: rgba(255,255,255,0.2); box-shadow: var(--shadow-strong); }
.space-card-action {
  position: absolute; width: 28px; height: 28px; border-radius: 50%;
  border: none; background: rgba(0,0,0,0.5); color: rgba(255,255,255,0.8);
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  z-index: 2; opacity: 0; transition: opacity 0.2s, background 0.2s, color 0.2s;
}
.space-card:hover .space-card-action { opacity: 1; }
.space-card-action:hover { background: rgba(255,255,255,0.12); color: #fff; }
.space-card-action .svg-icon { width: 16px; height: 16px; }
.space-card-select { top: 8px; left: 8px; }
.space-card-favorite { top: 8px; right: 8px; }
.space-card-cover { position: relative; aspect-ratio: 16 / 9; cursor: pointer; }
.space-card-cover-bg { position: absolute; inset: 0; }
.space-card-done, .space-card-prog {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);
  font-weight: 700; font-size: 20px;
}
.space-card-done { color: var(--brand-green); font-size: 32px; }
.space-card-prog { color: rgba(255,255,255,0.85); }
.space-card-footer { display: flex; align-items: center; gap: 10px; padding: 12px 14px; }
.space-card-type-icon .svg-icon { width: 18px; height: 18px; color: var(--brand-green); flex-shrink: 0; }
.space-card-text { flex: 1; min-width: 0; }
.space-card-title { display: block; color: var(--t1); font-size: 14px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 2px; }
.space-card-text small { color: var(--t3); font-size: 11px; }
.space-card-more { position: relative; flex-shrink: 0; }
.space-card-more-btn { position: static; opacity: 0.5; background: transparent; }
.space-card-more-btn:hover { opacity: 1; }
.space-card-menu {
  position: absolute; right: 0; top: calc(100% + 4px); z-index: 10;
  min-width: 150px; padding: 4px; display: none;
  background: var(--bg2); border: 1px solid var(--bd); border-radius: var(--radius);
  box-shadow: var(--shadow-strong);
}
.space-card-menu.open { display: block; }
.space-card-menu button {
  display: block; width: 100%; text-align: left; padding: 8px 12px;
  background: transparent; border: none; color: var(--t2); font-size: 13px;
  cursor: pointer; border-radius: var(--radius-sm);
}
.space-card-menu button:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
.space-card-menu button.danger { color: var(--danger); }
.space-card-menu button.danger:hover { background: rgba(245,108,108,0.12); }

/* === 修正：项目卡更多菜单被裁切（卡片 overflow visible，封面单独裁）=== */
.space-card { overflow: visible; }
.space-card-cover { overflow: hidden; border-radius: 20px 20px 0 0; }
.space-card-footer { position: relative; }

/* === 封面图（生成结果图片）=== */
.space-card-cover-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.space-card-cover { position: relative; aspect-ratio: 16 / 9; cursor: pointer; background: #1a1a1a; }

/* === 转化方向标签（多个）=== */
.space-card-dirs { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.dir-tag {
  font-size: 11px; padding: 1px 8px; border-radius: var(--radius-sm);
  background: rgba(0, 218, 90, 0.12); color: var(--brand-green);
  border: 1px solid rgba(0, 218, 90, 0.25);
}

/* === HD 面板精简为视图操作条（标题去 topnav 已有，仅保留功能按钮靠右）=== */
.hd {
  display: flex; justify-content: flex-start; align-items: stretch;
  gap: 8px; flex-wrap: wrap; padding: 4px 0 8px; margin-bottom: 4px;
  background: transparent !important; border: none !important;
  box-shadow: none !important; border-radius: 0;
}
.hd > .batch-panel { flex: 1 1 100%; width: 100%; }
.agent-entry-title { font-size: 16px; font-weight: 600; color: var(--t1); }

/* === 剧集列表滚动 === */
.vp-upload-details-body { max-height: 480px; overflow-y: auto; }

/* === 集数列预览按钮（小，不过大）=== */
.ep-preview-cell { display: flex; gap: 4px; margin-top: 6px; }
.ep-preview-btn {
  padding: 2px 8px; font-size: 11px; line-height: 1.5;
  background: transparent; border: 1px solid var(--bd); color: var(--t2);
  border-radius: var(--radius-sm); cursor: pointer;
}
.ep-preview-btn:hover { background: rgba(255,255,255,0.08); color: var(--t1); border-color: rgba(255,255,255,0.2); }

/* === 预览 modal === */
.preview-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.preview-modal[hidden] { display: none; }
.preview-modal-bg { position: absolute; inset: 0; background: rgba(0,0,0,0.7); backdrop-filter: blur(2px); }
.preview-modal-box { position: relative; background: var(--bg2); border: 1px solid var(--bd); border-radius: var(--radius-lg); padding: 18px 22px; min-width: 420px; max-width: 80vw; box-shadow: var(--shadow-strong); }
.preview-modal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; font-size: 15px; font-weight: 600; color: var(--t1); }
.preview-modal-head button { background: transparent; border: none; color: var(--t3); font-size: 22px; cursor: pointer; line-height: 1; }
.preview-modal-head button:hover { color: var(--t1); }

/* === 转化方向选择器（素材导入面板）=== */
.target-selector { display: flex; align-items: center; gap: 12px; margin: 14px 0 4px; flex-wrap: wrap; }
.target-label { font-size: 13px; color: var(--t2); font-weight: 500; }
.target-options { display: flex; gap: 6px; }
.target-opt { padding: 4px 14px; font-size: 13px; border: 1px solid var(--bd); border-radius: var(--radius); color: var(--t2); cursor: pointer; background: transparent; transition: background 0.15s, color 0.15s, border-color 0.15s; }
.target-opt input { display: none; }
.target-opt.on { background: rgba(255,255,255,0.1); color: var(--t1); border-color: rgba(255,255,255,0.25); }
.target-opt:hover { background: rgba(255,255,255,0.06); }
.target-hint { font-size: 11px; color: var(--t3); flex-basis: 100%; }
/* 新增转化方向按钮 */
.dir-add-btn { margin-left: 12px; padding: 4px 12px; font-size: 12px; background: transparent; border: 1px dashed var(--bd); color: var(--t2); border-radius: var(--radius); cursor: pointer; }
.dir-add-btn:hover { background: rgba(255,255,255,0.06); color: var(--t1); border-color: rgba(255,255,255,0.25); }

/* === 项目卡紧凑化（不过大）=== */
.plist-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)) !important; gap: 16px !important; }
.space-card-cover { aspect-ratio: 16 / 10; }
.space-card-footer { padding: 10px 12px; }
.space-card-title { font-size: 13px; }
.space-card-text small { font-size: 10px; }
/* 更多菜单浮于其他卡片之上 */
.space-card { z-index: auto; }
.space-card:has(.space-card-menu.open) { z-index: 50; }
.space-card-menu { z-index: 50; }

/* === 剧集预览按钮（列内，紧贴上传按钮）=== */
.file-btn-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ep-preview-btn { padding: 3px 9px; font-size: 11px; line-height: 1.4; background: transparent; border: 1px solid var(--bd); color: var(--t2); border-radius: var(--radius-sm); cursor: pointer; white-space: nowrap; }
.ep-preview-btn:hover { background: rgba(255,255,255,0.08); color: var(--t1); border-color: rgba(255,255,255,0.2); }
.ep-preview-cell { display: none; } /* 旧的集数列预览容器隐藏 */

/* === 剧集列表设计风格（表格）=== */
.vp-upload-details > summary { font-size: 14px; font-weight: 600; color: var(--t1); }
.tbl { background: transparent; }
.tbl th { background: rgba(255,255,255,0.04); color: var(--t3); font-weight: 500; font-size: 12px; }
.tbl td { color: var(--t2); }
.file-btn { font-size: 12px; }

/* === 进度条设计风格（适配深色 + 圆角）=== */
.analyze-status-bar { background: rgba(255,255,255,0.08); border-radius: 999px; height: 6px; overflow: hidden; flex: 1; }
.analyze-status-bar > span { display: block; height: 100%; background: linear-gradient(90deg, var(--brand-green), var(--cyan)); border-radius: 999px; transition: width 0.3s; }
.analyze-status-badge { color: var(--brand-green); font-size: 12px; }
.pb { background: rgba(255,255,255,0.08); border-radius: 999px; height: 6px; overflow: hidden; display: inline-block; vertical-align: middle; width: 120px; }
.pbf { display: block; height: 100%; background: linear-gradient(90deg, var(--brand-green), var(--cyan)); border-radius: 999px; }
.analyze-cta-bar { background: var(--glass); border: 1px solid var(--bd); border-radius: var(--radius); padding: 10px 14px; display: flex; align-items: center; gap: 12px; }
.btn-analyze-done { background: rgba(255,255,255,0.06); color: var(--t3); border: 1px solid var(--bd); }

/* === topnav 转化方向（子项）=== */
.topnav-subproject { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }
.topnav-dir-label { color: var(--t3); }
.topnav-dir-current { color: var(--brand-green); font-weight: 600; }
.topnav-dir-switch { background: transparent; border: 1px solid var(--bd); color: var(--t2); padding: 3px 10px; border-radius: var(--radius); cursor: pointer; font-size: 12px; }
.topnav-dir-switch:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
body.on-plist .topnav-subproject { display: none; }

/* === Demo 状态切换器（悬浮外侧，非产品功能）=== */
.demo-state-switcher { position: fixed; right: 16px; bottom: 16px; z-index: 200; }
.dss-toggle { background: rgba(0,0,0,0.7); color: var(--t3); border: 1px solid var(--bd); border-radius: var(--radius); padding: 6px 12px; font-size: 12px; cursor: pointer; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.dss-toggle:hover { color: var(--t1); background: rgba(255,255,255,0.08); }
.dss-panel { position: absolute; right: 0; bottom: 100%; margin-bottom: 8px; background: var(--bg2); border: 1px solid var(--bd); border-radius: var(--radius); padding: 12px; min-width: 180px; box-shadow: var(--shadow-strong); }
.dss-panel[hidden] { display: none; }
.dss-title { font-size: 11px; color: var(--t3); margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.5px; }
.dss-opt { display: block; width: 100%; text-align: left; padding: 6px 10px; margin-bottom: 4px; background: transparent; border: 1px solid transparent; color: var(--t2); font-size: 13px; cursor: pointer; border-radius: var(--radius-sm); }
.dss-opt:hover { background: rgba(255,255,255,0.06); color: var(--t1); }
.dss-opt.on { background: rgba(255,255,255,0.1); color: var(--t1); border-color: rgba(255,255,255,0.15); }

/* === 解析状态：分析完成后锁定素材导入（任务5）=== */
.agent-entry-card.parse-done .agent-dropzones { opacity: 0.4; pointer-events: none; filter: grayscale(0.4); }
.agent-entry-card.parse-done .target-selector { opacity: 0.5; pointer-events: none; }
.agent-entry-card.parse-parsing .agent-dropzones { opacity: 0.7; }

/* === bug3: 去掉项目卡完成对勾 === */
.space-card-done { display: none; }

/* === bug5: 解析完成直接隐藏上传板块（非灰色）=== */
.agent-entry-card.parse-done .agent-dropzones,
.agent-entry-card.parse-done .target-selector { display: none !important; }

/* === bug6: 解析进度条横向占满 === */
.analyze-cta-bar { width: 100%; }
.parse-board { width: 100%; }

/* === bug1: 切换器大按钮（更显眼）+ 仅 v-p 显示 === */
.demo-state-switcher { display: none; }
.dss-toggle { padding: 10px 18px; font-size: 13px; font-weight: 600; }

/* === bug4: 转化方向子项面板（下方独立，不挤 topnav）=== */
.subproject-bar { display: flex; align-items: center; gap: 12px; padding: 12px 18px; margin-bottom: 12px; background: var(--glass); border: 1px solid var(--bd); border-radius: var(--radius); flex-wrap: wrap; }
.sp-label { color: var(--t3); font-size: 13px; }
.sp-current { color: var(--brand-green); font-weight: 600; font-size: 15px; }
.sp-switch { background: transparent; border: 1px solid var(--bd); color: var(--t2); padding: 5px 14px; border-radius: var(--radius); cursor: pointer; font-size: 13px; }
.sp-switch:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
.sp-hint { color: var(--t3); font-size: 11px; flex-basis: 100%; }

/* === bug7: 解析看板横排（色块标签左 + 单集网格右），紧贴进度下方 === */
.parse-board { display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap; padding: 12px 16px; }
.parse-board > .sbar { flex: 0 0 auto; flex-direction: column; gap: 6px; }
.parse-board > .eb { flex: 1 1 300px; min-width: 0; }

/* 切换器默认显示（在 v-p 内，由 v-p 控制显隐）*/
.demo-state-switcher { display: block; }

/* === 转化方向子项选择 modal === */
.target-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.target-modal[hidden] { display: none; }
.target-modal-bg { position: absolute; inset: 0; background: rgba(0,0,0,0.7); backdrop-filter: blur(2px); }
.target-modal-box { position: relative; background: var(--bg2); border: 1px solid var(--bd); border-radius: var(--radius-lg); padding: 18px 22px; min-width: 360px; box-shadow: var(--shadow-strong); }
.target-modal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; font-size: 15px; font-weight: 600; color: var(--t1); }
.target-modal-head button { background: transparent; border: none; color: var(--t3); font-size: 22px; cursor: pointer; }
.target-modal-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 14px; margin-bottom: 6px; background: rgba(255,255,255,0.03); border: 1px solid var(--bd); border-radius: var(--radius); cursor: pointer; transition: background 0.15s, border-color 0.15s; }
.target-modal-item:hover { background: rgba(255,255,255,0.08); }
.target-modal-item.on { background: rgba(0,218,90,0.12); border-color: var(--brand-green); }
.tmi-name { color: var(--t1); font-size: 14px; font-weight: 500; }
.tmi-status { color: var(--t3); font-size: 11px; padding: 2px 8px; border-radius: 10px; background: rgba(255,255,255,0.05); border: 1px solid var(--bd); }
.tmi-status.is-done { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.12); border-color: rgba(0,218,90,0.3); font-weight: 600; }
.tmi-check { color: var(--brand-green, #00DA5A); font-size: 15px; font-weight: 700; margin-left: 6px; }
.target-modal-new { width: 100%; margin-top: 8px; padding: 10px; background: transparent; border: 1px dashed var(--bd); color: var(--t2); border-radius: var(--radius); cursor: pointer; font-size: 13px; }
.target-modal-new:hover { background: rgba(255,255,255,0.06); color: var(--t1); }

/* === 问题4: 剧集列表按钮统一对齐 === */
.file-btn, .ep-preview-btn {
  padding: 4px 10px !important; font-size: 12px !important; line-height: 1.4 !important;
  height: 26px; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--bd); border-radius: var(--radius-sm);
  background: transparent; color: var(--t2); cursor: pointer; white-space: nowrap;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.file-btn:hover, .ep-preview-btn:hover { background: rgba(255,255,255,0.08); color: var(--t1); border-color: rgba(255,255,255,0.2); }
.file-btn-v-active { background: rgba(255,255,255,0.06); color: var(--t1); }
.file-name { font-size: 12px; color: var(--t3); }
.file-btn-row { gap: 8px !important; }

/* === 问题1+3: 解析进度看板合并（cta-bar 在 parse-board 内顶部）=== */
.parse-board { display: flex; flex-direction: column; gap: 14px; padding: 16px; }
.analyze-cta-bar {
  flex-wrap: wrap; align-items: center; gap: 10px 14px;
  padding: 0; margin: 0; background: transparent; border: none; width: 100%;
}
.analyze-status-badge { font-size: 13px; font-weight: 500; }
.btn-analyze-full, .btn-analyze-done { margin-left: auto; padding: 6px 16px; font-size: 13px; border-radius: var(--radius); }
/* 进度条独立条带（badge+按钮一行，进度条下方占满）*/
.analyze-status-bar { flex-basis: 100%; order: 99; height: 8px; margin-top: 2px; }
/* 单集状态横排（色块左 + 集网格右）*/
.parse-board > .sbar { flex: 0 0 auto; flex-direction: column; gap: 6px; padding-top: 8px; border-top: 1px solid var(--bd); }
.parse-board > .eb { flex: 1; min-width: 0; padding-top: 8px; border-top: 1px solid var(--bd); }

/* 强制进度条独占一行占满 */
.analyze-cta-bar { flex-wrap: wrap !important; }
.analyze-status-bar { flex: 0 0 100% !important; width: 100% !important; max-width: 100% !important; }

/* === sbar 单集图例横排 === */
.parse-board > .sbar { flex-direction: row !important; flex-wrap: wrap; gap: 10px 18px !important; align-items: center; padding-top: 10px; }
.parse-board > .sbar > div { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--t2); white-space: nowrap; }

/* === 顶栏右侧精确复刻设计（高32px 圆角12px，两者统一）=== */
.user-score-trigger { height: 32px; border-radius: 12px; }
.uss-btn { padding: 0 8px; font-size: 14px; height: 32px; box-sizing: border-box; }
.uss-left { border-radius: 12px 0 0 12px; }
.uss-right { border-radius: 0 12px 12px 0; font-size: 14px; }
.uss-left .svg-icon { width: 16px; height: 16px; }
.uss-div { width: 1px; height: 14px; }

.user-trigger { height: 32px; border-radius: 12px; padding: 0 12px; box-sizing: border-box; }
.user-trigger-team-initial { width: 20px; height: 20px; font-size: 12px; }
.user-trigger-team-name { font-size: 14px; }
.user-account-badge { font-size: 12px; border-radius: 6px; padding: 2px 8px; }
.user-trigger .ut-arrow { width: 12px; height: 12px; }

/* === 问题1: topnav 背景纯黑（对齐设计 header rgb(0,0,0)）=== */
.topnav { background: #000 !important; border-bottom: 1px solid rgba(255,255,255,0.06); }

/* === 问题3: 去 sr/.sc 左侧绿色块（设计面板无左侧高亮）=== */
.sc { border-left: none !important; padding-left: 14px !important; }

/* === 问题6: 减 parse-board 分隔线（sbar/eb 去除多余 border-top）=== */
.parse-board > .sbar, .parse-board > .eb { border-top: none !important; padding-top: 0 !important; }
.parse-board { gap: 10px; }

/* === 解析结果预览面板 === */
.parse-result-preview { background: var(--glass); border: 1px solid var(--bd); border-radius: var(--radius); padding: 14px 16px; margin-top: 12px; }
.prp-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.prp-title { font-size: 14px; font-weight: 600; color: var(--t1); }
.prp-section { margin-bottom: 12px; }
.prp-section:last-child { margin-bottom: 0; }
.prp-label { font-size: 12px; color: var(--cyan-light); margin-bottom: 5px; font-weight: 500; }
.prp-content { font-size: 13px; color: var(--t2); line-height: 1.7; }

/* === 进度看板标识更清晰 === */
.analyze-status-badge { font-size: 14px !important; font-weight: 600 !important; }
.parse-board > .sbar > div { font-size: 13px; font-weight: 500; color: var(--t2); }

/* === 进度看板清晰标签（整体解析进度 + 已完成解析 同行对齐）=== */
.progress-label {
  font-size: 13px; font-weight: 600; color: var(--cyan-light);
  letter-spacing: 0.3px;
  display: inline-flex; align-items: center; white-space: nowrap;
}
.analyze-cta-bar { gap: 10px 14px; align-items: center; }
.analyze-cta-bar .progress-label,
.analyze-cta-bar .analyze-status-badge,
.analyze-cta-bar .progress-percent { line-height: 1; }
.parse-board > .sbar { align-items: center; }

/* === 统一字体大小（全局面板文字对齐）=== */
.prp-title, .parse-board .progress-label { font-size: 13px !important; }
.prp-label { font-size: 13px !important; }
.prp-content, .prp-sub-text { font-size: 13px !important; line-height: 1.7 !important; color: var(--t2) !important; }
.prp-sub-label { font-size: 12px !important; color: var(--t3) !important; font-weight: 500; }
.analyze-status-badge, .progress-percent { font-size: 13px !important; }
.parse-board > .sbar > div { font-size: 13px !important; }
.file-btn, .ep-preview-btn { font-size: 12px !important; }

/* 进度百分比 */
.progress-percent { color: var(--brand-green); font-weight: 600; white-space: nowrap; }

/* 剧情梗概子字段（背景/人物关系/核心冲突等）*/
.prp-subsections { display: flex; flex-direction: column; gap: 10px; }
.prp-sub { display: flex; gap: 10px; align-items: flex-start; }
.prp-sub-label { flex-shrink: 0; min-width: 70px; padding-top: 1px; }
.prp-sub-text { flex: 1; }

/* === 文字调大（之前太小）=== */
.prp-content { font-size: 14px !important; line-height: 1.8 !important; color: var(--t2) !important; }
.prp-sub-text { font-size: 14px !important; line-height: 1.8 !important; }
.prp-sub-label { font-size: 13px !important; }
.prp-label { font-size: 14px !important; font-weight: 600 !important; color: var(--cyan-light) !important; }
.prp-title { font-size: 15px !important; }

/* === 完整故事概要：按 10 集分组，集数药丸标识 === */
.prp-story { display: flex; flex-direction: column; gap: 12px; }
.prp-ep { display: flex; gap: 10px; align-items: flex-start; }
.prp-ep-tag {
  flex-shrink: 0;
  display: inline-flex; align-items: center;
  padding: 2px 10px;
  font-size: 12px; font-weight: 600;
  color: var(--brand-green);
  background: rgba(0,218,90,0.10);
  border: 1px solid rgba(0,218,90,0.28);
  border-radius: 999px;
  white-space: nowrap;
  letter-spacing: 0.2px;
  margin-top: 2px;
}
.prp-ep-text { flex: 1; min-width: 0; font-size: 13px; line-height: 1.8; color: var(--t2); }

/* === v-p 双大面板布局（导入与解析 / 解析结果）=== */
.vp-panel {
  background: var(--bg2);
  border: 1px solid var(--bd);
  border-radius: 16px;
  padding: 18px 20px;
  margin-bottom: 16px;
  box-shadow: var(--shadow-soft);
}
.vp-panel-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: nowrap;
  margin-bottom: 16px; padding-bottom: 14px;
  border-bottom: 1px solid var(--bd);
}
.vp-panel-head-left { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
.vp-panel-direction { display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0; }
.vp-panel-direction .sp-label { font-size: 11px; color: var(--t3); }
.vp-panel-direction .sp-current { font-size: 16px; font-weight: 600; }
.vp-panel-direction .sp-switch { padding: 6px 16px; font-size: 13px; }
.vp-panel-title { font-size: 15px; font-weight: 600; color: var(--t1); margin: 0; letter-spacing: 0.2px; }
.vp-panel-sub { font-size: 12px; color: var(--t3); }

/* === 项目管理板块：双子tab（解析结果 / 团队与进度）=== */
.vp-subtabs { display: flex; gap: 4px; margin-bottom: 16px; padding: 3px; background: var(--bg1); border: 1px solid var(--bd); border-radius: 10px; }
.vp-subtab { flex: 0 0 auto; padding: 7px 18px; font-size: 13px; font-weight: 500; color: var(--t3); background: transparent; border: none; border-radius: 8px; cursor: pointer; transition: color 0.15s, background 0.15s; }
.vp-subtab:hover { color: var(--t2); background: rgba(255,255,255,0.04); }
.vp-subtab.active { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.10); font-weight: 600; }
.vp-subtab-pane { display: none; }
.vp-subtab-pane.active { display: block; }
.vp-parse-empty { padding: 36px 16px; text-align: center; font-size: 13px; color: var(--t3); background: var(--bg1); border: 1px dashed var(--bd); border-radius: 10px; line-height: 1.7; }

/* === 顶层双 TAB（导入与解析 / 项目管理）=== */
.vp-toptabs { display: flex; gap: 0; margin-bottom: 16px; border-bottom: 1px solid var(--bd); }
.vp-toptab { padding: 12px 24px; font-size: 14px; font-weight: 500; color: var(--t3); background: transparent; border: none; border-bottom: 2px solid transparent; cursor: pointer; transition: color 0.15s, border-color 0.15s; margin-bottom: -1px; }
.vp-toptab:hover { color: var(--t2); }
.vp-toptab.active { color: var(--t1); border-bottom-color: var(--brand-green, #00DA5A); font-weight: 600; }
.vp-toptab-pane { display: none; }
.vp-toptab-pane.active { display: block; }

/* === 解析完成 banner + 项目流程三阶段 === */
.vp-done-banner { background: var(--bg2); border: 1px solid var(--bd); border-radius: 16px; padding: 22px 24px; margin-bottom: 16px; box-shadow: var(--shadow-soft); }
.vp-done-head { display: flex; align-items: center; gap: 14px; padding-bottom: 18px; margin-bottom: 18px; border-bottom: 1px solid var(--bd); }
.vp-done-icon { width: 44px; height: 44px; border-radius: 50%; background: rgba(0,218,90,0.14); color: var(--brand-green, #00DA5A); display: flex; align-items: center; justify-content: center; font-size: 22px; font-weight: 700; flex-shrink: 0; }
.vp-done-title { font-size: 18px; font-weight: 600; color: var(--t1); }
.vp-done-sub { font-size: 13px; color: var(--t3); margin-top: 4px; }
.vp-flow-intro { margin-bottom: 18px; }
.vp-flow-intro-title { font-size: 13px; font-weight: 600; color: var(--t2); margin-bottom: 8px; }
.vp-flow-intro p { font-size: 13px; color: var(--t3); line-height: 1.7; margin: 0; }
.vp-flow-stages { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.vp-flow-stage { display: flex; align-items: center; gap: 12px; padding: 16px; background: var(--bg1); border: 1px solid var(--bd); border-radius: 12px; transition: border-color 0.15s, transform 0.15s; }
.vp-flow-stage[onclick]:hover { cursor: pointer; border-color: rgba(0,218,90,0.4); transform: translateY(-1px); }
.vp-flow-stage.is-done { background: rgba(0,218,90,0.06); border-color: rgba(0,218,90,0.3); }
.vp-flow-stage-no { width: 28px; height: 28px; border-radius: 50%; background: var(--bg2); border: 1px solid var(--bd); color: var(--t2); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; flex-shrink: 0; }
.vp-flow-stage.is-done .vp-flow-stage-no { background: var(--brand-green, #00DA5A); color: #06281a; border-color: transparent; }
.vp-flow-stage-body { min-width: 0; }
.vp-flow-stage-name { font-size: 14px; font-weight: 600; color: var(--t1); }
.vp-flow-stage-status { font-size: 12px; color: var(--brand-green, #00DA5A); margin-top: 3px; }
.vp-flow-stage-action { font-size: 12px; color: var(--t3); margin-top: 3px; }
.vp-flow-stage[onclick]:hover .vp-flow-stage-action { color: var(--brand-green, #00DA5A); }

/* === 三阶段流程卡（始终显示，阶段1 含开始解析按钮）=== */
.vp-flow-banner { background: var(--bg2); border: 1px solid var(--bd); border-radius: 16px; padding: 22px 24px; margin-bottom: 16px; box-shadow: var(--shadow-soft); }
.vp-flow-banner-head { padding-bottom: 16px; margin-bottom: 16px; border-bottom: 1px solid var(--bd); }
.vp-flow-banner-title { font-size: 16px; font-weight: 600; color: var(--t1); }
.vp-flow-banner-head p { font-size: 13px; color: var(--t3); line-height: 1.7; margin: 6px 0 0; }
.vp-flow-stage-desc { font-size: 12px; color: var(--t3); line-height: 1.6; margin-top: 4px; }
.vp-flow-stage-foot { display: flex; align-items: center; gap: 12px; margin-top: 12px; flex-wrap: wrap; }
.vp-flow-stage-btn { padding: 7px 18px; font-size: 13px; font-weight: 600; color: #06281a; background: linear-gradient(133deg,#67F9FF,#A3FFEC,#65FFAA); border: none; border-radius: 8px; cursor: pointer; transition: transform 0.15s, box-shadow 0.15s; }
.vp-flow-stage-btn:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,218,90,0.25); }
.vp-flow-stage-btn:disabled { opacity: 0.55; cursor: not-allowed; background: var(--bg1); color: var(--t3); }
.vp-flow-stage-status { font-size: 12px; color: var(--t3); }
.vp-flow-stage-status.is-done { color: var(--brand-green, #00DA5A); font-weight: 600; }
.vp-flow-stage-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.vp-flow-mini-btn { padding: 6px 14px; font-size: 12px; font-weight: 500; color: var(--t2); background: var(--bg1); border: 1px solid var(--bd); border-radius: 7px; cursor: pointer; transition: color 0.15s, border-color 0.15s, background 0.15s; }
.vp-flow-mini-btn:hover { color: var(--brand-green, #00DA5A); border-color: rgba(0,218,90,0.4); background: rgba(0,218,90,0.06); }
.vp-flow-stage.is-action { cursor: pointer; }

/* === 短剧重制：三阶段竖向 + 视图跳转子面板 === */
.vp-remake-view { display: none; }
.vp-remake-view.active { display: block; }
.vp-flow-stages--vert { display: flex; flex-direction: column; gap: 12px; }
.vp-flow-stage--vert { padding: 18px 20px; }
.vp-flow-stage-badge { display: inline-block; margin-left: 8px; padding: 2px 9px; font-size: 11px; font-weight: 500; color: var(--t3); background: rgba(255,255,255,0.05); border: 1px solid var(--bd); border-radius: 10px; vertical-align: middle; }
.vp-flow-stage-badge.is-done { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.12); border-color: rgba(0,218,90,0.3); }
.vp-subpanel-bar { display: flex; align-items: center; gap: 14px; padding: 0 0 14px; margin-bottom: 16px; border-bottom: 1px solid var(--bd); }
.vp-back-btn { display: inline-flex; align-items: center; padding: 6px 14px; font-size: 13px; color: var(--t2); background: var(--bg1); border: 1px solid var(--bd); border-radius: 8px; cursor: pointer; transition: color 0.15s, border-color 0.15s, background 0.15s; }
.vp-back-btn:hover { color: var(--t1); border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.06); }
.vp-subpanel-title { font-size: 16px; font-weight: 600; color: var(--t1); }
@media (max-width: 720px) { .vp-flow-stages { grid-template-columns: 1fr; } }

/* === 团队与进度：基础团队信息看板 === */
.vp-team-info { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--bd); border: 1px solid var(--bd); border-radius: 12px; overflow: hidden; margin-bottom: 14px; }
.vp-team-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; background: var(--bg2); }
.vp-team-label { font-size: 12px; color: var(--t3); flex-shrink: 0; }
.vp-team-value { font-size: 14px; color: var(--t1); font-weight: 500; text-align: right; min-width: 0; }
.vp-team-value.mono { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 13px; color: var(--t2); font-weight: 400; }
.vp-team-editable { cursor: text; border-bottom: 1px dashed transparent; transition: border-color 0.15s; }
.vp-team-editable:hover { border-bottom-color: var(--brand-green, #00DA5A); }
.vp-team-name-input { font-size: 14px; font-weight: 500; color: var(--t1); background: var(--bg1); border: 1px solid var(--brand-green, #00DA5A); border-radius: 4px; padding: 2px 6px; width: 75%; text-align: right; outline: none; }
.vp-team-tag { display: inline-block; margin-left: 6px; padding: 1px 7px; font-size: 10px; color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.12); border: 1px solid rgba(0,218,90,0.3); border-radius: 4px; vertical-align: middle; }
.vp-team-manage-btn { padding: 8px 22px; font-size: 13px; font-weight: 600; color: #06281a; background: linear-gradient(133deg,#67F9FF,#A3FFEC,#65FFAA); border: none; border-radius: 8px; cursor: pointer; transition: transform 0.15s, box-shadow 0.15s; }
.vp-team-manage-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,218,90,0.25); }
.vp-team-manage-btn.ghost { color: var(--t2, #CFD3DC); background: transparent; border: 1px solid var(--bd, rgba(255,255,255,0.18)); }
.vp-team-manage-btn.ghost:hover { color: var(--t1, #E5EAF3); border-color: rgba(255,255,255,0.3); box-shadow: none; transform: none; }
.vp-team-actions { grid-column: 1 / -1; padding: 14px 18px; background: var(--bg2); display: flex; justify-content: flex-end; gap: 10px; }
.vp-team-placeholder { padding: 18px; background: var(--bg1); border: 1px dashed var(--bd); border-radius: 10px; margin-bottom: 12px; }
.vp-team-placeholder-title { font-size: 13px; font-weight: 600; color: var(--t2); margin-bottom: 6px; }
.vp-team-placeholder-desc { font-size: 12px; color: var(--t3); line-height: 1.6; }

/* === 成员管理面板（modal，复用 target-modal 模式）=== */
.member-panel-modal { position: fixed; inset: 0; z-index: 220; display: none; align-items: center; justify-content: center; }
.member-panel-modal.on { display: flex; }
.member-panel-bg { position: absolute; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.member-panel-card { position: relative; width: min(560px, calc(100vw - 32px)); max-height: 80vh; display: flex; flex-direction: column; background: var(--bg2); border: 1px solid var(--bd); border-radius: 16px; box-shadow: 0 20px 50px rgba(0,0,0,0.5); overflow: hidden; }
.member-panel-head { display: flex; align-items: flex-start; justify-content: space-between; padding: 18px 20px; border-bottom: 1px solid var(--bd); }
.member-panel-head-info { min-width: 0; }
.member-panel-head-title { font-size: 16px; font-weight: 600; color: var(--t1); }
.member-panel-head-meta { font-size: 12px; color: var(--t3); margin-top: 3px; }
.member-panel-head-meta .mono { font-family: ui-monospace, "SF Mono", Menlo, monospace; }
.member-panel-close { background: none; border: none; color: var(--t3); font-size: 20px; cursor: pointer; padding: 4px 8px; border-radius: 6px; flex-shrink: 0; }
.member-panel-close:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
.member-panel-body { padding: 16px 20px; overflow-y: auto; flex: 1 1 auto; min-height: 0; }
.member-panel-group { margin-bottom: 16px; }
.member-panel-group-title { font-size: 12px; font-weight: 600; color: var(--t3); margin-bottom: 8px; letter-spacing: 0.3px; }
.member-panel-item { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--bg1); border: 1px solid var(--bd); border-radius: 10px; margin-bottom: 6px; }
.member-panel-avatar { width: 32px; height: 32px; border-radius: 50%; background: linear-gradient(135deg, rgba(103,249,255,0.18), rgba(0,218,90,0.12)); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; color: var(--t2); flex-shrink: 0; }
.member-panel-item-main { flex: 1 1 auto; min-width: 0; }
.member-panel-name { font-size: 13px; color: var(--t1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mp-item-title { color: var(--t3); font-size: 11px; margin-left: 6px; font-weight: 400; }
.mp-item-summary { font-size: 11px; color: var(--t3); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mp-item-ops { display: flex; gap: 4px; flex-shrink: 0; margin-left: 4px; }
.mp-item-btn { padding: 4px 10px; font-size: 12px; color: var(--t2); background: rgba(255,255,255,0.05); border: 1px solid var(--bd); border-radius: 6px; cursor: pointer; transition: color 0.15s, background 0.15s, border-color 0.15s; }
.mp-item-btn:hover { color: var(--t1); background: rgba(255,255,255,0.09); border-color: rgba(255,255,255,0.18); }
.mp-item-del { color: rgba(255,120,120,0.85); }
.mp-item-del:hover { color: #ff8a8a; background: rgba(255,90,90,0.10); border-color: rgba(255,90,90,0.35); }
.mp-empty { padding: 16px; text-align: center; font-size: 12px; color: var(--t3); background: var(--bg1); border: 1px dashed var(--bd); border-radius: 10px; }
.mp-add-btn { width: 100%; padding: 10px; margin-bottom: 14px; font-size: 13px; font-weight: 500; color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.07); border: 1px dashed rgba(0,218,90,0.4); border-radius: 10px; cursor: pointer; transition: background 0.15s, border-color 0.15s; }
.mp-add-btn:hover { background: rgba(0,218,90,0.12); border-color: rgba(0,218,90,0.6); }
.member-panel-role { font-size: 11px; padding: 2px 8px; border-radius: 4px; flex-shrink: 0; }
.member-panel-role.is-admin { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.12); border: 1px solid rgba(0,218,90,0.3); }
.member-panel-role.is-member { color: var(--t3); background: rgba(255,255,255,0.05); border: 1px solid var(--bd); }
.member-panel-foot { padding: 14px 20px; border-top: 1px solid var(--bd); display: flex; justify-content: flex-end; gap: 10px; }
.member-panel-foot .vp-team-placeholder { margin: 0; flex: 1; }

/* 编辑权限 / 添加成员 抽屉视图（同卡切换）*/
.mp-back-row { display: flex; align-items: center; gap: 8px; }
.mp-back { background: none; border: none; color: var(--t3); font-size: 22px; line-height: 1; cursor: pointer; padding: 0 4px; border-radius: 6px; transition: color 0.15s, background 0.15s; }
.mp-back:hover { color: var(--t1); background: rgba(255,255,255,0.08); }
.mp-section { margin-bottom: 20px; }
.mp-section-title { font-size: 12px; font-weight: 600; color: var(--t2); margin-bottom: 8px; letter-spacing: 0.2px; display: flex; align-items: center; gap: 8px; }
.mp-section-hint { font-size: 11px; font-weight: 400; color: var(--t3); }
.mp-eps-toggle { margin-left: auto; font-size: 11px; font-weight: 400; color: var(--brand-green, #00DA5A); cursor: pointer; padding: 1px 6px; border-radius: 4px; transition: background 0.15s; }
.mp-eps-toggle:first-of-type { margin-left: 0; }
.mp-eps-toggle:hover { background: rgba(0,218,90,0.10); }
.mp-roles { display: flex; gap: 8px; }
.mp-role { padding: 7px 20px; font-size: 13px; color: var(--t3); background: var(--bg1); border: 1px solid var(--bd); border-radius: 8px; cursor: pointer; transition: color 0.15s, background 0.15s, border-color 0.15s; }
.mp-role:hover { color: var(--t2); }
.mp-role.selected { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.10); border-color: rgba(0,218,90,0.45); font-weight: 600; }
.mp-admin-note { display: none; margin-top: 8px; font-size: 11px; color: var(--t3); line-height: 1.5; padding: 8px 10px; background: var(--bg1); border-radius: 6px; border-left: 2px solid var(--bd); }
.member-panel-card.is-admin-view .mp-admin-note { display: block; }
.member-panel-card.is-admin-view .mp-restrict { opacity: 0.4; pointer-events: none; }
.mp-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.mp-chip { padding: 6px 14px; font-size: 12px; color: var(--t2); background: var(--bg1); border: 1px solid var(--bd); border-radius: 16px; cursor: pointer; transition: color 0.15s, background 0.15s, border-color 0.15s; }
.mp-chip:hover { color: var(--t1); border-color: rgba(255,255,255,0.2); }
.mp-chip.selected { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.10); border-color: rgba(0,218,90,0.45); }
.mp-eps-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }
.mp-eps-grid .mp-chip { text-align: center; border-radius: 8px; padding: 7px 0; }
.mp-radios { display: flex; gap: 8px; flex-wrap: wrap; }
.mp-radio { padding: 7px 14px; font-size: 12px; color: var(--t2); background: var(--bg1); border: 1px solid var(--bd); border-radius: 8px; cursor: pointer; transition: color 0.15s, background 0.15s, border-color 0.15s; }
.mp-radio.selected { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.10); border-color: rgba(0,218,90,0.45); }
.mp-radio.mp-disabled { opacity: 0.5; cursor: not-allowed; }
.mp-pending { font-size: 10px; color: var(--t3); margin-left: 4px; padding: 1px 5px; border: 1px solid var(--bd); border-radius: 3px; }
.mp-hint { margin-top: 8px; font-size: 11px; color: var(--t3); line-height: 1.5; }
.mp-form-row { margin-bottom: 8px; }
.mp-input { width: 100%; box-sizing: border-box; padding: 9px 12px; font-size: 13px; color: var(--t1); background: var(--bg1); border: 1px solid var(--bd); border-radius: 8px; outline: none; transition: border-color 0.15s; }
.mp-input:focus { border-color: var(--brand-green, #00DA5A); }
.mp-input::placeholder { color: var(--t3); }
.mp-static-name { font-size: 14px; font-weight: 600; color: var(--t1); }
.mp-single .mp-chip { border-radius: 8px; }
.mp-btn { padding: 8px 22px; font-size: 13px; font-weight: 600; border-radius: 8px; cursor: pointer; transition: background 0.15s, border-color 0.15s, transform 0.15s; }
.mp-btn-ghost { color: var(--t2); background: transparent; border: 1px solid var(--bd); }
.mp-btn-ghost:hover { color: var(--t1); border-color: rgba(255,255,255,0.2); }
.mp-btn-primary { color: #06281a; background: linear-gradient(133deg,#67F9FF,#A3FFEC,#65FFAA); border: none; }
.mp-btn-primary:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,218,90,0.25); }

/* 面板内直接子块融入：去掉各自的卡片外观，避免双框杂乱 */
.vp-panel > .agent-entry-card,
.vp-panel > .panel,
.vp-panel > .parse-result-preview {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
.vp-panel > .agent-entry-card { border-left: 3px solid var(--brand-green) !important; padding-left: 14px !important; }
.vp-panel > .panel:hover { transform: none; box-shadow: none; border-color: transparent; }
.vp-panel > .parse-board { display: flex; flex-direction: column; gap: 12px; border: 1px solid var(--bd) !important; border-radius: 10px !important; background: var(--bg2) !important; padding: 14px 16px !important; }
.vp-panel > .parse-board > .analyze-cta-bar { border: none; background: transparent; padding: 0; margin: 0; border-radius: 0; }
.vp-panel > .parse-board > .analyze-cta-bar > button { margin-left: auto; }
.vp-panel > .parse-board > .sbar { border-bottom: none; padding: 0; }
/* 面板内子区块之间加分隔 */
.vp-panel > .agent-entry-card + .parse-board,
.vp-panel > .subproject-bar { margin-bottom: 14px !important; }
.vp-panel > .sr { margin-bottom: 14px !important; }
.vp-panel > .subproject-bar { padding: 0 !important; background: transparent !important; border: none !important; border-radius: 0 !important; padding-bottom: 12px !important; border-bottom: 1px solid var(--bd) !important; }

/* === 资产卡片列表：角色/场景/道具简介（折叠态可见）=== */
.char-group-desc { display: grid; grid-template-columns: 1fr; gap: 6px; margin-top: 5px; }
.char-group-desc-col { font-size: 12px; color: var(--t3); line-height: 1.6; min-width: 0; }
.char-group-desc-trans { color: var(--t2); }
.char-group-desc-label { display: inline-block; font-size: 9px; font-weight: 700; color: var(--t3); background: rgba(255,255,255,0.08); padding: 1px 5px; border-radius: 3px; margin-right: 6px; vertical-align: 1px; letter-spacing: 0.05em; }

/* === B5: 去除 tab 容器外框，避免与资产卡片形成"大框套小框"双框嵌套 === */
.panel.ast-tab { background: transparent !important; border: none !important; box-shadow: none !important; padding: 0 !important; border-radius: 0 !important; }

/* === 资产库批量操作面板 === */
.batch-panel { background: var(--glass); border: 1px solid var(--bd); border-radius: var(--radius); padding: 12px 14px; }
.batch-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--bd); flex-wrap: wrap; }
.batch-head-left { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.batch-label { font-size: 13px; font-weight: 600; color: var(--t1); letter-spacing: 0.2px; }
.batch-hint { font-size: 12px; color: var(--t3); line-height: 1.5; }
.batch-btns { display: flex; gap: 8px; flex-wrap: nowrap; align-items: center; justify-content: flex-end; width: 100%; }
.batch-section-title { margin-right: auto; font-size: 14px; font-weight: 600; color: var(--t1); white-space: nowrap; }
/* 改编 / 生图 分组 */
.batch-group { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.batch-group + .batch-group { padding-left: 12px; border-left: 1px solid var(--bd); }
.batch-group-label { font-size: 11px; color: var(--t3); text-transform: uppercase; letter-spacing: 0.5px; padding: 2px 6px; background: rgba(255,255,255,0.06); border-radius: var(--radius-sm); }
/* 步骤数字（标注在按钮内部首位）*/
.btn-step { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 50%; background: rgba(255,255,255,0.10); color: var(--t2); font-size: 11px; font-weight: 600; flex-shrink: 0; }
/* 批量按钮统一规格（与模型卡片等高；inline-flex 使步骤数字与文本垂直居中）*/
.batch-btns .b { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 14px; font-size: 13px; border-radius: 8px; box-shadow: none; }

/* === 全局生图模型：选项卡片（非切换按钮）=== */
.model-select { position: relative; display: inline-block; }
.model-card {
  display: inline-flex; align-items: center; gap: 8px;
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--bd);
  border-radius: var(--radius);
  padding: 8px 16px;
  font-family: inherit; font-size: 13px;
  color: var(--t1); cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.model-card:hover { background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.22); }
.mc-label { color: var(--t3); font-size: 12px; }
.mc-value { color: var(--t1); font-weight: 500; }
.mc-arrow { color: var(--t3); font-size: 11px; margin-left: 2px; }

/* === 剧集改编视图重构 === */
.adapt-sb-overview-title { font-size: 15px; font-weight: 600; color: var(--t1); margin: 0; padding: 0; border: none; line-height: 1.2; }

/* header 一行：左（标题 + 检索 + 集数）右（特殊要求 + 改编剧集 + info），参考资产库 asset-filter-bar 的「文字说明 + 控件」模式 */
.adapt-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--bd); flex-wrap: nowrap; }
.adapt-head-left { display: flex; align-items: center; gap: 10px; min-width: 0; }
.adapt-head-right { display: flex; align-items: center; gap: 8px; flex-shrink: 0; margin-left: auto; }
/* 文字标签（对齐 .asset-filter-bar label） */
.adapt-head-left label { font-size: 11px; color: var(--t3); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap; flex-shrink: 0; }
/* 检索搜索框（对齐 .asset-filter-search：SVG 图标背景） */
.adapt-filter-search { width: 180px; padding: 7px 12px 7px 32px; border: 1px solid var(--bd); border-radius: 6px; font-size: 13px; background: var(--bg1) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2.5' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") 10px center no-repeat; color: var(--t1); outline: none; transition: border-color 0.2s, box-shadow 0.2s; flex-shrink: 0; }
.adapt-filter-search:focus { border-color: rgba(255,255,255,0.35); box-shadow: 0 0 0 2px rgba(255,255,255,0.08); }
.adapt-filter-search::placeholder { color: #bbb; }
/* 集数下拉（对齐 .asset-filter-ep：appearance:none 自定义箭头） */
.adapt-filter-ep { padding: 7px 28px 7px 10px; border: 1px solid var(--bd); border-radius: 6px; font-size: 13px; background-color: var(--bg1); color: var(--t1); outline: none; cursor: pointer; appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 8px center; flex-shrink: 0; }
.adapt-filter-ep:focus { border-color: rgba(255,255,255,0.35); }
/* info-tip 在 header 右侧独立显示 */
.adapt-head-right .info-tip { margin-left: 0; flex-shrink: 0; }

/* 改编特殊要求卡片（点击展开 textarea，点保存才生效） */
.adapt-req-card { position: relative; }
.adapt-req-toggle { height: 34px; padding: 0 14px; border-radius: 8px; border: 1px solid var(--bd); background: var(--bg1); color: var(--t2); font-size: 13px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; transition: all 0.15s; }
.adapt-req-toggle:hover { border-color: rgba(255,255,255,0.3); background: rgba(255,255,255,0.06); color: var(--t1); }
.adapt-req-toggle.on { border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.08); color: var(--t1); }
.adapt-req-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--t3); flex: none; }
.adapt-req-toggle.has-value .adapt-req-dot { background: var(--brand-green); }
.adapt-req-panel { position: absolute; top: calc(100% + 6px); right: 0; width: 360px; background: var(--bg2); border: 1px solid var(--bd); border-radius: 10px; box-shadow: var(--shadow-strong); padding: 12px; z-index: 60; }
.adapt-req-panel[hidden] { display: none; }
.adapt-req-panel textarea { width: 100%; min-height: 100px; resize: vertical; padding: 8px 10px; font-size: 13px; line-height: 1.6; color: var(--t1); background: var(--bg0); border: 1px solid var(--bd); border-radius: 8px; font-family: inherit; box-sizing: border-box; }
.adapt-req-panel textarea:focus { outline: none; border-color: rgba(255,255,255,0.3); }
.adapt-req-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px; }
.adapt-req-save { height: 30px; padding: 0 14px; font-size: 12px; border-radius: 8px; border: none; background: var(--cta-gradient); color: #073b3b; font-weight: 600; cursor: pointer; }
.adapt-req-save:hover { filter: brightness(1.05); }
.adapt-req-cancel { height: 30px; padding: 0 14px; font-size: 12px; border-radius: 8px; border: 1px solid var(--bd); background: var(--bg1); color: var(--t2); cursor: pointer; }
.adapt-req-cancel:hover { background: rgba(255,255,255,0.06); color: var(--t1); }

/* 进度看板 */
.adapt-progress-board { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.adapt-progress-label { font-size: 13px; font-weight: 600; color: var(--t2); white-space: nowrap; }
.adapt-progress-dots { display: flex; gap: 4px; flex-wrap: wrap; }
.adapt-progress-dot { width: 28px; height: 28px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; border: 1px solid var(--bd); background: var(--bg1); color: var(--t3); cursor: pointer; transition: all 0.15s; }
.adapt-progress-dot--done { background: rgba(0,218,90,0.12); border-color: rgba(0,218,90,0.4); color: var(--brand-green); }
.adapt-progress-dot:hover { border-color: rgba(255,255,255,0.3); }

/* 剧情概述下拉 */
.adapt-story-overview { margin-bottom: 16px; border: 1px solid var(--bd); border-radius: 10px; background: var(--bg2); overflow: hidden; }
.adapt-story-overview > summary { padding: 12px 16px; font-size: 14px; font-weight: 600; color: var(--t1); cursor: pointer; user-select: none; list-style: none; }
.adapt-story-overview > summary::before { content: "▸"; margin-right: 8px; color: var(--t3); transition: transform 0.15s; display: inline-block; }
.adapt-story-overview[open] > summary::before { transform: rotate(90deg); }
.adapt-story-overview[open] > summary { border-bottom: 1px solid var(--bd); }
.adapt-story-body { padding: 16px; }

/* 每集卡片 */
.ast-sb-ep { border: 1px solid var(--bd); border-radius: 10px; margin-bottom: 8px; overflow: hidden; }
.ast-sb-ep[open] { border-color: rgba(255,255,255,0.18); }
.ast-sb-ep > .ast-sb-ep-head { display: flex; align-items: center; gap: 10px; padding: 10px 14px; cursor: pointer; user-select: none; position: relative; }
.ast-sb-ep > .ast-sb-ep-head::before { content: "▸"; color: var(--t3); font-size: 11px; transition: transform 0.15s; }
.ast-sb-ep[open] > .ast-sb-ep-head::before { transform: rotate(90deg); }
.ast-sb-ep-no { font-size: 15px; font-weight: 700; color: var(--t1); min-width: 32px; }
.ast-sb-ep-status { font-size: 12px; font-weight: 500; padding: 2px 8px; border-radius: 10px; }
.ast-sb-ep-status--done { color: var(--brand-green); background: rgba(0,218,90,0.10); }
.ast-sb-ep-segs { font-size: 12px; color: var(--t3); }
/* summary 行右侧按钮组：重新改编 + 开始创作 */
.ast-sb-ep > .ast-sb-ep-head .ast-sb-ep-head-actions { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; }
.ast-sb-ep > .ast-sb-ep-head .ast-sb-ep-adapt-btn { height: 34px; padding: 0 14px; font-size: 13px; }
.ast-sb-ep-start-btn { height: 34px; padding: 0 14px; font-size: 13px; border-radius: 8px; border: 1px solid var(--bd); background: var(--bg1); color: var(--t2); cursor: pointer; display: inline-flex; align-items: center; gap: 4px; transition: all 0.15s; }
.ast-sb-ep-start-btn:hover { border-color: rgba(255,255,255,0.3); background: rgba(255,255,255,0.06); color: var(--t1); }
.ast-sb-ep > summary { list-style: none; }
.ast-sb-ep > summary::-webkit-details-marker { display: none; }

/* 每集剧情描述：左右布局（转化前 | 转化后占位） */
.ast-sb-ep-summary { padding: 14px 16px; border-bottom: 1px solid var(--bd); }
.ast-sb-ep-summary-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.ast-sb-ep-summary-col { min-width: 0; }
.ast-sb-ep-summary-label { font-size: 11px; font-weight: 600; color: var(--t3); margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px; }
.ast-sb-ep-summary-text { font-size: 13px; color: var(--t2); line-height: 1.7; }
.ast-sb-ep-summary-placeholder { font-size: 13px; color: var(--t3); line-height: 1.7; font-style: italic; opacity: 0.6; }

/* 出场人物 / 场景：左右布局（原始 | 改编占位） */
.ast-sb-ep-meta { padding: 12px 16px; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; border-bottom: 1px solid var(--bd); }
.ast-sb-ep-meta-col { min-width: 0; }
.ast-sb-ep-meta-rows { display: flex; flex-direction: column; gap: 6px; }
.ast-sb-ep-meta-row { display: flex; align-items: baseline; gap: 6px; }
.ast-sb-ep-meta-label { font-size: 11px; font-weight: 600; color: var(--t3); white-space: nowrap; }
.ast-sb-ep-meta-val { font-size: 12px; color: var(--t2); }
.asset-ai-adopt { background: rgba(255,255,255,0.06) !important; border: 1px solid var(--bd); color: var(--t1); }
.asset-ai-adopt:hover { background: rgba(255,255,255,0.12) !important; border-color: rgba(255,255,255,0.22); }
.asset-filter-add-btn { background: rgba(255,255,255,0.06) !important; border: 1px solid var(--bd) !important; color: var(--t1) !important; padding: 6px 14px; border-radius: var(--radius); display: inline-flex; align-items: center; gap: 4px; font-size: 13px; cursor: pointer; }
.asset-filter-add-btn:hover { background: rgba(255,255,255,0.12) !important; border-color: rgba(255,255,255,0.22) !important; }
.sb-ep-tag { background: rgba(255,255,255,0.06); color: var(--t2); }
.user-account-badge { background: rgba(255,255,255,0.08); color: var(--t2); }

/* === E3: tabs 圆角缩小（原 999px 胶囊过大）=== */
.tab { border-radius: var(--radius) !important; }
/* 模型下拉选项 */
.mc-dropdown { position: absolute; top: calc(100% + 4px); right: 0; min-width: 200px; background: var(--bg2); border: 1px solid var(--bd); border-radius: var(--radius); box-shadow: var(--shadow-strong); padding: 4px; z-index: 50; }
.mc-dropdown[hidden] { display: none; }
.mc-opt { padding: 8px 12px; font-size: 13px; color: var(--t2); border-radius: var(--radius-sm); cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.mc-opt:hover { background: rgba(255,255,255,0.08); color: var(--t1); }
.mc-opt.on { color: var(--brand-green); }
.mc-opt .mc-opt-tag { font-size: 11px; color: var(--t3); }

/* === 资产详情态：隐藏列表元素（批量面板/标签栏/检索栏），避免与"返回列表"重合 === */
#v-a.asset-detail-on > .hd,
#v-a.asset-detail-on > .tabs,
#v-a.asset-detail-on > .asset-filter-bar { display: none !important; }

/* === 批量操作确认弹窗（防误触）=== */
.batch-confirm-modal { position: fixed; inset: 0; z-index: 1100; display: flex; align-items: center; justify-content: center; }
.batch-confirm-modal[hidden] { display: none; }
.bcm-bg { position: absolute; inset: 0; background: rgba(0,0,0,0.7); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.bcm-box { position: relative; background: var(--bg2); border: 1px solid var(--bd); border-radius: var(--radius-lg); padding: 22px 26px; min-width: 380px; max-width: 460px; box-shadow: var(--shadow-strong); }
.bcm-title { font-size: 15px; font-weight: 600; color: var(--t1); margin-bottom: 12px; }
.bcm-text { font-size: 13px; color: var(--t2); line-height: 1.7; margin-bottom: 18px; }
.bcm-text strong { color: var(--brand-green); font-weight: 600; }
.bcm-actions { display: flex; gap: 10px; justify-content: flex-end; }
.bcm-ok { background: var(--brand-green); color: #fff; border: none; padding: 8px 20px; border-radius: var(--radius); font-size: 13px; font-weight: 500; cursor: pointer; }
.bcm-ok:hover { background: var(--brand-green-dark); }
.bcm-cancel { background: transparent; border: 1px solid var(--bd); color: var(--t2); padding: 8px 20px; border-radius: var(--radius); font-size: 13px; cursor: pointer; }
.bcm-cancel:hover { background: rgba(255,255,255,0.08); color: var(--t1); border-color: rgba(255,255,255,0.2); }

/* ============ 成员管理/详情 辅助 ============ */
.member-panel-avatar.sm { width: 28px; height: 28px; font-size: 12px; }
.mp-creator-tag { display: inline-block; margin-left: 6px; padding: 1px 7px; font-size: 10px; color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.12); border: 1px solid rgba(0,218,90,0.3); border-radius: 4px; vertical-align: middle; }
.mp-panel-tip { font-size: 12px; color: var(--t3, rgba(255,255,255,0.6)); line-height: 1.6; padding: 10px 12px; background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-left: 2px solid var(--brand-green, #00DA5A); border-radius: 8px; margin-bottom: 14px; }
.mp-all-toggle { margin-left: auto; font-size: 12px; font-weight: 400; color: var(--t2, #CFD3DC); display: inline-flex; align-items: center; gap: 4px; cursor: pointer; }
.mp-all-toggle input { accent-color: var(--brand-green, #00DA5A); }
.mp-eps-quick { display: flex; gap: 6px; margin-bottom: 8px; }
.mp-mini-toggle { padding: 3px 10px; font-size: 11px; color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.07); border: 1px solid rgba(0,218,90,0.3); border-radius: 6px; cursor: pointer; transition: background 0.15s; }
.mp-mini-toggle:hover { background: rgba(0,218,90,0.14); }

/* ============ 成员详情弹窗 ============ */
.member-detail-modal { position: fixed; inset: 0; z-index: 230; display: none; align-items: center; justify-content: center; }
.member-detail-modal.on { display: flex; }
.md-bg { position: absolute; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.md-card { position: relative; width: min(620px, calc(100vw - 32px)); max-height: 84vh; display: flex; flex-direction: column; background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.1)); border-radius: 16px; box-shadow: 0 20px 50px rgba(0,0,0,0.5); overflow: hidden; }
.md-head { display: flex; align-items: flex-start; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--bd, rgba(255,255,255,0.1)); }
.md-head-info { min-width: 0; }
.md-head-title { font-size: 15px; font-weight: 600; color: var(--t1, #E5EAF3); display: flex; align-items: center; gap: 8px; }
.md-head-meta { font-size: 12px; color: var(--t3, rgba(255,255,255,0.6)); margin-top: 5px; line-height: 1.5; }
.md-body { padding: 14px 20px; overflow-y: auto; flex: 1 1 auto; min-height: 0; }
.md-stage { margin-bottom: 16px; }
.md-stage-title { font-size: 12px; font-weight: 600; color: var(--t3, rgba(255,255,255,0.6)); margin-bottom: 8px; letter-spacing: 0.3px; }
.md-items { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.md-item { display: flex; align-items: center; gap: 8px; padding: 8px 10px; background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 8px; font-size: 12px; min-width: 0; }
.md-item-name { color: var(--t1, #E5EAF3); flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.md-item-meta { color: var(--t3, rgba(255,255,255,0.6)); font-size: 11px; flex-shrink: 0; }
.md-all { grid-column: 1 / -1; padding: 9px 12px; background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 8px; font-size: 12px; color: var(--t2, #CFD3DC); display: flex; align-items: center; gap: 8px; }
.md-statline { grid-column: 1 / -1; font-size: 11px; color: var(--t3, rgba(255,255,255,0.6)); margin-top: 4px; }
.md-empty { grid-column: 1 / -1; padding: 10px; text-align: center; font-size: 12px; color: var(--t3, rgba(255,255,255,0.5)); }
/* 成员详情·积分份额 */
.md-quota { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 7px; }
.md-quota-line { display: flex; align-items: center; gap: 10px; font-size: 12px; }
.md-quota-line > span:first-child { color: var(--t3, rgba(255,255,255,0.6)); width: 48px; flex-shrink: 0; }
.md-quota-input { width: 110px; padding: 5px 10px; font-size: 12px; color: var(--t1, #E5EAF3); background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.12)); border-radius: 6px; outline: none; }
.md-quota-input:focus { border-color: var(--brand-green, #00DA5A); }
.md-quota-unit { font-size: 11px; color: var(--t3, rgba(255,255,255,0.6)); }
.md-quota-readonly { color: var(--t2, #CFD3DC); }
.md-quota-readonly.exhausted { color: #ff7a7a; }
.md-quota-readonly.low { color: #FFB020; }
.md-quota-readonly.ok { color: var(--brand-green, #00DA5A); }
.md-status { font-size: 10px; padding: 2px 7px; border-radius: 4px; flex-shrink: 0; }
.md-status.done, .vp-ep-status.done { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.12); border: 1px solid rgba(0,218,90,0.3); }
.md-status.review, .vp-ep-status.review { color: #FFB020; background: rgba(255,176,32,0.12); border: 1px solid rgba(255,176,32,0.32); }
.md-status.doing, .vp-ep-status.doing { color: #67F9FF; background: rgba(103,249,255,0.10); border: 1px solid rgba(103,249,255,0.3); }
.md-status.todo, .vp-ep-status.todo { color: var(--t3, rgba(255,255,255,0.6)); background: rgba(255,255,255,0.05); border: 1px solid var(--bd, rgba(255,255,255,0.1)); }
.md-foot { padding: 12px 20px; border-top: 1px solid var(--bd, rgba(255,255,255,0.1)); display: flex; justify-content: flex-end; gap: 10px; }

/* ============ 编辑分配（ma-）============ */
.ma-asset, .ma-eps { padding: 10px 12px; background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 10px; }
.ma-asset.disabled, .ma-eps.disabled { opacity: 0.45; pointer-events: none; }
.ma-pick-btn { padding: 7px 16px; font-size: 12px; font-weight: 500; color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.08); border: 1px dashed rgba(0,218,90,0.4); border-radius: 8px; cursor: pointer; margin-bottom: 8px; transition: background 0.15s; }
.ma-pick-btn:hover { background: rgba(0,218,90,0.14); }
.ma-asset-picked { display: flex; flex-wrap: wrap; gap: 6px; min-height: 22px; }
.ma-asset-chip { display: inline-flex; align-items: center; gap: 5px; padding: 3px 4px 3px 9px; font-size: 11px; color: var(--t1, #E5EAF3); background: rgba(255,255,255,0.06); border: 1px solid var(--bd, rgba(255,255,255,0.12)); border-radius: 12px; max-width: 100%; }
.ma-asset-x { background: none; border: none; color: var(--t3, rgba(255,255,255,0.6)); font-size: 14px; line-height: 1; cursor: pointer; padding: 0 4px; border-radius: 4px; }
.ma-asset-x:hover { color: #ff8a8a; background: rgba(255,90,90,0.12); }
.ma-asset-empty { font-size: 11px; color: var(--t3, rgba(255,255,255,0.5)); }
.ma-ep-search { width: 100%; box-sizing: border-box; padding: 6px 10px; font-size: 12px; color: var(--t1, #E5EAF3); background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.12)); border-radius: 6px; outline: none; margin-bottom: 8px; }
.ma-ep-search:focus { border-color: var(--brand-green, #00DA5A); }
.ma-ep-search::placeholder { color: var(--t3, rgba(255,255,255,0.5)); }

/* ============ 任务资产选择器 ============ */
.task-asset-picker-modal { position: fixed; inset: 0; z-index: 240; display: none; align-items: center; justify-content: center; }
.task-asset-picker-modal.on { display: flex; }
.tap-bg { position: absolute; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.tap-card { position: relative; width: min(680px, calc(100vw - 32px)); max-height: 84vh; display: flex; flex-direction: column; background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.1)); border-radius: 16px; box-shadow: 0 20px 50px rgba(0,0,0,0.5); overflow: hidden; }
.tap-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--bd, rgba(255,255,255,0.1)); }
.tap-title { font-size: 15px; font-weight: 600; color: var(--t1, #E5EAF3); }
.tap-toolbar { padding: 12px 18px; border-bottom: 1px solid var(--bd, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 10px; }
.tap-search { width: 100%; box-sizing: border-box; padding: 8px 12px; font-size: 13px; color: var(--t1, #E5EAF3); background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.12)); border-radius: 8px; outline: none; }
.tap-search:focus { border-color: var(--brand-green, #00DA5A); }
.tap-search::placeholder { color: var(--t3, rgba(255,255,255,0.5)); }
.tap-tabs { display: flex; gap: 6px; flex-wrap: wrap; }
.tap-tab { padding: 5px 14px; font-size: 12px; color: var(--t3, rgba(255,255,255,0.6)); background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.1)); border-radius: 16px; cursor: pointer; transition: color 0.15s, background 0.15s, border-color 0.15s; }
.tap-tab:hover { color: var(--t1, #E5EAF3); }
.tap-tab.active { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.10); border-color: rgba(0,218,90,0.45); }
.tap-tab-c { font-size: 10px; opacity: 0.7; margin-left: 2px; }
.tap-body { padding: 14px 18px; overflow-y: auto; flex: 1 1 auto; min-height: 0; }
.tap-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.tap-item { position: relative; padding: 10px; background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.1)); border-radius: 10px; cursor: pointer; transition: border-color 0.15s, background 0.15s; }
.tap-item:hover { border-color: rgba(255,255,255,0.22); }
.tap-item.selected { border-color: rgba(0,218,90,0.55); background: rgba(0,218,90,0.08); }
.tap-item-name { font-size: 12px; color: var(--t1, #E5EAF3); line-height: 1.4; }
.tap-item-kind { font-size: 10px; color: var(--t3, rgba(255,255,255,0.55)); margin-top: 3px; }
.tap-item-check { position: absolute; top: 8px; right: 8px; font-size: 13px; color: var(--brand-green, #00DA5A); font-weight: 700; }
.tap-empty { grid-column: 1 / -1; padding: 24px; text-align: center; font-size: 12px; color: var(--t3, rgba(255,255,255,0.5)); }
.tap-foot { padding: 12px 18px; border-top: 1px solid var(--bd, rgba(255,255,255,0.1)); display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
.tap-sel { margin-right: auto; font-size: 12px; color: var(--t3, rgba(255,255,255,0.6)); }

/* ============ 团队管理 tab：缩略卡 ============ */
.vp-team-overview { margin-bottom: 14px; }
.vp-mcard-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(248px, 1fr)); gap: 12px; }
.vp-mcard { padding: 14px; background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 14px; cursor: pointer; transition: border-color 0.15s, transform 0.15s, box-shadow 0.15s; }
.vp-mcard:hover { border-color: rgba(0,218,90,0.4); transform: translateY(-1px); box-shadow: 0 8px 22px rgba(0,0,0,0.32); }
.vp-mcard-head { display: flex; align-items: center; gap: 9px; margin-bottom: 11px; }
.vp-mcard-name { font-size: 14px; font-weight: 600; color: var(--t1, #E5EAF3); flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-mcard-stages { display: flex; flex-direction: column; gap: 5px; margin-bottom: 11px; }
.vp-mcard-stage { display: flex; align-items: baseline; gap: 8px; font-size: 12px; }
.vp-mcard-stage-k { color: var(--t3, rgba(255,255,255,0.55)); flex-shrink: 0; width: 56px; }
.vp-mcard-stage-v { color: var(--t2, #CFD3DC); flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-mcard-stage-v.empty { color: var(--t3, rgba(255,255,255,0.35)); }
.vp-mcard-prog { display: flex; align-items: center; gap: 8px; }
.vp-mcard-prog-bar { flex: 1 1 auto; height: 5px; background: var(--bg1, #1a1a1a); border-radius: 3px; overflow: hidden; }
.vp-mcard-prog-inner { height: 100%; background: linear-gradient(90deg, #65FFAA, var(--brand-green, #00DA5A)); border-radius: 3px; transition: width 0.3s; }
.vp-mcard-prog-txt { font-size: 11px; color: var(--t3, rgba(255,255,255,0.6)); flex-shrink: 0; }
.vp-mcard-note { margin-top: 12px; font-size: 12px; color: var(--t3, rgba(255,255,255,0.55)); line-height: 1.6; }
/* 缩略卡配额行 */
.vp-mcard-quota { display: flex; align-items: center; gap: 8px; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--bd, rgba(255,255,255,0.06)); font-size: 11px; }
.vp-mcard-quota-k { color: var(--t3, rgba(255,255,255,0.55)); flex-shrink: 0; }
.vp-mcard-quota-v { color: var(--t2, #CFD3DC); flex: 1 1 auto; }
.vp-mcard-quota-st { padding: 1px 7px; border-radius: 4px; font-size: 10px; flex-shrink: 0; }
.vp-mcard-quota-st.ok { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.12); }
.vp-mcard-quota-st.low { color: #FFB020; background: rgba(255,176,32,0.12); }
.vp-mcard-quota-st.exhausted { color: #ff7a7a; background: rgba(255,90,90,0.12); }
/* 协作设置面板（modal）*/
.team-config-modal { position: fixed; inset: 0; z-index: 225; display: none; align-items: center; justify-content: center; }
.team-config-modal.on { display: flex; }
.vp-cfg-bg { position: absolute; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.vp-cfg-card { position: relative; width: min(560px, calc(100vw - 32px)); max-height: 84vh; display: flex; flex-direction: column; background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.1)); border-radius: 16px; box-shadow: 0 20px 50px rgba(0,0,0,0.5); overflow: hidden; }
.vp-cfg-head { display: flex; align-items: flex-start; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--bd, rgba(255,255,255,0.1)); }
.vp-cfg-body { padding: 14px 20px; overflow-y: auto; flex: 1 1 auto; min-height: 0; }
.vp-cfg-title { font-size: 15px; font-weight: 600; color: var(--t1, #E5EAF3); display: flex; align-items: baseline; gap: 8px; }
.vp-cfg-sub { font-size: 11px; font-weight: 400; color: var(--t3, rgba(255,255,255,0.5)); }
.vp-cfg-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; flex-wrap: wrap; }
.vp-cfg-toggle { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; user-select: none; }
.vp-cfg-toggle input { accent-color: var(--brand-green, #00DA5A); width: 15px; height: 15px; }
.vp-cfg-label { font-size: 13px; color: var(--t1, #E5EAF3); }
.vp-cfg-hint { font-size: 11px; color: var(--t3, rgba(255,255,255,0.55)); }
.vp-cfg-detail { padding: 4px 0 8px 22px; font-size: 12px; color: var(--t2, #CFD3DC); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.vp-cfg-num { display: inline-flex; align-items: center; gap: 4px; }
.vp-cfg-num input { width: 64px; padding: 4px 8px; font-size: 12px; color: var(--t1, #E5EAF3); background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.12)); border-radius: 6px; outline: none; }
.vp-cfg-num input:focus { border-color: var(--brand-green, #00DA5A); }
.vp-cfg-unit { font-size: 11px; color: var(--t3, rgba(255,255,255,0.6)); }
.vp-cfg-readonly { font-size: 13px; color: var(--t1, #E5EAF3); font-weight: 600; }
.vp-cfg-divider { height: 1px; background: var(--bd, rgba(255,255,255,0.08)); margin: 8px 0; }
.vp-cfg-group-title { font-size: 12px; font-weight: 600; color: var(--t3, rgba(255,255,255,0.6)); margin: 4px 0 2px; letter-spacing: 0.2px; }
/* 团队配额条 */
.vp-cfg-quota { margin-top: 12px; padding: 12px; background: var(--bg1, #1a1a1a); border-radius: 10px; }
.vp-cfg-quota-head { display: flex; justify-content: space-between; align-items: baseline; font-size: 12px; margin-bottom: 8px; }
.vp-cfg-quota-head span:first-child { color: var(--t2, #CFD3DC); font-weight: 600; }
.vp-cfg-quota-num { color: var(--t1, #E5EAF3); font-weight: 600; }
.vp-cfg-quota-bar { height: 7px; background: var(--bg2, #242424); border-radius: 4px; overflow: hidden; }
.vp-cfg-quota-inner { height: 100%; background: linear-gradient(90deg, #65FFAA, var(--brand-green, #00DA5A)); border-radius: 4px; transition: width 0.3s; }
.vp-cfg-quota-hint { font-size: 11px; color: var(--t3, rgba(255,255,255,0.55)); margin-top: 6px; }

/* ============ 信息通知 ============ */
.vp-team-notice { padding: 0; }
.vp-notice-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.vp-notice-tabs { display: flex; gap: 4px; padding: 3px; background: var(--bg1, #1a1a1a); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 10px; }
.vp-notice-tab { padding: 6px 16px; font-size: 12px; font-weight: 500; color: var(--t3, rgba(255,255,255,0.6)); background: transparent; border: none; border-radius: 7px; cursor: pointer; transition: color 0.15s, background 0.15s; }
.vp-notice-tab:hover { color: var(--t2, #CFD3DC); }
.vp-notice-tab.active { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.10); font-weight: 600; }
.vp-notice-filter { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--t2, #CFD3DC); cursor: pointer; user-select: none; }
.vp-notice-filter input { accent-color: var(--brand-green, #00DA5A); }
.vp-notice-list { display: flex; flex-direction: column; gap: 6px; max-height: 320px; overflow-y: auto; }
.vp-notice-item { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 10px; }
.vp-notice-item.mine { border-color: rgba(0,218,90,0.3); background: rgba(0,218,90,0.04); }
.vp-notice-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.vp-notice-dot.msg { background: var(--brand-green, #00DA5A); box-shadow: 0 0 0 3px rgba(0,218,90,0.15); }
.vp-notice-dot.log { background: #67F9FF; box-shadow: 0 0 0 3px rgba(103,249,255,0.12); }
.vp-notice-text { flex: 1 1 auto; min-width: 0; font-size: 13px; color: var(--t1, #E5EAF3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-notice-action { padding: 4px 12px; font-size: 12px; color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.08); border: 1px solid rgba(0,218,90,0.3); border-radius: 6px; cursor: pointer; flex-shrink: 0; transition: background 0.15s; }
.vp-notice-action:hover { background: rgba(0,218,90,0.16); }
.vp-notice-time { font-size: 11px; color: var(--t3, rgba(255,255,255,0.5)); flex-shrink: 0; }
.vp-notice-empty { padding: 24px; text-align: center; font-size: 12px; color: var(--t3, rgba(255,255,255,0.5)); }
.vp-notice-hint { margin-top: 10px; font-size: 11px; color: var(--t3, rgba(255,255,255,0.45)); line-height: 1.5; }

/* ============ 项目进度看板 ============ */
.vp-progress-board { display: flex; flex-direction: column; gap: 18px; }
.vp-prog-overview { background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 14px; padding: 16px; }
.vp-prog-stats { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.vp-prog-stat { text-align: center; padding: 8px 4px; background: var(--bg1, #1a1a1a); border-radius: 10px; }
.vp-prog-stat-num { font-size: 22px; font-weight: 700; color: var(--t1, #E5EAF3); line-height: 1.2; }
.vp-prog-stat-label { font-size: 11px; color: var(--t3, rgba(255,255,255,0.6)); margin-top: 4px; }
.vp-prog-section { }
.vp-prog-section-title { font-size: 14px; font-weight: 600; color: var(--t1, #E5EAF3); margin-bottom: 12px; display: flex; align-items: center; gap: 10px; }
.vp-prog-section-hint { font-size: 11px; font-weight: 400; color: var(--t3, rgba(255,255,255,0.55)); }
.vp-stage-line { display: flex; align-items: stretch; gap: 0; overflow-x: auto; padding-bottom: 4px; }
.vp-stage { position: relative; flex: 1 1 0; min-width: 120px; padding: 12px 14px; background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 10px; margin-right: 8px; }
.vp-stage:last-child { margin-right: 0; }
.vp-stage-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-bottom: 8px; }
.vp-stage.done .vp-stage-dot { background: var(--brand-green, #00DA5A); }
.vp-stage.doing .vp-stage-dot { background: #67F9FF; box-shadow: 0 0 0 4px rgba(103,249,255,0.15); animation: vp-pulse 1.6s ease-in-out infinite; }
.vp-stage.todo .vp-stage-dot { background: var(--t3, rgba(255,255,255,0.35)); }
@keyframes vp-pulse { 0%,100% { box-shadow: 0 0 0 4px rgba(103,249,255,0.15); } 50% { box-shadow: 0 0 0 7px rgba(103,249,255,0.05); } }
.vp-stage-name { font-size: 12px; font-weight: 600; color: var(--t1, #E5EAF3); }
.vp-stage-desc { font-size: 11px; color: var(--t3, rgba(255,255,255,0.6)); margin-top: 3px; }
.vp-ep-filterbar { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.vp-ep-search { width: 150px; padding: 6px 10px; font-size: 12px; color: var(--t1, #E5EAF3); background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.12)); border-radius: 7px; outline: none; }
.vp-ep-search:focus { border-color: var(--brand-green, #00DA5A); }
.vp-ep-search::placeholder { color: var(--t3, rgba(255,255,255,0.5)); }
.vp-ep-filters { display: flex; gap: 6px; flex-wrap: wrap; }
.vp-ep-filterbtn { padding: 5px 12px; font-size: 11px; color: var(--t3, rgba(255,255,255,0.6)); background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.1)); border-radius: 14px; cursor: pointer; transition: color 0.15s, background 0.15s, border-color 0.15s; }
.vp-ep-filterbtn:hover { color: var(--t1, #E5EAF3); }
.vp-ep-filterbtn.active { color: var(--t1, #E5EAF3); background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.25); }
.vp-ep-head { display: flex; align-items: center; gap: 10px; padding: 0 12px 8px; font-size: 11px; color: var(--t3, rgba(255,255,255,0.5)); border-bottom: 1px solid var(--bd, rgba(255,255,255,0.08)); }
.vp-ep-head span:nth-child(1) { width: 64px; flex-shrink: 0; }
.vp-ep-head-bar { flex: 1 1 auto; }
.vp-ep-head span:nth-child(3) { width: 70px; flex-shrink: 0; }
.vp-ep-head span:nth-child(4) { width: 56px; flex-shrink: 0; }
.vp-ep-head span:nth-child(5) { width: 64px; flex-shrink: 0; text-align: right; }
.vp-ep-list { display: flex; flex-direction: column; }
.vp-ep-row { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-bottom: 1px solid var(--bd, rgba(255,255,255,0.05)); font-size: 12px; }
.vp-ep-row:hover { background: rgba(255,255,255,0.03); }
.vp-ep-no { width: 64px; flex-shrink: 0; color: var(--t1, #E5EAF3); font-weight: 500; }
.vp-ep-bar { flex: 1 1 auto; height: 6px; background: var(--bg1, #1a1a1a); border-radius: 3px; overflow: hidden; }
.vp-ep-bar-inner { height: 100%; border-radius: 3px; transition: width 0.3s; }
.vp-ep-bar-inner.done { background: var(--brand-green, #00DA5A); }
.vp-ep-bar-inner.review { background: #FFB020; }
.vp-ep-bar-inner.doing { background: #67F9FF; }
.vp-ep-bar-inner.todo { background: var(--t3, rgba(255,255,255,0.25)); }
.vp-ep-num { width: 70px; flex-shrink: 0; color: var(--t3, rgba(255,255,255,0.65)); }
.vp-ep-assignee { width: 56px; flex-shrink: 0; color: var(--t2, #CFD3DC); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-ep-status { width: 64px; flex-shrink: 0; text-align: center; font-size: 10px; padding: 2px 6px; border-radius: 4px; box-sizing: border-box; }
.vp-ep-wrap { border-bottom: 1px solid var(--bd, rgba(255,255,255,0.05)); }
.vp-ep-ops { display: flex; gap: 5px; flex-shrink: 0; margin-left: auto; }
.vp-ep-op { padding: 3px 10px; font-size: 11px; color: var(--t2, #CFD3DC); background: rgba(255,255,255,0.05); border: 1px solid var(--bd, rgba(255,255,255,0.12)); border-radius: 6px; cursor: pointer; transition: color 0.15s, background 0.15s, border-color 0.15s; }
.vp-ep-op:hover { color: var(--brand-green, #00DA5A); background: rgba(0,218,90,0.08); border-color: rgba(0,218,90,0.4); }
/* 进度看板跳转资产库后的高亮闪烁 */
.char-group.asset-group.ast-flash { outline: 2px solid var(--brand-green, #00DA5A); outline-offset: 2px; animation: ast-flash-anim 1.6s ease-out; }
@keyframes ast-flash-anim { 0%,30% { box-shadow: 0 0 0 4px rgba(0,218,90,0.25); } 100% { box-shadow: 0 0 0 0 rgba(0,218,90,0); } }
.vp-ep-expand { padding: 3px 10px; font-size: 11px; color: var(--t3, rgba(255,255,255,0.6)); background: transparent; border: 1px solid var(--bd, rgba(255,255,255,0.1)); border-radius: 6px; cursor: pointer; }
.vp-ep-expand:hover { color: var(--t1, #E5EAF3); border-color: rgba(255,255,255,0.25); }
.vp-ep-detail { padding: 6px 12px 10px 76px; background: var(--bg1, #1a1a1a); }
.vp-ep-shots { display: flex; flex-direction: column; gap: 4px; }
/* 资产管理列表 */
.vp-am-list { display: flex; flex-direction: column; gap: 14px; }
.vp-am-group { }
.vp-am-group-title { font-size: 12px; font-weight: 600; color: var(--t3, rgba(255,255,255,0.6)); margin-bottom: 6px; letter-spacing: 0.2px; }
.vp-am-item { display: flex; align-items: center; gap: 10px; padding: 7px 12px; background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.06)); border-radius: 8px; font-size: 12px; margin-bottom: 4px; }
.vp-am-item:hover { border-color: rgba(255,255,255,0.14); }
.vp-am-name { flex: 1 1 auto; min-width: 0; display: flex; align-items: baseline; gap: 8px; overflow: hidden; }
.vp-am-ori { color: var(--t1, #E5EAF3); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-am-sub { font-size: 11px; color: var(--t3, rgba(255,255,255,0.55)); flex-shrink: 0; }
.vp-am-trans { color: var(--t3, rgba(255,255,255,0.6)); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-am-assignee { width: 64px; flex-shrink: 0; color: var(--t3, rgba(255,255,255,0.6)); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-am-item .vp-ep-status { width: 56px; }
.vp-am-ops { display: flex; gap: 5px; flex-shrink: 0; }
.vp-task-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
.vp-task-card { display: flex; align-items: center; gap: 10px; padding: 11px 13px; background: var(--bg2, #242424); border: 1px solid var(--bd, rgba(255,255,255,0.08)); border-radius: 12px; }
.vp-task-main { flex: 1 1 auto; min-width: 0; }
.vp-task-name { font-size: 13px; font-weight: 600; color: var(--t1, #E5EAF3); }
.vp-task-prog { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex-shrink: 0; width: 96px; }
.vp-task-bar { width: 100%; height: 5px; background: var(--bg1, #1a1a1a); border-radius: 3px; overflow: hidden; }
.vp-task-bar-inner { height: 100%; background: linear-gradient(90deg, #65FFAA, var(--brand-green, #00DA5A)); border-radius: 3px; }
.vp-task-pct { font-size: 11px; color: var(--t3, rgba(255,255,255,0.65)); white-space: nowrap; }
@media (max-width: 720px) {
  .vp-prog-stats { grid-template-columns: repeat(3, 1fr); }
  .tap-grid { grid-template-columns: repeat(2, 1fr); }
  .md-items { grid-template-columns: 1fr; }
}

