/* 内容智造 16 屏（v2.97.3）—— 按 16 张交互图配色：浅灰底 + 白卡 + 深蓝成本条 + 蓝 CTA */

/* ---------- 主列 ---------- */
.s16-main { display: flex; flex-direction: column; gap: 14px; min-width: 0; padding-bottom: 84px; }
.s16-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 2px 4px; }
.s16-head h1 { font-size: 22px; margin: 0; color: #16233b; }
.s16-sub { margin: 4px 0 0; font-size: 13px; color: #7d8aa0; }
.s16-autosave { flex: none; font-size: 12px; color: #5b8def; background: #eaf1ff; border-radius: 999px; padding: 4px 12px; }
/* v2.105.67：页头那行只放「自动保存」的空 header 让大标题与步骤条之间多出 27px 空白。
   版本徽标改挂到步骤条右端（.s16-line 是 flex:1，会把徽标顶到最右），顶部间距统一为 header 27px + s16-main gap 14px。 */
.s16-wizard > .s16-autosave { margin-left: 4px; }

/* 步骤条 */
.s16-wizard { display: flex; align-items: center; gap: 8px; background: #fff; border-radius: 14px; padding: 14px 18px; box-shadow: 0 1px 3px rgba(16, 32, 60, .06); flex-wrap: wrap; }
.s16-chip { display: inline-flex; align-items: center; gap: 8px; background: none; border: 0; cursor: pointer; font-size: 13px; color: #66738a; padding: 0; }
.s16-chip i { width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid #c9d4e2; background: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-style: normal; color: #8b98ad; flex: none; }
.s16-chip.on { color: #16233b; font-weight: 700; }
.s16-chip.on i, .s16-chip.done i { background: #2f6bff; border-color: #2f6bff; color: #fff; }
.s16-line { flex: 1 1 24px; min-width: 16px; height: 2px; background: #e3e9f2; }

/* 主体两列：主卡 + 规格 */
.s16-body { display: grid; grid-template-columns: minmax(0, 1fr) 240px; gap: 14px; align-items: start; }
.s16-card { background: #fff; border-radius: 14px; padding: 18px; box-shadow: 0 1px 3px rgba(16, 32, 60, .06); min-width: 0; }
.s16-card-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.s16-card-top b { font-size: 15px; color: #16233b; }

.s16-spec { background: #fff; border-radius: 12px; padding: 0; box-shadow: 0 1px 3px rgba(16, 32, 60, .06); position: sticky; top: 12px; overflow: hidden; }
/* v2.104.20：右侧面板＝「本步使用说明」，收窄到 240px 少占主操作区；子选择器避免误伤内层「开发说明」折叠 */
.s16-spec > details > summary { display:flex; align-items:center; justify-content:space-between; gap:6px; padding:10px 12px; cursor:pointer; list-style:none; color:#16233b; font-size:13px; font-weight:800; }
.s16-spec > details > summary::-webkit-details-marker { display:none; }
.s16-spec > details > summary small { color:#7d8aa0; font-size:10.5px; font-weight:500; }
.s16-spec > details > summary::after { content:'展开'; color:#2f6bff; font-size:10.5px; }
.s16-spec > details[open] > summary::after { content:'收起'; }
.s16-spec-body { padding:0 12px 8px; border-top:1px solid #eef1f6; max-height:calc(100vh - 210px); overflow:auto; }
.s16-sec { border-top: 1px solid #eef1f6; padding: 9px 0; }
.s16-sec:first-child { border-top: 0; }
.s16-sec b { display: block; font-size: 11.5px; color: #3c4a61; margin-bottom: 3px; overflow-wrap: anywhere; }
.s16-sec p { margin: 0 0 5px; font-size: 11.5px; line-height: 1.6; color: #7d8aa0; overflow-wrap: anywhere; }
/* 面板内再折叠一层「开发说明」（原本屏交互规格），默认收起不占位，证据不丢 */
.s16-spec-dev { margin-top: 8px; border-top: 1px solid #eef1f6; }
.s16-spec-dev > summary { display:flex; align-items:center; gap:6px; padding:8px 0 6px; cursor:pointer; list-style:none; color:#9aa6b8; font-size:10.5px; font-weight:600; }
.s16-spec-dev > summary::-webkit-details-marker { display:none; }
.s16-spec-dev > summary::after { content:'展开'; color:#9aa6b8; font-size:10.5px; margin-left:auto; }
.s16-spec-dev[open] > summary::after { content:'收起'; }
.s16-spec-dev-body { padding-bottom: 4px; }
.s16-spec-dev-body .s16-sec p { font-size: 11px; }

/* ---------- 深色成本条 ---------- */
.s16-costbar { background: #0d1b2e; border-radius: 12px; padding: 14px 18px; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; position: sticky; bottom: 8px; z-index: 20; box-shadow: 0 -6px 18px rgba(13, 27, 46, .18); }
.s16-metrics { display: flex; gap: 28px; flex-wrap: wrap; }
.s16-metric span { display: block; font-size: 11px; color: #8b98ab; margin-bottom: 2px; }
.s16-metric b { font-size: 14px; color: #fff; }
.s16-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.s16-costbar .small-btn.ghost { background: transparent; border: 1px solid #3a4a63; color: #cfd8e3; }
.s16-costbar .small-btn.ghost:disabled { opacity: .4; }
/* 通用 ghost 按钮（分组筛选 chip 等，非成本条内） */
.small-btn.ghost { background: transparent; border: 1px solid #dfe5ee; color: #66738a; }
.small-btn.ghost:hover { border-color: #2f6bff; color: #2f6bff; }
.s16-costbar .btn.primary { background: #3b7bff; border-color: #3b7bff; box-shadow: 0 2px 10px rgba(59, 123, 255, .4); }

/* 专业剪辑台整屏模式（dh/rep2 第⑤屏）：隐藏大标题，保留步骤条，剪辑台撑满可视高度
   （v2.102.179 引入，v2.102.182 修高度基准与步骤条）
   ① 步骤条必须保留（老板反馈「其他步骤哪去了」）；② 整屏高度必须按「视口 − 应用顶栏」
      算（否则从 y=111 起算 100vh 会溢出 111px，把底部 costbar 里的 CTA/下一步切掉）；
   ③ 有 lc 屏时消掉 main 的 60px 下内边距，避免多出 60px 滚动。 */
.s16--lc { height: calc(100vh - 111px); overflow: hidden; }
.s16--lc .s16-main { height: calc(100vh - 111px); display: flex; flex-direction: column; gap: 0; padding: 0 0 10px; }
body:has(.page.active .s16--lc) main { padding-bottom: 0; }
.s16--lc .s16-head { display: none; }
/* 整屏剪辑台只留步骤条，版本徽标不占位 */
.s16--lc .s16-autosave { display: none; }
/* 整屏模式步骤条只隐大标题、保留步骤条；左右边界必须与下面的白卡一致
   （v2.102.185：原来写了 margin:8px 10px，导致步骤条比工作区左右各内缩 10px、看着没对齐，
    改为 margin 左右 0 + padding 左右 10px，与 .s16-card--lc 的 10px 内边距对齐） */
.s16--lc .s16-wizard { display: flex; flex: none; margin: 8px 0 4px; padding: 8px 10px; border-radius: 10px; }
/* 整屏模式底部条只留「上一步/下一步/CTA」，隐掉「今日用量」数字行：
   窄屏（1366×768）下它会折成两行把 costbar 撑到 121px、剪辑台只剩 227px；其他步骤照常显示（v2.102.182） */
.s16--lc .s16-metrics { display: none; }
.s16--lc .s16-body--lc { flex: 1; min-height: 0; display: flex; align-items: stretch; }
.s16--lc .s16-card--lc { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 8px; padding: 10px; margin: 0; }
.s16--lc .s16-lc-wrap { flex: 1; min-height: 0; height: auto; }
.s16--lc .s16-lc-bar { flex: none; }
/* v2.102.205：.s16--lc .s16-lc-addbar 随「＋从视频任务追加 / ＋从素材库追加」按钮一起下线 */
/* v2.102.200：整屏剪辑台的「上一步/下一步/CTA」不再单独占一条底栏（那一行被砍掉，行高全给剪辑台），
   改由 actionsInner 注入到剪辑台上方这一行（.s16-lc-bar）右端。
   该行不换行；中间的提示语在这一行隐掉（同一句话已挂到「↻ 重新加入」按钮的 title 上），
   因为底部悬浮的「知识库」常驻条正好落在视口正中，会压住这段文字（实测 pill x 663–778 落在 note x 492–1031 内）。
   隐掉后 pill 只悬浮在这行的空白上，不再遮任何按钮/文字。 */
.s16--lc .s16-costbar { display: none; }
.s16--lc .s16-lc-bar { align-items: center; flex-wrap: nowrap; }
.s16--lc .s16-lc-bar .s16-note { display: none; }
.s16-lc-actions { margin-left: auto; flex: none; }
.s16-lc-actions .s16-actions { margin-left: 0; }
/* 注意：基线 .s16-rep-workbench 带 align-items:start（grid 语义占位），本行改成 flex 列后必须显式 align-items:stretch，
   否则子项不撑满宽度、剪辑台会被压成内容宽（v2.102.180 修复） */
.s16--lc .s16-rep-workbench { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: stretch; }
.s16--lc .s16-rep-workbench .s16-lc-wrap { flex: 1; }
.s16-lc-wrap { position: relative; border-radius: 12px; overflow: hidden; background: #0b1220; height: 76vh; }
.s16-lc-frame { width: 100%; height: 100%; border: 0; display: block; background: #0b1220; }
.s16-lc-cap { font-size: 12px; color: #7d8aa0; line-height: 1.5; }

/* ---------- 屏内通用组件 ---------- */
.s16-cols { display: grid; grid-template-columns: 1fr 1.1fr; gap: 16px; align-items: start; }
.s16-cols3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; align-items: stretch; }
.s16-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.s16-colL, .s16-colR { min-width: 0; }
/* v2.104.2：rep2 ④屏两列改为可纵向堆叠的容器——右列＝配音卡片 + 连贯生成块（进度条正好在配音下方） */
.s16-colstack { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.s16-colstack > .s16-coherent { margin-top: 0; }
.s16-mini-h { font-size: 12px; font-weight: 700; color: #3c4a61; margin: 10px 0 6px; }
.s16-mini-h:first-child { margin-top: 0; }

.s16-tabs { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.s16-tabs button { border: 1px solid #dfe5ee; background: #f6f8fb; border-radius: 8px; padding: 6px 14px; font-size: 12px; color: #66738a; cursor: pointer; }
.s16-tabs button.on { background: #eaf1ff; border-color: #2f6bff; color: #2f6bff; font-weight: 700; }

.s16-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.s16-chips button { border: 1px solid #dfe5ee; background: #f6f8fb; border-radius: 8px; padding: 5px 12px; font-size: 12px; color: #66738a; cursor: pointer; }
.s16-chips button.on { background: #eaf1ff; border-color: #2f6bff; color: #2f6bff; font-weight: 700; }

.s16-field { display: block; margin-bottom: 10px; }
.s16-field > span { display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: #3c4a61; margin-bottom: 5px; font-weight: 600; }
.s16-required { margin-left: 8px; color: #c2413b; font-size: 11px; font-weight: 700; }
.s16-field input, .s16-field textarea, .s16-field select { width: 100%; box-sizing: border-box; border: 1px solid #dfe5ee; border-radius: 8px; padding: 9px 12px; font-size: 13px; color: #16233b; background: #fff; font-family: inherit; }
.s16-field input:focus, .s16-field textarea:focus, .s16-field select:focus { outline: 2px solid #bcd2ff; border-color: #2f6bff; }
.s16-field textarea { resize: vertical; line-height: 1.6; }
.s16-meta { font-style: normal; font-weight: 400; color: #8b98ab; }
/* v2.105.131：数字人「实际下发提示词」——把后端组装结果摊开给老板看 */
.s16-pv { margin: -2px 0 10px; }
.s16-pv > summary { cursor: pointer; font-size: 12px; color: #4a6fa5; }
.s16-pv > pre { margin: 6px 0 0; padding: 10px 12px; border: 1px solid #dfe5ee; border-radius: 8px; background: #f7f9fc; color: #16233b; font-size: 11px; line-height: 1.55; white-space: pre-wrap; word-break: break-word; max-height: 240px; overflow: auto; }
html[data-theme="tech"] .s16-pv > summary { color: #8fb0e0; }
html[data-theme="tech"] .s16-pv > pre { background: #141b26; border-color: rgba(120,150,190,.35); color: #dce9ff; }
html[data-theme="dream"] .s16-pv > summary { color: #b9b2ea; }
html[data-theme="dream"] .s16-pv > pre { background: #15121f; border-color: rgba(165,156,224,.3); color: #ded9ff; }

/* 爆款复刻第④屏：AI 编导结果区。把“生成”与“实际回填”放在同一块，避免按钮只调用模型却不影响后续任务。 */
.s16-ai-plan { background: linear-gradient(135deg, #f4f8ff 0%, #fff 72%); border: 1px solid #cfe0ff; border-radius: 12px; padding: 14px 16px; margin-bottom: 16px; }
.s16-ai-plan-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.s16-ai-plan-head b { display: block; color: #12345b; font-size: 15px; }
.s16-ai-plan-head small { display: block; margin-top: 4px; color: #70809a; font-size: 12px; line-height: 1.6; }
.s16-ai-plan-assets, .s16-ai-plan-status { margin: 8px 0 0; color: #61728c; font-size: 12px; line-height: 1.6; }
.s16-ai-plan-status { position: relative; overflow: hidden; border: 1px solid #b9d5ff; border-radius: 10px; padding: 12px 14px; background: linear-gradient(135deg, #eef6ff 0%, #f8fbff 72%, #fff 100%); box-shadow: 0 3px 12px rgba(47, 107, 255, .08); }
.s16-ai-plan-status.is-processing { border-color: #6b9fff; box-shadow: 0 0 0 2px rgba(47, 107, 255, .08), 0 5px 18px rgba(47, 107, 255, .14); }
.s16-ai-plan-status.is-success { border-color: #8fd2ad; background: linear-gradient(135deg, #effbf4 0%, #fff 78%); }
.s16-ai-plan-status.is-ready { border-color: #e4c477; background: linear-gradient(135deg, #fffaf0 0%, #fff 78%); }
.s16-ai-plan-status.is-error { border-color: #f0a79f; background: linear-gradient(135deg, #fff4f2 0%, #fff 78%); }
.s16-status-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.s16-status-title { display: inline-flex; align-items: center; gap: 7px; color: #12345b; font-size: 13px; }
.is-success .s16-status-title { color: #147346; }
.is-ready .s16-status-title { color: #8a5b00; }
.is-error .s16-status-title { color: #a23a31; }
.s16-status-dot { display: inline-block; width: 9px; height: 9px; flex: 0 0 9px; border-radius: 50%; background: #2f6bff; box-shadow: 0 0 0 4px rgba(47, 107, 255, .14); }
.is-processing .s16-status-dot { animation: s16-status-pulse 1.35s ease-in-out infinite; }
.is-success .s16-status-dot { background: #20a15c; box-shadow: 0 0 0 4px rgba(32, 161, 92, .13); }
.is-error .s16-status-dot { background: #d64b3e; box-shadow: 0 0 0 4px rgba(214, 75, 62, .13); }
.s16-status-badge { display: inline-flex; align-items: center; min-height: 22px; border-radius: 999px; padding: 2px 9px; color: #215bc8; background: #dceaff; font-size: 11px; font-weight: 700; white-space: nowrap; }
.is-success .s16-status-badge { color: #147346; background: #dff5e8; }
.is-ready .s16-status-badge { color: #8a5b00; background: #fff0c7; }
.is-error .s16-status-badge { color: #a23a31; background: #ffe2de; }
.s16-status-main { margin-top: 6px; color: #4c6380; font-size: 12px; line-height: 1.65; }
.s16-status-progress { height: 6px; margin: 10px 0 9px; overflow: hidden; border-radius: 999px; background: #dbe8fb; }
.s16-status-progress span { display: block; width: 42%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #2f6bff, #6ca4ff, #2f6bff); animation: s16-status-slide 1.5s ease-in-out infinite; }
.s16-status-stages { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin-top: 7px; }
.s16-status-stages span { display: flex; align-items: center; gap: 5px; min-width: 0; color: #8492a6; font-size: 11px; white-space: nowrap; }
.s16-status-stages span i { display: inline-flex; align-items: center; justify-content: center; width: 17px; height: 17px; flex: 0 0 17px; border: 1px solid #c9d5e5; border-radius: 50%; color: #7f8da1; background: #fff; font-size: 10px; font-style: normal; }
.s16-status-stages span.active { color: #215bc8; font-weight: 700; }
.s16-status-stages span.active i { border-color: #2f6bff; color: #fff; background: #2f6bff; box-shadow: 0 0 0 3px rgba(47, 107, 255, .12); }
.s16-status-stages span.done { color: #147346; }
.s16-status-stages span.done i { border-color: #42b87b; color: #fff; background: #42b87b; }
.s16-status-footer { display: flex; align-items: center; flex-wrap: wrap; gap: 5px 12px; margin-top: 9px; padding-top: 8px; border-top: 1px solid rgba(120, 155, 200, .2); color: #718397; font-size: 11px; }
.s16-status-footer strong { color: #b35c00; font-weight: 700; }
.is-success .s16-status-footer strong { color: #147346; }
.is-error .s16-status-footer strong { color: #a23a31; }
@keyframes s16-status-pulse { 0%, 100% { opacity: .55; transform: scale(.86); } 50% { opacity: 1; transform: scale(1.15); } }
@keyframes s16-status-slide { 0% { transform: translateX(-110%); } 50% { transform: translateX(105%); } 100% { transform: translateX(240%); } }
.s16-ai-plan-brief { margin-top: 12px; margin-bottom: 8px; }
.s16-ai-plan-brief textarea { min-height: 72px; resize: vertical; background: #fff; }
/* v2.102.225：成片规格统一块（成片总时长 / 清晰度 / 画幅 / 台词目标时长），置于「一键生成整套方案」上方 */
/* v2.102.226：改主题自适应——原来写死 background:#fff，深色主题（科技/极光）下文字随主题继承为浅色 → 白底白字看不清。
   现在只给「淡色底 + 描边」，文字一律继承主题色；深色主题另给玻璃态底。 */
.s16-out-spec { margin: 12px 0 8px; border: 1px solid #cfe0ff; border-radius: 10px; padding: 10px 12px; background: rgba(47, 107, 255, .05); }
.s16-out-spec > b { display: block; font-size: 13px; }
.s16-out-spec > .s16-note { display: block; margin: 4px 0 8px; }
.s16-out-spec .s16-2col { margin-bottom: 0; }
/* v2.102.232：四个规格项一行排（总时长/清晰度/画幅/台词时长），窄屏回落 2×2 */
.s16-out-spec .s16-4col { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px 14px; margin: 2px 0 0; align-items: start; }
.s16-out-spec .s16-4col .s16-field { margin-bottom: 0; min-width: 0; }
.s16-out-spec .s16-4col select, .s16-out-spec .s16-4col input { width: 100%; }
@media (max-width: 1180px) { .s16-out-spec .s16-4col { grid-template-columns: 1fr 1fr; } }
html[data-theme="tech"] .s16-out-spec .s16-4col select, html[data-theme="tech"] .s16-out-spec .s16-4col input { background: rgba(255,255,255,.06); }
html[data-theme="tech"] .s16-out-spec { border-color: rgba(96, 180, 255, .32); background: rgba(255, 255, 255, .055); }
html[data-theme="dream"] .s16-out-spec { border-color: rgba(165, 156, 224, .22); background: rgba(255, 255, 255, .045); }
.s16-audio-reference-option,.s16-clip-audio-option{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding:9px 11px;border:1px solid var(--s16-line,#2a2f3a);border-radius:8px;background:rgba(255,255,255,.025)}
.s16-audio-reference-option .s16-note,.s16-clip-audio-option .s16-note{margin:0}
.s16-clip-audio-option .s16-check{margin-right:auto}
.s16-rep2-step-tts>.s16-audio-reference-option{margin-top:auto}
.s16-rep2-step-tts>#rep2-line-chk{margin-top:8px}
.s16-plan-narrative{grid-column:1/-1;padding:8px 10px;border:1px solid rgba(120,150,200,.3);border-radius:8px;background:rgba(255,255,255,.025)}
.s16-plan-narrative>summary{cursor:pointer;color:#b9cdef;font-size:12px}
.s16-plan-narrative>p{margin:8px 0 2px;line-height:1.6;white-space:pre-wrap}
/* v2.102.208：④屏「图片理解方式」说明块（.s16-ai-mode*）与其空态行、已下线的图片理解单选项（.s16-plan-image-option）规则一并删除。 */
.s16-ai-plan-grid { display: grid; grid-template-columns: 1fr 1.35fr; gap: 10px 14px; margin-top: 12px; }
.s16-ai-plan-grid .s16-field { margin-bottom: 0; }
.s16-ai-plan-grid textarea { background: rgba(255,255,255,.9); }
.s16-image-recognition { margin-top: 12px; padding: 12px; border: 1px solid #d7e3f3; border-radius: 10px; background: #fff; }
.s16-image-rec-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 12px; margin-bottom: 9px; }
.s16-image-rec-head b { color: #12345b; font-size: 13px; }
.s16-image-rec-head small, .s16-image-rec-body > small { color: #718397; font-size: 11px; line-height: 1.5; }
.s16-image-rec-evidence { display: block; margin-top: 5px; padding: 5px 6px; border-radius: 6px; color: #2d6f55 !important; background: #eef9f2; overflow-wrap: anywhere; }
.s16-image-rec-evidence code { color: #1e654a; font-size: 10px; }
.s16-image-rec-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 10px; }
.s16-image-rec-card { display: grid; grid-template-columns: 100px minmax(0, 1fr); gap: 10px; min-width: 0; padding: 9px; border: 1px solid #dce5ef; border-radius: 9px; background: #f8fafc; }
.s16-image-rec-card.ok { border-color: #bfdfcd; }
.s16-image-rec-card.failed { border-color: #f2c8c2; background: #fff9f8; }
.s16-image-rec-card > img { width: 100px; height: 100px; object-fit: contain; border: 1px solid #e4eaf1; border-radius: 7px; background: #eef2f7; }
.s16-image-rec-body { min-width: 0; }
.s16-image-rec-body > b { display: block; margin-bottom: 6px; color: #12345b; font-size: 12px; }
.s16-image-rec-body .s16-field { margin: 5px 0; }
.s16-image-rec-body .s16-field > span { font-size: 11px; }
.s16-image-rec-body textarea { min-height: 62px; resize: vertical; background: #fff; }
.s16-image-recognition > .s16-note, .s16-image-recognition > .s16-amber { margin: 9px 0 0; }
.s16-image-recognition .s16-btnrow { margin-top: 8px; }
@media (max-width: 900px) { .s16-ai-plan-head { align-items: flex-start; flex-direction: column; } .s16-ai-plan-head .btn { width: 100%; } .s16-ai-plan-grid { grid-template-columns: 1fr; } .s16-ai-mode-options { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .s16-image-rec-card { grid-template-columns: 74px minmax(0, 1fr); } .s16-image-rec-card > img { width: 74px; height: 90px; } .s16-status-top { align-items: flex-start; flex-direction: column; } .s16-status-stages { grid-template-columns: 1fr; gap: 4px; } }

.s16-btnrow { display: flex; gap: 8px; flex-wrap: wrap; margin: 8px 0; }
.s16-tag { display: inline-flex; align-items: center; font-size: 11px; border-radius: 6px; padding: 2px 8px; background: #eef2f8; color: #66738a; font-style: normal; }
.s16-tag.ok { background: #e7f7ee; color: #199a56; }
.s16-tag.off { background: #f2f4f8; color: #a4aebd; }
.s16-tag.warn { background: #fff4e0; color: #b26a00; }

.s16-ok { font-size: 12px; color: #199a56; background: #e7f7ee; border-radius: 8px; padding: 6px 10px; margin: 6px 0; }
.s16-note { font-size: 12px; color: #7d8aa0; line-height: 1.65; }
.s16-amber { font-size: 12px; color: #8a5b00; background: #fff7e6; border: 1px solid #ffe3ad; border-radius: 8px; padding: 8px 12px; line-height: 1.6; }
.s16-errorbar { font-size: 12px; color: #9f2f25; background: #fff1ef; border: 2px solid #e1584d; border-radius: 8px; padding: 10px 12px; line-height: 1.65; box-shadow: 0 3px 12px rgba(181, 58, 47, .12); }
.s16-amberbar { font-size: 12px; color: #8a5b00; background: #fff7e6; border-radius: 8px; padding: 8px 12px; margin-top: 10px; }
/* 镜头卡映射标签 + 覆盖率条 */
.s16-eff-tag { display: inline-block; font-size: 11px; color: #2f6bff; background: #eef3ff; border: 1px solid #d6e2ff; border-radius: 6px; padding: 1px 7px; margin-top: 5px; }
.s16-eff-tag.off { color: #8a93a6; background: #f1f3f7; border-color: #e2e6ee; }
.s16-eff-tag.remo { color: #b46a00; background: #fff4e0; border-color: #f3ddb0; }
.s16-shotcraft-cover { font-size: 12px; color: #7d8aa0; margin: 6px 0 2px; line-height: 1.55; }
.s16-shotcraft-cover.s16-amber { padding: 7px 11px; }
.s16-shotcraft-cover.s16-ok { color: #199a56; background: #e7f7ee; border-radius: 8px; padding: 6px 10px; }
.s16-shotcraft-guide { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 8px; padding:9px 11px; border-radius:9px; background:#eef5ff; color:#315475; font-size:11px; }
.s16-shotcraft-guide b { color:#123f68; }
.s16-shotcraft-guide span { padding-left:8px; border-left:1px solid #bfd2e8; }
.s16-blockbar { font-size: 12px; border-radius: 8px; padding: 9px 12px; margin: 8px 0; background: #fdeef0; color: #c2373f; border: 1px solid #f6cdd1; }
.s16-blockbar.ok { background: #e7f7ee; color: #199a56; border-color: #bfe7d0; }

.s16-progress { height: 8px; border-radius: 6px; background: #e9ecf2; overflow: hidden; margin-bottom: 6px; }
.s16-progress-bar { height: 100%; border-radius: 6px; background: linear-gradient(90deg, #9EACEA, #8BC8EA); transition: width .6s ease; width: 0%; }
.s16-progress-label { font-size: 12px; color: #5b6b84; margin-bottom: 10px; }

.s16-out { margin-top: 8px; min-width: 0; }
/* 本次意图：点模式卡时可能已滚到下方，吸附在视口顶部保证一直可见 */
.s16-intent { position: sticky; top: 6px; z-index: 15; background: #eef4ff; border: 1px solid #c9dcff; border-radius: 10px; padding: 10px 12px; font-size: 12.5px; line-height: 1.6; color: #1f3352; box-shadow: 0 4px 14px rgba(13,27,46,.08); }
.s16-out audio, .s16-out video { width: 100%; max-width: 360px; margin-top: 6px; border-radius: 8px; }
.s16-out img { border-radius: 8px; }

/* 单选卡（声音来源） */
.s16-radio { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; border: 1px solid #e3e9f2; border-radius: 10px; padding: 12px; margin-bottom: 8px; cursor: pointer; }
.s16-radio:has(input:checked) { border-color: #2f6bff; background: #f5f9ff; }
.s16-radio input { accent-color: #2f6bff; }
.s16-radio b { font-size: 13px; color: #16233b; }
.s16-radio small { width: 100%; font-size: 11px; color: #8b98ab; padding-left: 22px; }
.s16-radio em { margin-left: auto; }

.s16-check { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #3c4a61; margin: 6px 0; cursor: pointer; }
.s16-check input { accent-color: #2f6bff; }
.s16-coherent{margin-top:12px;padding-top:12px;border-top:1px dashed rgba(150,170,200,.4);display:flex;flex-direction:column;gap:8px}
.s16-coherent .s16-muted{margin-top:-2px}
/* 连贯分镜醒目状态卡：运行(蓝+进度条)/成功(绿)/失败(红)/提醒(黄)，大字号加边框，一眼可见 */
.s16-coh-status{display:flex;flex-direction:column;gap:7px;font-size:13.5px;font-weight:700;border-radius:10px;padding:12px 14px;line-height:1.6;border:2px solid;animation:s16cohIn .25s ease}
/* v2.103.7：hidden 必须真正隐藏——.s16-coh-status 的 display:flex 会盖过 UA 的 [hidden]{display:none}，导致空状态卡渲染成一个幽灵空框（老板截图反馈「这是进度条吗」） */
.s16-coh-status[hidden]{display:none!important}
@keyframes s16cohIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.s16-coh-status.run{color:#0b3ea8;background:linear-gradient(135deg,#e8f0ff,#d6e4ff);border-color:#2f6bff;box-shadow:0 2px 12px rgba(47,107,255,.28)}
.s16-coh-status.done{color:#0d6b2f;background:linear-gradient(135deg,#e8fbee,#d3f5dd);border-color:#2fae5e;box-shadow:0 2px 12px rgba(47,174,94,.28)}
.s16-coh-status.err{color:#a02015;background:linear-gradient(135deg,#fff1ef,#ffe3e0);border-color:#e1584d;box-shadow:0 3px 14px rgba(181,58,47,.3)}
.s16-coh-status.warn{color:#8a5b00;background:#fff7e6;border-color:#ffc53d}
.s16-coh-status .coh-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.s16-coh-status .coh-pct{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;background:rgba(47,107,255,.14);padding:1px 9px;border-radius:999px;color:#1565c8}
.s16-coh-status .coh-track{height:16px;border-radius:9px;background:rgba(47,107,255,.14);overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.18)}
.s16-coh-status .coh-fill{height:100%;border-radius:9px;background:linear-gradient(90deg,#2f6bff,#39c6ff,#2f6bff);background-size:200% 100%;box-shadow:0 0 12px rgba(57,198,255,.55);transition:width .45s cubic-bezier(.22,.61,.36,1);position:relative;overflow:hidden;animation:cohShift 2.4s linear infinite}
.s16-coh-status .coh-fill::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(45deg,rgba(255,255,255,.28) 0,rgba(255,255,255,.28) 10px,transparent 10px,transparent 20px);animation:cohStripe 1s linear infinite}
.s16-coh-status.done .coh-fill{background:linear-gradient(90deg,#22c55e,#34d399);box-shadow:0 0 12px rgba(52,211,153,.5)}
.s16-coh-status.err .coh-fill{background:linear-gradient(90deg,#ef4444,#f87171);box-shadow:0 0 12px rgba(239,68,68,.5)}
@keyframes cohSweep{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes cohShift{from{background-position:0 0}to{background-position:200% 0}}
@keyframes cohStripe{from{background-position:0 0}to{background-position:40px 0}}
/* ⑤屏②卡配乐列表：多列铺开+限高滚动，长文件名省略号（悬停 title 看全名） */
.s16-bgm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 2px 14px; max-height: 170px; overflow: auto; padding: 2px; }
.s16-bgm-grid .s16-check { margin: 3px 0; min-width: 0; }
.s16-bgm-grid .s16-check-txt { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.s16-eff-grid { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 2px 0 10px; }
.s16-eff-grid .s16-check { margin: 4px 0; }

.s16-kv { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px dashed #edf1f7; padding: 7px 2px; font-size: 12px; }
.s16-kv span { color: #8b98ab; }
.s16-kv b { color: #16233b; font-weight: 600; }

/* 上传拖放区 */
label.drop-zone { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; border: 1.5px dashed #c9d4e2; border-radius: 10px; padding: 22px 12px; cursor: pointer; text-align: center; background: #fafcff; }
label.drop-zone:hover { border-color: #2f6bff; background: #f5f9ff; }
label.drop-zone span { font-size: 20px; color: #2f6bff; }
label.drop-zone strong { font-size: 13px; color: #3c4a61; }
label.drop-zone small { font-size: 11px; color: #8b98ab; }
label.drop-zone.small { padding: 14px 10px; }
/* hidden 属性会被上面的 display:flex 覆盖，必须显式压掉（否则「点素材库/AI 仍显示上传区」） */
label.drop-zone[hidden] { display: none; }

/* 槽位卡 */
.s16-pick { border: 1px solid #e3e9f2; border-radius: 12px; padding: 14px; background: #fff; min-width: 0; }
.s16-slotbox { border: 1px dashed #cdd9e8; border-radius: 10px; padding: 10px; margin-top: 8px; background: #f8fafd; }
.s16-slotbox > b { display: block; font-size: 12px; color: #1d2b3f; }
.s16-slotbox > small { display: block; color: #7d8aa0; font-size: 11px; margin-bottom: 6px; }
.s16-recbadge { position: absolute; top: 10px; right: 12px; background: #e8f1ff; color: #2563eb; border: 1px solid #b9d4ff; border-radius: 999px; font-size: 11px; padding: 2px 8px; font-weight: 600; }
.s16-routecard { position: relative; }
.s16-pick > b { display: block; font-size: 13px; color: #16233b; }
.s16-pick > small { display: block; font-size: 11px; color: #8b98ab; margin: 2px 0 8px; }
.s16-slotcheck { font-size: 11px; color: #a4aebd; margin-top: 8px; }
.s16-slotcheck.ok { color: #199a56; }
/* v2.105.138：槽位已选素材 + 「去掉」按钮（浅色底深字，两个深色主题各自覆盖，别只写字色） */
.s16-slot-picked { display: inline-flex; align-items: flex-start; gap: 6px; }
.s16-slot-picked img { border-radius: 8px; }
.s16-slot-drop { border: 1px solid #e3b4b4; background: #fdf2f2; color: #a33; border-radius: 6px; padding: 2px 8px; font-size: 11px; cursor: pointer; }
html[data-theme="tech"] .s16-slot-drop { background: rgba(120, 60, 60, .45) !important; border-color: rgba(255, 150, 150, .45) !important; color: #ffd9d9 !important; }
html[data-theme="dream"] .s16-slot-drop { background: rgba(120, 60, 90, .45) !important; border-color: rgba(255, 170, 200, .45) !important; color: #ffdcec !important; }
/* v2.105.122：双模模型（首/尾帧 ⇄ 参考图）切换 Tab + 参考图槽位网格 */
.s16-inputmode-tabs { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 10px 0 4px; }
.s16-inputmode-tabs > button { border: 1px solid #dfe5ee; background: #f6f8fb; border-radius: 999px; padding: 6px 14px; font-size: 12px; color: #66738a; cursor: pointer; }
.s16-inputmode-tabs > button.on { background: #2f6bff; border-color: #2f6bff; color: #fff; font-weight: 700; }
.s16-inputmode-ai { font-size: 11px; color: #b26a00; background: #fff4e0; border: 1px solid #ffe1ad; border-radius: 999px; padding: 3px 10px; margin-left: 4px; }
html[data-theme="tech"] .s16-inputmode-ai,html[data-theme="dream"] .s16-inputmode-ai{color:#eaf4ff;background:rgba(20,43,79,.94);border-color:rgba(96,180,255,.58);font-weight:600;line-height:1.5}
.s16-inputmode-slotwrap { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; margin-top: 8px; }
.s16-inputmode-slotwrap .s16-refslot { margin-top: 0; }
.s16-refslot > b { display: flex; align-items: center; gap: 6px; }
.s16-refslot .s16-out img { border-radius: 8px; margin-top: 6px; max-width: 100%; }
.s16-refslot .s16-out video { border-radius: 8px; margin-top: 6px; }

/* 管线（生成口播） */
.s16-pipeline { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 16px 0; flex-wrap: wrap; }
.s16-pipeline > i { font-style: normal; color: #b6c2d4; font-size: 18px; }
.s16-stage { text-align: center; min-width: 110px; }
.s16-stage-ph { width: 84px; height: 84px; border-radius: 14px; background: #dfe7f2; display: flex; align-items: center; justify-content: center; font-size: 30px; margin: 0 auto 8px; }
.s16-stage-ph.dim { opacity: .45; }
.s16-stage-ph.has-media { padding: 0; overflow: hidden; }
button.s16-audio-slot { border: 0; cursor: pointer; position: relative; font-family: inherit; }
button.s16-audio-slot:not(.dim):hover { background: #cddcf1; }
button.s16-audio-slot.playing { background: #cfe0ff; box-shadow: 0 0 0 2px #2f6bff inset; }
.s16-play-badge { position: absolute; right: -4px; bottom: -4px; width: 22px; height: 22px; border-radius: 50%; background: #2f6bff; color: #fff; font-style: normal; font-size: 10px; line-height: 22px; text-align: center; box-shadow: 0 1px 4px rgba(22, 35, 59, .25); }
.s16-stage-ph img, .s16-stage-ph video { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; display: block; }
.s16-stage-ph.blue { background: #cfe0ff; }
.s16-stage.wide .s16-stage-ph { width: 64px; height: 96px; border-radius: 10px; }
.s16-stage b { display: block; font-size: 12px; color: #16233b; }
.s16-stage small { font-size: 11px; color: #8b98ab; }

.s16-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 8px; }
.s16-stat { border: 1px solid #e3e9f2; border-radius: 10px; padding: 12px; }
.s16-stat em { display: inline-block; font-style: normal; font-size: 11px; border-radius: 6px; padding: 2px 8px; background: #eef2f8; color: #66738a; margin-bottom: 6px; }
.s16-stat em.ok { background: #e7f7ee; color: #199a56; }
.s16-stat b { display: block; font-size: 15px; color: #16233b; }
.s16-stat small { font-size: 11px; color: #8b98ab; }
.s16-progress { height: 5px; background: #eef1f6; border-radius: 4px; margin-top: 8px; overflow: hidden; }
.s16-progress i { display: block; height: 100%; background: #2f6bff; border-radius: 4px; transition: width .4s; }
/* 进行中但上游不返回真实进度：流动条（诚实表达「渲染中」，不假装精确百分比） */
.s16-progress i.indet { width: 42%; background: linear-gradient(90deg, #2f6bff, #7fb0ff, #2f6bff); background-size: 220% 100%; animation: s16-av-indet 1.2s linear infinite; }
@keyframes s16-av-indet { 0% { background-position: 220% 0; } 100% { background-position: -220% 0; } }

/* 平台 */
.s16-platforms { display: flex; flex-direction: column; gap: 6px; }
.s16-platforms label { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #3c4a61; border: 1px solid #eef1f6; border-radius: 8px; padding: 8px 10px; cursor: pointer; }
.s16-platforms input { accent-color: #2f6bff; }
.s16-platforms em { margin-left: auto; }

/* 路线卡（复刻路线 / 生成模式） */
.s16-routebig, .s16-modegrid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: start; }
.s16-modegrid { grid-template-columns: 1fr 1fr; }
.s16-routecard { position: relative; text-align: left; border: 1.5px solid #e3e9f2; border-radius: 12px; background: #fff; padding: 16px; cursor: pointer; display: flex; flex-direction: column; gap: 4px; width: 100%; }
/* 模型卡外层（模型卡 + 它自己的作品预览）。button 是表单控件，宽度默认「收缩到内容」，
   放进普通 div 里不会铺满格子 → 右侧空一大条。用 flex column 让子项横向拉伸铺满 */
.s16-mwrap { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.s16-routecard b { font-size: 14px; color: #16233b; }
.s16-routecard small { font-size: 12px; color: #7d8aa0; line-height: 1.55; }
.s16-routecard.on { border-color: #2f6bff; background: #f5f9ff; box-shadow: 0 0 0 2px #d3e2ff; }
.s16-risk { position: absolute; top: 12px; right: 12px; font-size: 11px; border-radius: 999px; padding: 2px 10px; background: #e7f7ee; color: #199a56; }
.s16-risk.s16-route-mid { background: #fff4e0; color: #b26a00; }
.s16-risk.s16-route-high { background: #fdeef0; color: #c2373f; }
.s16-est { font-size: 11px; color: #8b98ab; margin-top: 6px; }
/* 模型卡「优 / 缺 / 场景」三行 */
.s16-pc { display: flex; gap: 6px; align-items: baseline; font-size: 11.5px; line-height: 1.55; color: #44536b; text-align: left; }
.s16-pc i { font-style: normal; flex: none; font-size: 10px; border-radius: 4px; padding: 1px 5px; line-height: 1.4; }
.s16-pc.pros i { background: #e7f7ee; color: #199a56; }
.s16-pc.cons i { background: #fdeef0; color: #c2373f; }
.s16-pc.use i { background: #eaf1ff; color: #2f6bff; }
/* 模型名弱化：客户不关心具体模型名，视觉重心让给优/缺/场景 */
b.s16-mname { font-size: 11.5px; color: #8b98ab; font-weight: 600; }
.s16-route-note { margin-top: 10px; }
.s16-route-rec-status { margin: 0 0 12px; border-width: 1.5px; }
.s16-route-rec-status.is-processing { border-left: 4px solid #2f6bff; }

/* 质量档 */
.s16-qcard { text-align: left; border: 1.5px solid #e3e9f2; border-radius: 12px; background: #fff; padding: 16px; cursor: pointer; }
.s16-qcard.on { border-color: #2f6bff; background: #f5f9ff; box-shadow: 0 0 0 2px #d3e2ff; }
.s16-qcard em { font-style: normal; font-weight: 700; font-size: 14px; color: #16233b; margin-right: 8px; }
.s16-qcard p { font-size: 12px; color: #7d8aa0; line-height: 1.6; margin: 8px 0; }

/* 网格 / 变体卡 */
.s16-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 8px; }
.s16-grid4 { grid-template-columns: repeat(4, 1fr); }
.s16-grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.s16-grid3c { grid-template-columns: repeat(3, 1fr); }
.s16-var { border: 1px solid #e3e9f2; border-radius: 10px; padding: 10px; background: #fff; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
/* 结果卡：图/视频按原始比例完整显示（不裁切）；竖图整张可见 */
.s16-var img { width: 100%; height: auto; border-radius: 8px; object-fit: contain; display: block; background: #0d1b2e; }
.s16-var video { width: 100%; border-radius: 8px; display: block; background: #000; }
.s16-var small { font-size: 11px; color: #7d8aa0; word-break: break-all; }
.s16-var-h { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
/* 结果卡头部「分组」勾选：小药丸，可点 */
.s16-gchk { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; color: #5b6779; cursor: pointer; user-select: none; padding: 1px 5px; border: 1px solid #e2e8ef; border-radius: 6px; background: #f6f8fb; }
.s16-gchk input { margin: 0; cursor: pointer; }
.s16-gchk:hover { border-color: #2f6bff; color: #2f6bff; }
.s16-var-ph { border-radius: 8px; background: #dfe7f2; display: flex; align-items: center; justify-content: center; font-size: 11px; color: #8b98ab; min-height: 90px; }
.s16-reuse { font-size: 11px; color: #2f6bff; }
.s16-var.s16-done { border-color: #bfe7d0; }
.s16-var.s16-busy { border-color: #ffe3ad; }
.s16-var.s16-pending { border-color: #e3e9f2; opacity: .8; }
.s16-var.s16-fail { border-color: #f6cdd1; background: #fffafa; }

/* 状态 pill */
.s16-pill { display: inline-flex; font-size: 11px; border-radius: 6px; padding: 2px 8px; font-weight: 600; }
.s16-pill.s16-done { background: #e7f7ee; color: #199a56; }
.s16-pill.s16-busy { background: #fff4e0; color: #b26a00; }
.s16-pill.s16-pending { background: #eef2f8; color: #8b98ab; }
.s16-pill.s16-fail { background: #fdeef0; color: #c2373f; }

/* 镜头缩略图 */
.s16-shot { margin: 0; text-align: center; }
.s16-shot-ph { height: 74px; border-radius: 8px; background: #dfe7f2; display: flex; align-items: center; justify-content: center; font-size: 10px; color: #8b98ab; }
/* 镜头卡：按短视频竖屏比例展示，contain 保证画面完整不裁切 */
.s16-shots-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: 10px; align-items: start; }
.s16-shot-thumb { position: relative; aspect-ratio: 9 / 16; border-radius: 8px; overflow: hidden; background: #0d1b2e; }
.s16-shot-thumb img { width: 100%; height: 100%; object-fit: contain; display: block; }
.s16-shot-thumb span { position: absolute; left: 6px; bottom: 6px; background: rgba(13, 27, 46, .72); color: #fff; font-size: 10px; padding: 2px 6px; border-radius: 4px; }
/* 素材库：缩略图网格（替代原先只有文件名的堆叠，能看出是什么） */
.s16-lib-head { font-size: 11px; color: #7d8aa0; margin: 10px 0 6px; }
.s16-lib-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 8px; max-height: 300px; overflow: auto; padding: 2px; }
.s16-lib-grp { border: 1px solid #c9dcff; border-radius: 10px; margin-bottom: 8px; overflow: hidden; background: #fff; }
.s16-lib-grp-h { display: flex; align-items: center; gap: 8px; padding: 7px 10px; background: #eaf1ff; font-weight: 600; color: #1d2b3f; font-size: 12px; }
.s16-lib-grp-h .s16-note { font-weight: 400; }
.s16-lib-item { padding: 0; border: 1px solid #e2e8ef; border-radius: 8px; background: #fff; cursor: pointer; overflow: hidden; text-align: left; position: relative; }
/* v2.102.210 分批渲染：超出首屏的卡片先 hidden（懒加载 img 因此不发请求），滚到底再逐批放出 */
.s16-lib-item[hidden] { display: none !important; }
.fac-lib-more { grid-column: 1 / -1; width: 100%; margin: 4px 0 2px; }
.s16-lib-item.on { outline: 2px solid #3b7bff; outline-offset: -2px; }
.s16-lib-item .fac-lib-chk { position: absolute; top: 4px; left: 4px; width: 16px; height: 16px; z-index: 2; accent-color: #3b7bff; cursor: pointer; }
.s16-lib-item:hover { border-color: #2f6bff; }
.s16-lib-item img, .s16-lib-item video { width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; display: block; background: #dfe7f2; }
.s16-lib-item span { display: block; font-size: 10px; color: #5b6779; padding: 4px 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* v2.105.95：语音素材（无缩略图，用音符占位；点开在放大层里试听）
   color 必须 !important：深色主题里 .s16-lib-item span 的墨色会盖掉它，音符变白底白字直接看不见 */
/* v2.105.104：音频缩略图背景统一换成老板指定的波形图（public/audio-wave.png），不再用浅蓝渐变+♪ 占位。
   图片本身就是深底波形，浅/深主题都直接当“封面”用；background-size:100% 100% 是为了让波形横铺满卡片，
   用 cover 会把 130×130 的方图上下裁掉、只剩中间一条。 */
.s16-lib-aud { display: inline-block; width: 56px; border-radius: 6px; padding: 0; font-size: 0; line-height: 0; box-sizing: border-box; background-color: #0c0d14; background-image: url(/audio-wave.png?v=2.105.111); background-size: 100% 100%; background-position: center; background-repeat: no-repeat; }
.s16-lib-item .s16-lib-aud { width: 100%; height: auto!important; aspect-ratio: 1 / 1; border-radius: 0; }
.s16-aud-stage { display: grid; gap: 14px; justify-items: center; padding: 20px 10px; }
.s16-aud-stage > span { font-size: 46px; color: #3f6fd8!important; }
/* v2.105.104：放大试听层用波形当底（和素材库缩略图一致）；v2.105.107：改成 canvas，播放时随声音跳动 */
.s16-aud-stage > .s16-aud-wave { display: block; width: min(360px, 80vw); height: 110px; border-radius: 10px; background: #0c0d14; }
.s16-aud-stage audio { width: min(520px, 86vw); }
/* 素材库分组：同组收成一张可展开卡片（组名+数量+叠放缩略图） */
.s16-gpc { border: 1px solid #c9dcff; border-radius: 10px; margin-bottom: 8px; overflow: hidden; background: #fff; }
.s16-gpc-h { display: flex; align-items: center; gap: 8px; padding: 8px 10px; cursor: pointer; background: #eaf1ff; }
.s16-gpc-t { font-weight: 600; color: #1d2b3f; }
.s16-gpc-n { color: #5b6779; font-size: 12px; }
.s16-gpc-caret { margin-left: auto; color: #5b6779; font-size: 13px; }
.s16-gpc-stack { display: flex; gap: 4px; padding: 8px 10px; flex-wrap: wrap; align-items: center; }
.s16-gpc-stack img, .s16-gpc-stack video { width: 40px; height: 40px; object-fit: cover; border-radius: 6px; border: 1px solid #dfe7f2; }
.s16-gpc-more { color: #5b6779; font-size: 12px; margin-left: 2px; }
/* 素材库操作指引 */
.s16-steps { margin: 0 0 8px; padding-left: 18px; color: #cfd8e3; font-size: 12.5px; line-height: 1.75; }
.s16-steps b { color: #fff; }
/* 槽位 AI 生成：内联提示词 + 模型 + 出图 */
.s16-ai-box { margin-top: 8px; }
.s16-ai-box textarea { width: 100%; box-sizing: border-box; border: 1px solid #ccd9df; border-radius: 8px; padding: 8px 10px; font: inherit; font-size: 12px; resize: vertical; }
.s16-ai-box select { flex: 1 1 140px; min-width: 0; border: 1px solid #ccd9df; border-radius: 8px; padding: 6px 8px; font-size: 12px; background: #fff; }
/* 上一步素材带过来预览（第②屏） */
.s16-srcrow { display: flex; gap: 10px; flex-wrap: wrap; margin: 6px 0 12px; }
.s16-srcitem { margin: 0; width: 84px; text-align: center; }
.s16-srcitem img { width: 84px; height: 84px; object-fit: cover; border-radius: 8px; border: 1px solid #e2e8ef; display: block; background: #dfe7f2; }
.s16-srcitem figcaption { font-size: 10px; color: #7d8aa0; margin-top: 4px; }
.s16-shot figcaption { font-size: 10px; color: #7d8aa0; margin-top: 4px; }

.s16-box { border: 1px solid #e3e9f2; border-radius: 10px; padding: 12px; font-size: 12px; color: #3c4a61; line-height: 1.7; width: 100%; box-sizing: border-box; background: #fbfcfe; }
textarea.s16-box { font-family: inherit; resize: vertical; }

/* 第①屏：热榜中心 / 爆款改写 列表 */
/* 第①屏：原资源 / 手写 面板容器（v2.100.70：热榜中心/爆款改写页签已按老板要求移除，相关样式一并清理） */
.s16-topics { display: flex; flex-direction: column; gap: 6px; max-height: 320px; overflow: auto; }
.s16-topics-wide { max-height: none; overflow: visible; }
textarea.s16-box { font-family: inherit; resize: vertical; }
.s16-editor { margin-top: 14px; }
/* v2.100.68：原资源扒文案 —— 左侧原资源证据卡（全文可见），右侧时长+提示词+生成 */
.s16-res { display: grid; grid-template-columns: 1.2fr 1fr; gap: 14px; align-items: start; }
.s16-res > * { min-width: 0; }
.s16-res-card { border: 1px solid #e3e9f2; border-radius: 11px; background: #fff; padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.s16-res-title { font-size: 14px; font-weight: 700; color: #16233b; line-height: 1.4; }
.s16-res-meta { font-size: 11px; color: #7d8aa0; }
.s16-res-meta a { color: #2f6bff; }
.s16-res-cover { max-width: 260px; max-height: 150px; object-fit: cover; border-radius: 8px; border: 1px solid #e3e9f2; }
.s16-res-text { font-size: 12px; color: #3c4a61; line-height: 1.7; white-space: pre-wrap; word-break: break-word; max-height: 280px; overflow: auto; border-top: 1px dashed #e3e9f2; padding-top: 8px; }

/* v2.105.94：数字口播①屏改「原资源 | 生成参数 | 台词」左中右三栏（原来上二下三） */
.dh-ws { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .8fr) minmax(0, 1.5fr); gap: 14px; align-items: stretch; margin-top: 12px; }
.dh-ws .dh-col { min-width: 0; }
/* v2.105.96：三栏必须等高（老板：左=原料 / 中=生产 / 右=产品，一整条流水线）。
   强制 stretch，防止任何旧样式/浏览器差异让中间「生成参数」卡只按内容高度收口。 */
.dh-ws.dh-ws-res > .dh-col { align-self: stretch !important; height: 100%; min-height: 0; }
.dh-ws .dh-col[hidden] { display: none !important; }
.dh-ws-nore { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); align-items: start; }
.dh-ws-hand { grid-template-columns: minmax(0, 1fr); }
.dh-col-src { display: flex; flex-direction: column; min-height: 0; }
.dh-col-src > .s16-res-card, .dh-col-src > .s16-box { flex: 1 1 auto; min-height: 0; }
/* v2.105.97：等高之后原文区不能留空（老板：「下面不需要留空」）。
   原来 .s16-res-text 写死 max-height:280px，卡片被拉到与右栏齐高，剩下的空间全是空白；
   现在让正文区吃满卡片剩余高度（内容长就在区内滚动、短也不会出现大块空白）。 */
.dh-col-src .s16-res-text { flex: 1 1 auto; max-height: none; min-height: 120px; overflow: auto; }
.dh-col-ctrl { background: #fbfcfe; border: 1px solid #e3e9f2; border-radius: 11px; padding: 12px; box-sizing: border-box; display: flex; flex-direction: column; min-height: 0; }
.dh-col-ctrl .s16-mini-h { margin-top: 0; }
.dh-col-ctrl .s16-field > span { display: block; }
.dh-col-ctrl .s16-field > span .s16-meta { float: right; }
.dh-col-ctrl .dh-ctrl-grow { flex: 1 1 auto; display: flex; flex-direction: column; margin-bottom: 0; }
.dh-col-ctrl .dh-ctrl-grow textarea { flex: 1 1 auto; min-height: 110px; }
/* v2.105.98：按钮再往下（老板：「这块还高点，按钮往下点」）。
   .s16-btnrow 自带 margin:8px 0、.s16-out 自带 margin-top:8px，两者叠加让按钮下方空出 16px；
   这里归零，把这段高度让给提示词输入框，按钮贴到卡片底部。 */
.dh-col-ctrl .s16-btnrow { margin-bottom: 0; }
.dh-col-ctrl .s16-out:empty { margin-top: 0; }
.dh-ws .s16-editor { margin-top: 0; }
.dh-col-script { display: flex; flex-direction: column; min-height: 0; }
.dh-col-script .dh-script-field { flex: 1 1 auto; display: flex; flex-direction: column; }
.dh-col-script .dh-script-field > span { flex: none; }
.dh-col-script .dh-script-field textarea { flex: 1 1 auto; min-height: 260px; }
@media (max-width: 1180px) {
  .dh-ws { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .dh-ws .dh-col-script { grid-column: 1 / -1; align-self: auto; }
  .dh-ws .dh-col-script .dh-script-field textarea { min-height: 160px; }
}
@media (max-width: 780px) {
  .dh-ws, .dh-ws-nore { grid-template-columns: minmax(0, 1fr); }
  .dh-ws .dh-col-script { grid-column: auto; }
}

.s16-spin { display: inline-block; width: 14px; height: 14px; border: 2px solid #c9d4e2; border-top-color: #2f6bff; border-radius: 50%; animation: s16spin 1s linear infinite; }
@keyframes s16spin { to { transform: rotate(360deg); } }

/* 渲染进度条（剪辑变体 / 自动出片共用） */
.s16-prog { display: flex; align-items: center; gap: 10px; margin: 8px 0; }
.s16-prog-bar { flex: 1; min-width: 0; height: 8px; background: #e8edf4; border-radius: 99px; overflow: hidden; }
.s16-prog-bar i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #2f6bff, #5b8cff); border-radius: 99px; transition: width .4s ease; }
.s16-prog span { flex: none; font-size: 12px; color: #57657a; white-space: nowrap; }

/* 响应式 */
@media (max-width: 1100px) {
  .s16-body { grid-template-columns: 1fr; }
  .s16-spec { position: static; }
  .s16-cols, .s16-cols3, .s16-grid, .s16-grid3, .s16-grid3c, .s16-grid4 { grid-template-columns: 1fr 1fr; }
  .s16-res { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .s16-cols, .s16-cols3, .s16-grid, .s16-grid3, .s16-grid3c, .s16-grid4, .s16-routebig, .s16-modegrid { grid-template-columns: 1fr; }
}

/* 图片放大 & 跨模型对比灯箱（hidden 必须显式压掉 display:flex，同 drop-zone 的坑） */
.s16-lb { position: fixed; inset: 0; z-index: 999; background: rgba(8, 16, 28, .84); display: flex; align-items: center; justify-content: center; padding: 20px; }
.s16-lb[hidden] { display: none; }
.s16-lb-box { background: #fff; border-radius: 14px; padding: 12px 16px; width: min(1780px, 97vw); max-height: 96vh; display: flex; flex-direction: column; gap: 10px; }
.s16-lb-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.s16-lb-stage { overflow: auto; min-height: 120px; }
.s16-lb-stage img, .s16-lb-stage video { cursor: zoom-in; user-select: none; }
.s16-lb-stage > img, .s16-lb-stage > video { max-width: 100%; max-height: 82vh; border-radius: 10px; display: block; margin: 0 auto; }
.s16-lb-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }
.s16-lb-cell { margin: 0; display: flex; flex-direction: column; gap: 6px; align-items: center; border: 1px solid #e3e9f2; border-radius: 10px; padding: 8px; }
.s16-lb-cell img, .s16-lb-cell video { max-height: 64vh; max-width: 100%; border-radius: 8px; }
.s16-lb-cell span { font-size: 12px; color: #5b6779; }
.s16-lb-mwrap { overflow: auto; width: 100%; max-height: 64vh; display: flex; justify-content: center; align-items: flex-start; border-radius: 8px; }
.s16-lb-mwrap img, .s16-lb-mwrap video { max-height: 64vh; max-width: 100%; border-radius: 8px; user-select: none; }
.s16-lb-mwrap:active { cursor: grabbing; }
.s16-pv { padding: 0; border: 0; background: none; cursor: zoom-in; }
/* 2.99.64 拆解屏原始材料：烧屏字幕小标签 */
.s16-subtag { display: inline-block; border: 1px solid #d7e3f7; background: #f2f7ff; color: #2b4a7a; border-radius: 6px; padding: 1px 7px; margin: 2px 4px 2px 0; font-size: 11px; }
#rep2-original p { margin: 0 0 8px; }
#rep2-original p:last-child { margin-bottom: 0; }
#rep2-original b { color: #1d2b3f; }

/* video-shotcraft 镜头库：数字人口播与爆款复刻共用（默认折叠，点条展开懒加载） */
.s16-shotcraft { margin-top: 16px; padding: 16px; border: 1px solid #d8e3ea; border-radius: 14px; background: #fbfdff; }
.s16-shotcraft.folded { padding: 10px 16px; }
.s16-shotcraft-toggle { display: flex; align-items: center; gap: 10px; width: 100%; border: 0; background: none; padding: 0; cursor: pointer; font: inherit; text-align: left; }
.s16-shotcraft-toggle .eyebrow { margin: 0; }
.s16-shotcraft-toggle b { font-size: 15px; color: #102d4f; white-space: nowrap; }
.s16-shotcraft-toggle small { color: #6b7f91; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.s16-shotcraft-toggle .s16-tag { margin-left: auto; flex: none; }
.s16-shotcraft-arrow { flex: none; color: #2f6bff; font-size: 12px; }
.s16-shotcraft-body { margin-top: 12px; }
.s16-shotcraft-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 6px; }
.s16-shotcraft-head b { display: block; font-size: 15px; color: #102d4f; }
.s16-shotcraft-head small { display: block; margin-top: 4px; color: #6b7f91; font-size: 11px; }
.s16-shotcraft-tools { display: grid; grid-template-columns: minmax(260px, 1fr) 220px auto; gap: 8px; margin: 12px 0; }
.s16-shotcraft-tools input, .s16-shotcraft-tools select { min-height: 36px; border: 1px solid #ccd9e2; border-radius: 8px; background: #fff; padding: 7px 10px; font: inherit; color: #17314d; }
.s16-shotcraft-selected { display: flex; gap: 6px; flex-wrap: wrap; min-height: 30px; margin-bottom: 10px; }
.s16-shotcraft-chip { border: 1px solid #93b4ff; border-radius: 999px; background: #edf4ff; color: #174795; padding: 5px 9px; font-size: 11px; cursor: pointer; }
.s16-shotcraft-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; min-height: 80px; }
.s16-shotcraft-card { display: flex; min-width: 0; flex-direction: column; border: 1px solid #dce6ec; border-radius: 12px; background: #fff; overflow: hidden; box-shadow: 0 2px 8px rgba(16, 45, 79, .04); }
.s16-shotcraft-card.on { border-color: #3978ff; box-shadow: 0 0 0 2px rgba(57, 120, 255, .12); }
.s16-shotcraft-card video { display: block; width: 100%; aspect-ratio: 16/9; object-fit: cover; background: #0d1117; }
.s16-shotcraft-card > div { padding: 9px 10px 4px; }
.s16-shotcraft-card b { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; color: #14304f; }
.s16-shotcraft-card small { display: block; margin-top: 3px; color: #73869a; font-size: 10px; }
.s16-shotcraft-card p { height: 32px; margin: 6px 0 0; overflow: hidden; color: #536779; font-size: 10px; line-height: 16px; }
.s16-shotcraft-card > button { margin: 6px 10px 10px; }
@media (max-width: 1200px) { .s16-shotcraft-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 800px) { .s16-shotcraft-tools { grid-template-columns: 1fr; } .s16-shotcraft-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* ⑤屏 2×2 田字格：左上①预览 右上③镜头库 / 左下②剪辑 右下④剪辑结果，右侧块内滚动 */
.s16-quad { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: stretch; }
.s16-quad .s16-shotcraft { margin-top: 0; }
@media (max-width: 1100px) { .s16-quad { grid-template-columns: 1fr; } }
.s16-shotcraft.s16-half { display: flex; flex-direction: column; max-height: 44vh; }
.s16-shotcraft.s16-open .s16-shotcraft-toggle { cursor: default; }
.s16-shotcraft.s16-half .s16-shotcraft-body { overflow: auto; min-height: 0; }
.s16-shotcraft.s16-half .s16-shotcraft-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.s16-shotcraft.s16-half .s16-shotcraft-card p { display: none; }
.s16-shotcraft.s16-half .s16-shotcraft-card > div { padding: 6px 8px 2px; }
.s16-shotcraft.s16-half .s16-shotcraft-card > button { margin: 4px 8px 8px; padding: 4px 8px; }
.s16-clip-half { display: flex; flex-direction: column; max-height: 44vh; }
.s16-clip-half .s16-lib-grid { flex: 1; min-height: 0; max-height: none; }
@media (max-width: 1200px) { .s16-shotcraft.s16-half .s16-shotcraft-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* v2.99.95 · 两套剪辑页统一为专业工作台：预览优先、参数分组、高级项折叠 */
.s16-edit-workbench { grid-template-columns: minmax(300px, .78fr) minmax(520px, 1.22fr); gap: 20px; }
.s16-edit-preview-pane,
.s16-edit-control-pane { border: 1px solid #dbe5ed; border-radius: 16px; background: #f8fbfd; padding: 16px; }
.s16-edit-preview-pane { position: sticky; top: 14px; }
.s16-edit-preview-pane > video { max-height: 56vh; object-fit: contain; background: #0b1521 !important; }
/* v2.100.8 · 预览区由两列改单列：原来左栏被劈成两半只有 154px 宽，镜头运动/字幕差异根本看不出 */
.s16-preview-compare { display: grid; grid-template-columns: 1fr; gap: 12px; align-items: start; }
.s16-preview-compare section { min-width: 0; }
.s16-preview-compare video { width: auto !important; height: auto !important; max-width: min(100%, 31vh); max-height: 55vh; object-fit: contain; background: #0b1521; border-radius: 10px; display: block; margin: 8px auto 0; }
.s16-preview-compare .s16-out video { max-width: none; }
.s16-preview-tabs { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin:-2px 0 8px; padding:4px; border-radius:10px; background:#eaf0f5; }
.s16-preview-tabs button { border:0; border-radius:8px; padding:8px 10px; background:transparent; color:#66798c; font:inherit; font-size:12px; font-weight:700; cursor:pointer; }
.s16-preview-tabs button.on { background:#fff; color:#1e5ec7; box-shadow:0 1px 4px rgba(24,55,88,.12); }
.s16-preview-tabs button:disabled { opacity:.45; cursor:not-allowed; }
.s16-preview-compare [hidden] { display:none !important; }
.s16-pane-title { display: flex; gap: 10px; align-items: center; padding-bottom: 13px; margin-bottom: 14px; border-bottom: 1px solid #dfe8ee; }
.s16-pane-title > span { display: grid; place-items: center; width: 30px; height: 30px; flex: none; border-radius: 9px; background: #123f68; color: #fff; font-size: 12px; font-weight: 800; }
.s16-pane-title b,
.s16-pane-title small { display: block; }
.s16-pane-title b { color: #102d4f; font-size: 15px; }
.s16-pane-title small { margin-top: 2px; color: #718397; font-size: 12px; }
.s16-edit-control-pane { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.s16-edit-control-pane > .s16-pane-title { grid-column: 1 / -1; }
.s16-control-stack { display:flex; flex-direction:column; gap:12px; min-width:0; align-self:start; }
.s16-control-group { min-width: 0; border: 1px solid #e0e8ee; border-radius: 13px; background: #fff; padding: 13px; }
.s16-control-group .s16-mini-h { margin-top: 0; color: #143b61; font-size: 14px; }
.s16-group-label { display: block; margin: 10px 0 6px; color: #677a8e; font-size: 12px; font-weight: 700; }
.s16-edit-workbench + .s16-shotcraft { margin-top: 0; }
/* 数字人口播剪辑页优先保证主工作台同屏：开发规格移到底部折叠，不再永久占用 300px 右栏 */
#dh-root .s16-body { grid-template-columns: minmax(0,1fr); }
#dh-root .s16-spec { position: static; }

.s16-rep-workbench { grid-template-columns: minmax(330px, .84fr) minmax(520px, 1.16fr); grid-template-areas:
  "preview auto"
  "shotcraft shotcraft"
  "manual results"; align-items: start; }
.s16-rep-preview { grid-area: preview; }
.s16-rep-auto { grid-area: auto; }
.s16-rep-shotcraft { grid-area: shotcraft; margin-top: 0; }
.s16-rep-manual { grid-area: manual; }
.s16-rep-results { grid-area: results; }
.s16-rep-preview,
.s16-rep-auto { min-height: 315px; }
.s16-rep-preview video { width: 100%; max-height: 270px; object-fit: contain; background: #0b1521; border-radius: 10px; }
.s16-rep-shotcraft.folded { background: #f5f9fc; border-color: #cadbe6; }
.s16-rep-shotcraft .s16-shotcraft-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.s16-rep-manual,
.s16-rep-results { min-height: 360px; }
.s16-rep-results .s16-lib-grid { max-height: 520px; overflow: auto; }
.s16-advanced { margin: 12px 0; border: 1px solid #dbe5ed; border-radius: 11px; background: #f8fafc; overflow: hidden; }
.s16-advanced summary { cursor: pointer; list-style: none; padding: 12px 13px; color: #183e63; font-size: 13px; font-weight: 800; }
.s16-advanced summary::-webkit-details-marker { display: none; }
.s16-advanced summary::after { content: '展开'; float: right; color: #2f6bff; font-size: 12px; }
.s16-advanced[open] summary::after { content: '收起'; }
.s16-advanced summary span { margin-left: 8px; color: #7a8b9c; font-size: 11px; font-weight: 500; }
.s16-advanced-body { padding: 0 13px 13px; border-top: 1px solid #e4ebf0; }

@media (max-width: 1280px) {
  .s16-rep-shotcraft .s16-shotcraft-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 1000px) {
  .s16-edit-workbench { grid-template-columns: 1fr; }
  .s16-edit-preview-pane { position: static; }
  .s16-rep-workbench { grid-template-columns: 1fr; grid-template-areas: "preview" "auto" "shotcraft" "manual" "results"; }
  .s16-rep-preview,
  .s16-rep-auto,
  .s16-rep-manual,
  .s16-rep-results { min-height: 0; }
}
@media (max-width: 960px) {
  .s16-edit-control-pane { grid-template-columns: 1fr; }
  .s16-preview-compare { grid-template-columns: 1fr; }
}

/* dh⑤屏「实时效果预览」：字幕断句/时间由 JS 对齐后端，CSS 负责逼近 drawtext 字号与位置 */
.s16-pv-wrap{position:relative;width:auto;max-width:100%;height:min(48vh,520px);margin:0 auto;aspect-ratio:9/16;border-radius:10px;overflow:hidden;background:#dfe7f2;container-type:inline-size}
.s16-pv-wrap>video{display:block;width:100%;height:100%;object-fit:cover;max-height:none;border-radius:10px;background:#dfe7f2;transform-origin:center center}
.s16-pv-sub{position:absolute;left:50%;right:auto;width:max-content;max-width:92%;transform:translateX(-50%);text-align:center;pointer-events:none;font-family:"Microsoft YaHei","SimHei",sans-serif;font-weight:700;line-height:1.2;padding:0;box-sizing:border-box;overflow-wrap:anywhere}
.s16-pv-sub.pv-off{display:none}
.pv-center{bottom:7.8%;color:#fff;background:rgba(0,0,0,.45);padding:.45em .7em;border-radius:.25em}
.pv-bottom{bottom:4.2%;color:#fff;text-shadow:2px 2px 3px rgba(0,0,0,.85)}
.pv-brand{bottom:4.7%;color:#FFE9B0;background:rgba(11,61,145,.6);padding:.45em .7em;border-radius:.25em}
.pv-outline{bottom:12%;color:#fff;-webkit-text-stroke:.12em #000;paint-order:stroke fill}
.pv-yellow{bottom:12%;color:#FFE14D;-webkit-text-stroke:.12em #000;paint-order:stroke fill}
.pv-pop{bottom:13%;color:#fff;text-shadow:3px 3px 4px rgba(0,0,0,.9)}
.pv-neon{bottom:12%;color:#fff;-webkit-text-stroke:.1em #38C4BA;paint-order:stroke fill;text-shadow:2px 2px 3px rgba(0,0,0,.7)}
.pv-mint{bottom:7.8%;color:#D7FFFA;background:rgba(7,94,99,.78);padding:.45em .7em;border-radius:.3em}
.pv-red{bottom:11%;color:#FF615B;-webkit-text-stroke:.1em #171717;paint-order:stroke fill}
.pv-pink{bottom:10%;color:#FFE0F0;text-shadow:0 0 .22em #e664ac,0 2px 4px rgba(0,0,0,.9)}
.s16-pv-sub.pv-font-sans{font-family:"Microsoft YaHei","Noto Sans CJK SC",sans-serif}
.s16-pv-sub.pv-font-hei{font-family:"SimHei","Microsoft YaHei","Noto Sans CJK SC",sans-serif}
.s16-pv-sub.pv-font-serif{font-family:"SimSun","Noto Serif CJK SC",serif}
.s16-pv-sub.pv-font-kai{font-family:"KaiTi","STKaiti","Noto Serif CJK SC",serif}
.s16-pv-sub.pv-fx-none{background:transparent!important;text-shadow:none!important;-webkit-text-stroke:0 transparent!important}
.s16-pv-sub.pv-fx-shadow{background:transparent!important;-webkit-text-stroke:0 transparent!important;text-shadow:2px 3px 4px rgba(0,0,0,.95)!important}
.s16-pv-sub.pv-fx-outline{background:transparent!important;text-shadow:none!important;-webkit-text-stroke:.12em #000!important;paint-order:stroke fill}
.s16-pv-sub.pv-fx-glow{background:transparent!important;-webkit-text-stroke:.05em #38C4BA!important;paint-order:stroke fill;text-shadow:0 0 .2em #38C4BA,0 0 .42em rgba(56,196,186,.9)!important}
.s16-pv-sub.pv-fx-plate{background:rgba(0,0,0,.62)!important;padding:.45em .7em!important;border-radius:.25em}
.s16-pv-sub.pv-pos-top{top:8%;bottom:auto!important}
.s16-pv-sub.pv-pos-upper{top:28%;bottom:auto!important}
.s16-pv-sub.pv-pos-center{top:50%;bottom:auto!important;transform:translate(-50%,-50%)}
.s16-pv-sub.pv-pos-lower{top:auto;bottom:24%!important}
.s16-pv-sub.pv-pos-bottom{top:auto;bottom:8%!important}
.s16-sub-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin:10px 0 4px}
.s16-sub-options .s16-field{margin:0;min-width:0}
.s16-sub-options output{color:#2f6bff;font-variant-numeric:tabular-nums}
.s16-sub-options input[type=range]{width:100%;accent-color:#2f6bff;padding:0}
.s16-sub-options small{display:block;color:#8190a6;font-size:11px;line-height:1.4;margin-top:3px}
@media(max-width:640px){.s16-sub-options{grid-template-columns:1fr}}
/* 镜头运动不再用 CSS 循环动画（成片是整片一次性线性缩放，循环往复对不上）；改由 JS 按 currentTime/duration 设 transform */

/* 预览角标：标出当前生效的 调色/速度/运动（静止画面上这三项不易感知，给个看得见的确认） */
.s16-pv-badge{position:absolute;right:6px;top:6px;z-index:2;font-size:11px;line-height:1;padding:4px 7px;border-radius:6px;background:rgba(8,32,56,.72);color:#dbeafe;font-weight:600;pointer-events:none;white-space:nowrap}

/* 成片播放器与预览同尺度：宽度按比例自适应、高度上限一致，避免同屏「预览巨大 / 成片窄条」 */
.s16-out video,#dh-av-out video{display:block;width:auto;max-width:100%;max-height:48vh;margin:8px auto 0;border-radius:10px;background:#000}

/* 参考图分组（主体 / 场景）缩略图条：每组可多张，逐张可移除 */
.s16-imgsel{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;align-items:center}
.s16-imgsel-i{position:relative;display:block;width:76px;height:76px;border-radius:8px;overflow:hidden;border:1px solid #e2e8ef;background:#f6f8fb}
.s16-imgsel-i img{width:100%;height:100%;object-fit:cover;display:block}
.s16-imgsel-x{position:absolute;top:3px;right:3px;width:18px;height:18px;line-height:16px;padding:0;border:0;border-radius:50%;background:rgba(15,23,42,.62);color:#fff;font-size:11px;cursor:pointer}
.s16-imgsel-x:hover{background:#dc2626}

/* 第④屏「生成说明（提示词）」：内联文本域加大 + 放大弹窗 */
.s16-field-head{display:flex;align-items:center;gap:8px}
.rep2-step-prompt{min-height:150px;line-height:1.6;resize:vertical}
.s16-prompt-box{width:min(1200px,96vw)}
.s16-prompt-box>textarea{width:100%;min-height:64vh;padding:12px 14px;border:1px solid #dbe3ee;border-radius:10px;
  font-family:inherit;font-size:13px;line-height:1.7;color:#0f172a;background:#fbfdff;resize:vertical;white-space:pre-wrap}
.s16-prompt-box>textarea:focus{outline:2px solid #3b7bff;outline-offset:-2px;background:#fff}

/* ── 第④屏「截取片段」剪映式时间条 ─────────────────────────────── */
.rep2-trim-wrap { margin-top: 4px; padding: 10px; border: 1px solid #d9e4f1; border-radius: 12px; background: #f8fbff; }
.rep2-trim-preview-stage { display: flex; align-items: center; justify-content: center; width: fit-content; max-width: 100%; margin: 0 auto 10px; overflow: hidden; border-radius: 10px; background: #0b1220; box-shadow: 0 5px 18px rgba(15, 23, 42, .14); cursor: pointer; position: relative; }
.rep2-trim-preview-stage .rep2-trim-video { pointer-events: none; }
.rep2-trim-preview-stage.playing::after { content: '⏸ 播放中 · 点画面暂停'; position: absolute; top: 8px; right: 8px; padding: 3px 10px; border-radius: 999px; background: rgba(15, 23, 42, .72); color: #fff; font-size: 12px; line-height: 1.4; pointer-events: none; }
.rep2-trim-video { display: block; width: auto; height: auto; max-width: 100%; max-height: min(52vh, 520px); object-fit: contain; background: #0b1220; }
.rep2-trim-strip { position: relative; height: 62px; margin: 8px 12px 0; border: 1px solid #bdcce0; border-radius: 9px; overflow: visible; background: #dbe4ef; box-shadow: inset 0 1px 3px rgba(15, 23, 42, .12); touch-action: none; user-select: none; }
.rep2-trim-strip canvas { width: 100%; height: 100%; display: block; border-radius: 8px; }
.rep2-trim-mask { position: absolute; top: 0; bottom: 0; z-index: 1; background: rgba(15, 23, 42, .58); pointer-events: none; }
.rep2-trim-mask.before { left: 0; border-radius: 8px 0 0 8px; }
.rep2-trim-mask.after { right: 0; border-radius: 0 8px 8px 0; }
.rep2-trim-hl { position: absolute; top: -1px; bottom: -1px; z-index: 2; min-width: 8px; border: 3px solid #2563eb; border-radius: 5px; background: rgba(59, 130, 246, .18); box-shadow: inset 0 0 0 1px rgba(255,255,255,.55), 0 0 0 1px rgba(255,255,255,.75); cursor: grab; touch-action: none; }
.rep2-trim-hl:active { cursor: grabbing; background: rgba(59, 130, 246, .28); }
.rep2-trim-hd { position: absolute; top: -7px; bottom: -7px; width: 26px; margin-left: -13px; border: 0; border-radius: 8px; background: transparent; cursor: ew-resize; padding: 0; touch-action: none; z-index: 5; }
.rep2-trim-hd::before { content: ''; position: absolute; top: 0; left: 3px; width: 20px; height: 17px; border-radius: 6px 6px 3px 3px; background: #2563eb; box-shadow: 0 1px 4px rgba(9, 30, 66, .4); }
.rep2-trim-hd::after { content: ''; position: absolute; top: 13px; bottom: 0; left: 11px; width: 4px; border-radius: 2px; background: #2563eb; box-shadow: 0 0 4px rgba(9, 30, 66, .35); }
.rep2-trim-hd.start::before, .rep2-trim-hd.start::after { background: #16a34a; }
.rep2-trim-hd:hover::before, .rep2-trim-hd:focus-visible::before { filter: brightness(1.12); }
.rep2-trim-hd:focus-visible { outline: 2px solid #0f172a; outline-offset: 1px; }
.rep2-trim-ph { position: absolute; top: -3px; bottom: -3px; width: 2px; margin-left: -1px; background: #ef4444; box-shadow: 0 0 0 1px rgba(255,255,255,.8); pointer-events: none; z-index: 4; }
.rep2-trim-ph::after { content: ''; position: absolute; top: -1px; left: -4px; border: 5px solid transparent; border-top-color: #ef4444; }
.rep2-trim-info { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; font-size: 12px; color: #5c6b80; }
.rep2-trim-info .rep2-trim-txt { flex: 1 1 320px; color: #173e69; font-size: 13px; font-weight: 650; font-variant-numeric: tabular-nums; }
.rep2-trim-timefields { display: grid; grid-template-columns: minmax(130px, 170px) minmax(130px, 170px) 1fr; align-items: end; gap: 10px; margin-top: 9px; }
.rep2-trim-timefields label { display: grid; gap: 4px; color: #52657d; font-size: 11px; font-weight: 650; }
.rep2-trim-timefields input { width: 100%; min-width: 0; height: 34px; padding: 5px 9px; border: 1px solid #c9d6e5; border-radius: 7px; color: #102a43; background: #fff; font: inherit; font-size: 13px; font-variant-numeric: tabular-nums; }
.rep2-trim-timefields input:focus { outline: 2px solid rgba(37, 99, 235, .55); border-color: #2563eb; }
.rep2-trim-timefields p { margin: 0 0 7px; color: #718096; font-size: 11px; line-height: 1.45; }
.rep2-voice-segments { margin-top: 10px; padding-top: 9px; border-top: 1px solid rgba(130, 160, 205, .28); }
.rep2-voice-segment-list { display: grid; gap: 6px; }
.rep2-voice-segment { display: flex; align-items: center; gap: 6px; padding: 6px 8px; border: 1px solid rgba(130, 160, 205, .34); border-radius: 8px; background: rgba(20, 39, 72, .28); }
.rep2-voice-segment.active { border-color: #40c4ff; box-shadow: 0 0 0 1px rgba(64, 196, 255, .18); }
.rep2-voice-segment-edit { flex: 1; min-width: 0; padding: 3px 0; border: 0; color: inherit; background: transparent; text-align: left; cursor: pointer; }
.rep2-voice-segment > span { color: #8ce5c2; font-variant-numeric: tabular-nums; }
.rep2-voice-segment button:not(.rep2-voice-segment-edit) { min-width: 30px; padding: 3px 6px; }
.rep2-voice-segment button:disabled { opacity: .4; cursor: default; }
.rep2-voice-segments > .s16-note { display: block; margin-top: 5px; }
@media (max-width: 640px) {
  .rep2-trim-wrap { padding: 7px; }
  .rep2-trim-video { max-height: 56vh; }
  .rep2-trim-strip { height: 58px; margin-right: 13px; margin-left: 13px; }
  .rep2-trim-info .rep2-trim-txt { flex-basis: 100%; }
  .rep2-trim-timefields { grid-template-columns: 1fr 1fr; gap: 8px; }
  .rep2-trim-timefields p { grid-column: 1 / -1; }
}

/* 所选视频模型的参考输入限制：紧邻模型选择器显示，避免把输出时长误认为输入视频限制。 */
.s16-model-input-guidance { display: grid; gap: 4px; margin: 8px 0 10px; padding: 10px 12px; border: 1px solid #e5a331; border-left: 5px solid #e28a00; border-radius: 9px; color: #713f08; background: #fff7e6; box-shadow: 0 2px 7px rgba(146, 91, 0, .08); }
.s16-model-input-guidance strong { font-size: 12px; color: #8a4b00; }
.s16-model-input-guidance span { font-size: 12px; line-height: 1.6; }
.s16-audio-mode { display: inline-block; margin: 8px 0 2px; padding: 5px 11px; border-radius: 20px; font-size: 12px; font-weight: 700; }
.s16-audio-speech { color: #0b6e3b; background: rgba(20, 160, 90, .14); border: 1px solid rgba(20, 160, 90, .4); }
.s16-audio-speech-weak { color: #8a5a00; background: rgba(255, 193, 61, .16); border: 1px solid rgba(255, 193, 61, .5); }
.s16-audio-none { color: #3a4a66; background: rgba(120, 150, 190, .16); border: 1px solid rgba(140, 160, 190, .4); }
.s16-audio-unknown { color: #555; background: rgba(160, 160, 160, .14); border: 1px solid rgba(160, 160, 160, .4); }
.s16-audio-mismatch { display: grid; gap: 4px; margin: 8px 0 10px; padding: 10px 12px; border: 1px solid #e0556b; border-left: 5px solid #d6334a; border-radius: 9px; color: #7a1f2c; background: #fff0f2; box-shadow: 0 2px 7px rgba(190, 40, 70, .08); }
.s16-audio-mismatch strong { font-size: 12px; color: #b3243b; }
.s16-audio-mismatch span { font-size: 12px; line-height: 1.6; }

/* 方案卡「参考图槽位表」：把 AI 判定的每张参考图对应的人物/产品/场景，及被哪些镜头引用摊开，避免「第N张图」黑箱（v2.105.124） */
.s16-plan-slots { margin: 8px 0 2px; padding: 10px 12px; border: 1px solid #d8e0ee; border-left: 5px solid #4a7fd4; border-radius: 9px; background: #f5f8fd; box-shadow: 0 2px 7px rgba(70, 110, 180, .08); }
.s16-plan-slots-head { font-size: 12px; font-weight: 700; color: #2c4a7a; margin-bottom: 7px; }
.s16-plan-slot-row { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; padding: 5px 0; border-top: 1px dashed #d4deec; font-size: 12px; line-height: 1.5; }
.s16-plan-slot-row:first-of-type { border-top: none; }
.s16-plan-slot-row > b { color: #6a85b0; font-weight: 700; }
.s16-plan-slot-row > em { font-style: normal; font-weight: 700; color: #1f3a64; }
.s16-plan-slot-row > i { font-style: normal; padding: 1px 7px; border-radius: 10px; font-size: 11px; font-weight: 700; }
.s16-plan-slot-row > i.k-person { color: #0b6e3b; background: rgba(20, 160, 90, .14); }
.s16-plan-slot-row > i.k-product { color: #8a5a00; background: rgba(255, 193, 61, .16); }
.s16-plan-slot-row > i.k-scene { color: #3a4a66; background: rgba(120, 150, 190, .16); }
.s16-plan-slot-row > i.k-other { color: #555; background: rgba(160, 160, 160, .14); }
.s16-plan-slot-row > span { color: #4a5b75; flex: 1 1 140px; min-width: 80px; }
.s16-plan-slot-row > u { text-decoration: none; padding: 1px 7px; border-radius: 10px; font-size: 11px; font-weight: 700; }
.s16-plan-slot-row > u.ok { color: #0b6e3b; background: rgba(20, 160, 90, .14); border: 1px solid rgba(20, 160, 90, .4); }
.s16-plan-slot-row > u.miss { color: #b3243b; background: rgba(214, 51, 74, .12); border: 1px solid rgba(214, 51, 74, .4); }
.s16-plan-slot-row > u.seg { color: #2c4a7a; background: rgba(74, 127, 212, .12); border: 1px solid rgba(74, 127, 212, .35); }
html[data-theme="tech"] .s16-plan-slots, html[data-theme="dream"] .s16-plan-slots { background: #1c2433; border-color: rgba(120, 160, 210, .4); border-left-color: #5b9bff; box-shadow: none; }
html[data-theme="tech"] .s16-plan-slots-head, html[data-theme="dream"] .s16-plan-slots-head { color: #bcd4ff; }
html[data-theme="tech"] .s16-plan-slot-row, html[data-theme="dream"] .s16-plan-slot-row { border-top-color: rgba(120, 150, 190, .25); }
html[data-theme="tech"] .s16-plan-slot-row > em, html[data-theme="dream"] .s16-plan-slot-row > em { color: #eaf2ff; }
html[data-theme="tech"] .s16-plan-slot-row > b, html[data-theme="dream"] .s16-plan-slot-row > b { color: #8fb0e0; }
html[data-theme="tech"] .s16-plan-slot-row > span, html[data-theme="dream"] .s16-plan-slot-row > span { color: #b8c6dc; }

/* tech 主题下连贯分镜状态卡语义色：生成器会把 run/done/err 统一盖成蓝面板，这里显式压回 红/绿/蓝（特异性更高，且深色底不会被生成器再处理） */
html[data-theme="tech"] .s16-coh-status.err { color: #ffd2cc; background: linear-gradient(135deg, rgba(122, 34, 27, .55), rgba(72, 21, 17, .55)); border-color: rgba(255, 110, 96, .6); box-shadow: 0 0 22px rgba(255, 90, 74, .12); }
html[data-theme="tech"] .s16-coh-status.done { color: #ccf5d8; background: linear-gradient(135deg, rgba(21, 92, 46, .55), rgba(13, 58, 30, .55)); border-color: rgba(80, 220, 130, .55); box-shadow: 0 0 22px rgba(60, 200, 110, .12); }
html[data-theme="tech"] .s16-coh-status.run { color: #dceaff; border-color: rgba(96, 180, 255, .6); }
html[data-theme="tech"] .s16-coh-status.warn { color: #ffe9b8; background: linear-gradient(135deg, rgba(110, 78, 12, .5), rgba(64, 46, 8, .5)); border-color: rgba(255, 197, 61, .55); }
html[data-theme="tech"] .s16-coh-status .coh-track { background: rgba(96, 180, 255, .18); }

/* 连贯分镜「分段生成进度」面板（v2.104.3：小圆片 → 分段式总进度条 + 分段卡片，段状态一眼可见） */
.s16-coh-run{margin-top:10px;padding:11px 13px;border:1px solid rgba(120,150,190,.38);border-radius:11px;display:flex;flex-direction:column;gap:9px}
.s16-coh-run[data-tone="run"]{border-color:rgba(70,150,255,.62);animation:s16cohGlow 2.2s ease-in-out infinite}
.s16-coh-run[data-tone="done"]{border-color:rgba(52,211,153,.6)}
.s16-coh-run[data-tone="err"]{border-color:rgba(239,68,68,.6)}
.s16-coh-hd{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.s16-coh-hd>b{font-size:14px;font-weight:800;letter-spacing:.2px}
.s16-coh-tally{font-size:12px;font-weight:700;color:#4a5b76;font-variant-numeric:tabular-nums}
.s16-coh-tally em{font-style:normal;font-size:15px;font-weight:900;color:#1565c8}
.s16-coh-run[data-tone="done"] .s16-coh-tally em{color:#0d8a43}
.s16-coh-run[data-tone="err"] .s16-coh-tally em{color:#c0392e}
/* 总进度条：一格一段；已完成格填满、进行中格走流动光带、失败格变红（真实状态驱动，不虚构进度） */
.s16-coh-bar{display:flex;gap:5px;height:20px}
.s16-bar-slot{flex:1 1 0;min-width:16px;border-radius:10px;background:rgba(120,150,190,.22);box-shadow:inset 0 1px 3px rgba(0,0,0,.16),0 0 0 1px rgba(255,255,255,.05);overflow:hidden;position:relative;transition:background .3s ease}
.s16-bar-slot.done{background:linear-gradient(90deg,#22c55e,#34d399);box-shadow:0 0 10px rgba(52,211,153,.45)}
.s16-bar-slot.failed{background:linear-gradient(90deg,#ef4444,#f87171);box-shadow:0 0 10px rgba(239,68,68,.45)}
.s16-bar-slot.running{background:rgba(70,150,255,.28)}
.s16-bar-slot.running>em{position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(57,198,255,.95),transparent);animation:cohSweep 1.3s linear infinite}
/* 分段卡片：状态图标 + 段号 + 时长/镜数 */
.s16-coh-segs{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:7px}
.s16-seg{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:9px;border:2px solid rgba(140,160,190,.4);background:rgba(126,150,190,.08);min-width:0}
.s16-seg-ic{flex:0 0 auto;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;background:rgba(126,150,190,.25);color:#475569}
.s16-seg-tx{display:flex;flex-direction:column;min-width:0}
.s16-seg-tx b{font-size:12.5px;line-height:1.25}
.s16-seg-tx small{font-size:11px;opacity:.75;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.s16-seg.done{border-color:rgba(52,211,153,.72);background:rgba(52,211,153,.13)}
.s16-seg.done .s16-seg-ic{background:#22c55e;color:#fff}
.s16-seg.running{border-color:rgba(70,150,255,.78);background:rgba(70,150,255,.14);animation:s16cohPulse 1.6s ease-in-out infinite}
.s16-seg.running .s16-seg-ic{background:#2f6bff;color:#fff}
.s16-seg.failed{border-color:rgba(239,68,68,.78);background:rgba(239,68,68,.13)}
.s16-seg.failed .s16-seg-ic{background:#ef4444;color:#fff}
.s16-seg.has-play{cursor:pointer}
.s16-seg.has-play:hover{border-color:rgba(70,150,255,.9);box-shadow:0 0 0 2px rgba(70,150,255,.16)}
.s16-seg-play{flex:0 0 auto;margin-left:auto;font-size:10px;line-height:1;opacity:.7}
.s16-coh-stale{font-size:11.5px;color:#b26a00}
/* 分段镜头提示词明细（v2.104.23）：每段＝一次视频生成，展开即见「用了哪些镜头提示词 + 真实下发全文」，可逐段改写 */
.s16-segprompts{margin-top:12px;padding:11px 13px;border:1px solid rgba(120,150,190,.38);border-radius:11px;display:flex;flex-direction:column;gap:9px}
.s16-segp-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.s16-segp-hd>b{font-size:14px;font-weight:800;letter-spacing:.2px}
.s16-segp-hd .s16-note{flex:1 1 260px;min-width:0}
.s16-segp-list{display:flex;flex-direction:column;gap:7px}
.s16-segp{border:1px solid rgba(140,160,190,.34);border-radius:9px;background:rgba(126,150,190,.06);overflow:hidden}
.s16-segp>summary{display:flex;align-items:center;gap:9px;padding:7px 10px;cursor:pointer;list-style:none;font-size:12.5px}
.s16-segp>summary::-webkit-details-marker{display:none}
.s16-segp>summary::before{content:'▸';flex:0 0 auto;font-size:11px;opacity:.65;transition:transform .15s ease}
.s16-segp[open]>summary::before{transform:rotate(90deg)}
.s16-segp>summary>b{font-size:12.5px;font-weight:800;flex:0 0 auto}
.s16-segp-meta{font-size:11.5px;opacity:.72;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.s16-segp-tag{margin-left:0;flex:0 0 auto;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:20px;border:1px solid transparent}
.s16-segp-tag.auto{color:#4a5b76;background:rgba(126,150,190,.18);border-color:rgba(140,160,190,.36)}
.s16-segp-tag.edited{color:#8a5a00;background:rgba(255,193,61,.2);border-color:rgba(255,193,61,.55)}
.s16-segp-body{display:flex;flex-direction:column;gap:8px;padding:0 10px 10px}
.s16-segp-body .s16-note{margin:0}
.s16-segp-body textarea.rep2-seg-prompt{width:100%;box-sizing:border-box;font:12.5px/1.6 ui-monospace,Menlo,Consolas,monospace;resize:vertical;min-height:110px}
.s16-segp-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.s16-segp-hint{font-size:11.5px;opacity:.7}
/* v2.104.29：段状态徽标（右对齐最右）+ 台词语速体检 */
.s16-segp-run{margin-left:auto;flex:0 0 auto;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:20px;border:1px solid transparent;color:#4a5b76;background:rgba(126,150,190,.16);border-color:rgba(140,160,190,.34);white-space:nowrap}
.s16-segp-run.done{color:#0f7b3f;background:rgba(52,199,123,.18);border-color:rgba(52,199,123,.5)}
.s16-segp-run.running{color:#8a5a00;background:rgba(255,193,61,.2);border-color:rgba(255,193,61,.5)}
.s16-segp-run.failed{color:#b3261e;background:rgba(255,110,100,.18);border-color:rgba(255,110,100,.5)}
.s16-segp-pace{font-size:11.5px;line-height:1.6;opacity:.92}
.s16-segp-pace>span{font-weight:800}
.s16-segp-pace.ok{color:#0f7b3f}
.s16-segp-pace.tight{color:#8a5a00}
.s16-segp-pace.over{color:#b3261e;background:rgba(255,110,100,.1);border-left:3px solid rgba(255,110,100,.7);padding:5px 8px;border-radius:6px}
.s16-segp-pace.none{opacity:.6}
html[data-theme="tech"] .s16-segp-run{color:#9fb4d4;background:rgba(96,140,200,.2);border-color:rgba(120,150,200,.4)}
html[data-theme="tech"] .s16-segp-run.done{color:#8ef0bd;background:rgba(20,90,60,.5);border-color:rgba(52,199,123,.45)}
html[data-theme="tech"] .s16-segp-run.running{color:#ffe9b8;background:rgba(110,78,12,.5);border-color:rgba(255,197,61,.5)}
html[data-theme="tech"] .s16-segp-run.failed{color:#ffb4ae;background:rgba(110,30,26,.5);border-color:rgba(255,110,100,.5)}
html[data-theme="tech"] .s16-segp-pace.ok{color:#8ef0bd}
html[data-theme="tech"] .s16-segp-pace.tight{color:#ffe9b8}
html[data-theme="tech"] .s16-segp-pace.over{color:#ffb4ae;background:rgba(110,30,26,.35)}
.s16-segp-full>summary{cursor:pointer;font-size:11.5px;opacity:.72}
.s16-segp-full pre{margin:6px 0 0;padding:8px 9px;max-height:230px;overflow:auto;white-space:pre-wrap;word-break:break-word;font:11.5px/1.55 ui-monospace,Menlo,Consolas,monospace;background:rgba(120,150,190,.1);border-radius:8px}
html[data-theme="tech"] .s16-segprompts{border-color:rgba(96,140,200,.4)}
html[data-theme="tech"] .s16-segp-hd>b{color:#eaf2ff}
html[data-theme="tech"] .s16-segp{border-color:rgba(120,150,200,.36);background:rgba(40,60,100,.34);color:#dceaff}
html[data-theme="tech"] .s16-segp-tag.auto{color:#9fb4d4;background:rgba(96,140,200,.22);border-color:rgba(120,150,200,.4)}
html[data-theme="tech"] .s16-segp-tag.edited{color:#ffe9b8;background:rgba(110,78,12,.5);border-color:rgba(255,197,61,.55)}
html[data-theme="tech"] .s16-segp-full pre{background:rgba(30,50,86,.5)}
/* v2.105.124：整片配音清单——逐段列出「谁在说 / 念什么 / 多少字多少秒 / 语速是否超载」，可单独或依次试听 */
.s16-voiceplan{margin-top:10px;padding:10px 11px;border:1px solid rgba(120,150,190,.38);border-radius:10px;background:rgba(126,150,190,.05);display:flex;flex-direction:column;gap:7px}
.s16-voiceplan-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.s16-voiceplan-hd>b{font-size:13px;font-weight:800;color:#1f2a3a}
.s16-voiceplan-meta{font-size:11.5px;color:#6b7a90;font-variant-numeric:tabular-nums}
.s16-voiceplan-hd button{margin-left:auto}
.s16-voiceplan-rows{display:flex;flex-direction:column;gap:5px;max-height:264px;overflow:auto}
.s16-voice-row{display:flex;align-items:flex-start;gap:8px;padding:6px 8px;border:1px solid rgba(140,160,190,.3);border-radius:8px;background:rgba(255,255,255,.62)}
.s16-voice-row-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.s16-voice-row-main b{font-size:12px;font-weight:800;color:#243044}
.s16-voice-row-main em{font-style:normal;font-size:11px;font-weight:700;color:#2f6bff;padding:1px 6px;border-radius:20px;background:rgba(47,107,255,.1);align-self:flex-start;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s16-voice-row-main span{font-size:12px;line-height:1.5;color:#54637a;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.s16-voice-row-meta{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.s16-voice-row-meta small{font-size:10.5px;color:#6b7a90;white-space:nowrap}
.s16-voice-row.over{border-color:rgba(255,110,100,.6);background:rgba(255,110,100,.07)}
.s16-voice-row.over .s16-voice-row-meta small{color:#b3261e;font-weight:700}
.s16-voiceplan-audio:empty{display:none}
.s16-voiceplan-player{display:block;width:100%;max-width:340px;height:32px;margin-top:4px}
html[data-theme="tech"] .s16-voiceplan{border-color:rgba(96,140,200,.42);background:rgba(40,60,100,.34)}
html[data-theme="tech"] .s16-voiceplan-hd>b{color:#eaf2ff}
html[data-theme="tech"] .s16-voiceplan-meta{color:#9fb4d4}
html[data-theme="tech"] .s16-voice-row{background:rgba(30,50,86,.55);border-color:rgba(120,150,200,.36)}
html[data-theme="tech"] .s16-voice-row-main b{color:#eaf2ff}
html[data-theme="tech"] .s16-voice-row-main em{color:#a9d0ff;background:rgba(96,180,255,.18)}
html[data-theme="tech"] .s16-voice-row-main span{color:#c7d7ee}
html[data-theme="tech"] .s16-voice-row-meta small{color:#9fb4d4}
html[data-theme="tech"] .s16-voice-row.over{background:rgba(110,30,26,.42);border-color:rgba(255,110,100,.6)}
html[data-theme="tech"] .s16-voice-row.over .s16-voice-row-meta small{color:#ffb4ae}
html[data-theme="tech"] .s16-voiceplan-player{color-scheme:dark}
html[data-theme="dream"] .s16-voiceplan{border-color:rgba(165,156,224,.3);background:rgba(255,255,255,.045)}
html[data-theme="dream"] .s16-voiceplan-hd>b{color:#f0eeff}
html[data-theme="dream"] .s16-voiceplan-meta{color:#a9a3c8}
html[data-theme="dream"] .s16-voice-row{background:rgba(255,255,255,.07);border-color:rgba(165,156,224,.26)}
html[data-theme="dream"] .s16-voice-row-main b{color:#f0eeff}
html[data-theme="dream"] .s16-voice-row-main em{color:#cfc6ff;background:rgba(165,156,224,.2)}
html[data-theme="dream"] .s16-voice-row-main span{color:#d7d2ec}
html[data-theme="dream"] .s16-voice-row-meta small{color:#a9a3c8}
html[data-theme="dream"] .s16-voice-row.over{background:rgba(110,30,26,.4);border-color:rgba(255,110,100,.55)}
html[data-theme="dream"] .s16-voice-row.over .s16-voice-row-meta small{color:#ffb4ae}
html[data-theme="dream"] .s16-voiceplan-player{color-scheme:dark}
.s16-coh-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.s16-coh-preview{display:flex;flex-direction:column;align-items:flex-start;gap:7px;width:min(100%,560px);margin-top:2px}
.s16-coh-preview>b{font-size:12px;color:#d9e8ff}
.s16-coh-preview video{display:block;width:100%;aspect-ratio:16/9;max-height:315px;object-fit:contain;background:#050a14;border:1px solid rgba(120,160,210,.4);border-radius:9px}
html:not([data-theme="tech"]) .s16-coh-preview>b{color:#334155}
@keyframes s16cohPulse{0%,100%{opacity:1}50%{opacity:.6}}
@keyframes s16cohGlow{0%,100%{box-shadow:0 0 0 1px rgba(70,150,255,.16),0 6px 20px rgba(47,107,255,.14)}50%{box-shadow:0 0 0 1px rgba(70,150,255,.32),0 8px 26px rgba(47,107,255,.28)}}
/* tech 主题深色语义色（显式覆盖，加载顺序在 styles.css 之后必胜出） */
html[data-theme="tech"] .s16-coh-run{border-color:rgba(96,140,200,.4)}
html[data-theme="tech"] .s16-coh-hd>b{color:#eaf2ff}
html[data-theme="tech"] .s16-coh-tally{color:#9fb4d4}
html[data-theme="tech"] .s16-coh-tally em{color:#7fc4ff}
html[data-theme="tech"] .s16-coh-run[data-tone="done"] .s16-coh-tally em{color:#5fe39b}
html[data-theme="tech"] .s16-coh-run[data-tone="err"] .s16-coh-tally em{color:#ff9d92}
html[data-theme="tech"] .s16-coh-bar .s16-bar-slot{background:rgba(96,140,200,.24)}
html[data-theme="tech"] .s16-coh-bar .s16-bar-slot.running{background:rgba(96,180,255,.3)}
html[data-theme="tech"] .s16-seg{border-color:rgba(120,150,200,.4);background:rgba(40,60,100,.4);color:#dceaff}
html[data-theme="tech"] .s16-seg-ic{background:rgba(120,150,200,.3);color:#dceaff}
html[data-theme="tech"] .s16-seg.done{border-color:rgba(80,220,130,.6);background:rgba(21,92,46,.5)}
html[data-theme="tech"] .s16-seg.done .s16-seg-ic{background:#22c55e;color:#06231a}
html[data-theme="tech"] .s16-seg.running{border-color:rgba(96,180,255,.72);background:rgba(40,80,140,.5)}
html[data-theme="tech"] .s16-seg.running .s16-seg-ic{background:#3f8fff;color:#04182e}
html[data-theme="tech"] .s16-seg.failed{border-color:rgba(255,110,96,.7);background:rgba(122,34,27,.55)}
html[data-theme="tech"] .s16-coh-stale{color:#ffcf8a}

/* ---- 字幕特效模板卡（v2.102.58，⑤屏）---- */
.s16-sub-tpl{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px}
.s16-sub-card{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:8px 10px;border:1px solid rgba(120,150,190,.4);border-radius:10px;background:rgba(255,255,255,.04);cursor:pointer;text-align:left}
.s16-sub-card b{font-size:13px}
.s16-sub-card small{font-size:11px;opacity:.75;line-height:1.4}
.s16-sub-chip{width:26px;height:8px;border-radius:4px;box-shadow:0 0 6px rgba(0,0,0,.15)}
.s16-sub-card:hover{border-color:rgba(96,160,255,.7)}
.s16-sub-card.on{border-color:#3f8cff;background:rgba(63,140,255,.12);box-shadow:0 0 10px rgba(63,140,255,.25)}
/* tech 主题深色覆盖（显式，加载顺序胜出） */
html[data-theme="tech"] .s16-sub-card{border-color:rgba(110,150,210,.4);background:rgba(32,50,88,.45);color:#dceaff}
html[data-theme="tech"] .s16-sub-card.on{border-color:#39d7ff;background:rgba(57,215,255,.14);box-shadow:0 0 12px rgba(57,215,255,.3)}
html[data-theme="tech"] .s16-sub-card b{color:#eaf4ff}
html[data-theme="tech"] .s16-sub-card small{color:#a8c4e8}

/* ---- v2.102.81：素材删除入口（悬停卡片右上角 ×）---- */
.s16-lib-item .fac-lib-del {
  position: absolute; top: 4px; right: 4px; z-index: 3;
  width: 20px; height: 20px; line-height: 18px; text-align: center;
  border-radius: 50%; border: 1px solid rgba(255,255,255,.55);
  background: rgba(220,53,69,.92); color: #fff; font-size: 14px; font-weight: 700;
  cursor: pointer; opacity: 0; transition: opacity .12s;
  font-family: Arial, sans-serif; padding: 0; user-select: none;
}
.s16-lib-item:hover .fac-lib-del { opacity: 1; }
.fac-lib-del:hover { background: #a02030; }

/* ---- v2.102.106：专业剪辑台入口（卡片左上角 ✂）---- */
.s16-lib-item .fac-lib-cut {
  position: absolute; top: 4px; left: 4px; z-index: 3;
  width: 20px; height: 20px; line-height: 18px; text-align: center;
  border-radius: 50%; border: 1px solid rgba(255,255,255,.55);
  background: rgba(47,227,194,.92); color: #04221c; font-size: 13px; font-weight: 700;
  cursor: pointer; opacity: 0; transition: opacity .12s;
  font-family: Arial, sans-serif; padding: 0; user-select: none;
}
.s16-lib-item:hover .fac-lib-cut { opacity: 1; }
.fac-lib-cut:hover { background: #1B9C86; color: #fff; }
html[data-theme="tech"] .s16-lib-item .fac-lib-cut { border-color: rgba(255,255,255,.35); box-shadow: 0 0 8px rgba(0,0,0,.35); }

/* ---- v2.102.81：分组收起态改为整齐横排封面预览（替代叠放小黑块）---- */
.s16-gpc-strip { display: flex; gap: 8px; padding: 10px 12px; align-items: center; overflow: hidden; }
.s16-gpc-strip img, .s16-gpc-strip video {
  width: 56px; height: 56px; object-fit: cover; border-radius: 8px;
  border: 1px solid #dfe7f2; flex: 0 0 auto; display: block; background: #dfe7f2;
}
/* v2.105.104：折叠状态下音频缩略图也要跟图片/视频一样是 56×56 的方块（不被 flex 压扁成 26×56） */
.s16-gpc-strip .s16-lib-aud { width: 56px; height: 56px; flex: 0 0 auto; border: 1px solid #dfe7f2; border-radius: 8px; }

/* tech 主题深色覆盖（显式，加载顺序胜出） */
html[data-theme="tech"] .s16-lib-item .fac-lib-del { border-color: rgba(255,255,255,.35); box-shadow: 0 0 8px rgba(0,0,0,.35); }
html[data-theme="tech"] .s16-gpc-strip img, html[data-theme="tech"] .s16-gpc-strip video, html[data-theme="tech"] .s16-gpc-strip .s16-lib-aud { border-color: rgba(110,150,210,.35); background-color: rgba(15,26,50,.6); }

/* ---- v2.102.86：右键菜单（素材「用作参考图」另外的入口）+ 放大预览 ---- */
.s16-ctx{position:fixed;z-index:10120;min-width:160px;background:#fff;border:1px solid #cedbea;border-radius:10px;box-shadow:0 12px 34px rgba(0,0,0,.25);padding:6px;display:flex;flex-direction:column;gap:2px;animation:s16CtxIn .12s ease-out}
@keyframes s16CtxIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.s16-ctx button{border:0;background:transparent;text-align:left;font:inherit;font-size:13px;color:#193047;padding:8px 12px;border-radius:7px;cursor:pointer;white-space:nowrap}
.s16-ctx button:hover{background:#eef4fb}
html[data-theme="tech"] .s16-ctx{background:#16264a;border-color:rgba(110,150,210,.4);box-shadow:0 12px 34px rgba(0,0,0,.55),0 0 14px rgba(64,190,255,.1)}
html[data-theme="tech"] .s16-ctx button{color:#dfe9fb}
html[data-theme="tech"] .s16-ctx button:hover{background:rgba(56,84,134,.65)}
.s16-preview{z-index:10130}
.s16-preview .s16-lb-box{background:rgba(12,22,40,.96)}
html[data-theme="tech"] .s16-preview .s16-lb-box{background:#101d38;border:1px solid rgba(110,150,210,.45)}
/* ---- v2.102.197：放大预览「秒开」——缩略图铺底，原图加载完淡入替换 ---- */
.s16-pv-shot{position:relative;display:block;width:fit-content;max-width:100%;margin:0 auto}
.s16-pv-shot .s16-pv-under{display:block;max-width:100%;max-height:72vh;border-radius:8px;transition:opacity .25s}
.s16-pv-shot .s16-pv-under.off{opacity:0}
.s16-pv-shot .s16-pv-full{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .3s;border-radius:8px;pointer-events:none;user-select:none}
.s16-pv-shot .s16-pv-full.on{opacity:1}
.s16-preview .s16-pv-flag{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:rgba(8,16,28,.74);color:#cfe3ee;font-size:12px;padding:3px 10px;border-radius:999px;white-space:nowrap;pointer-events:none}

/* ---- v2.102.88：①屏生成标题可点选列表 ---- */
.dh-title-pick{display:block;width:100%;text-align:left;margin:6px 0;padding:8px 12px;border:1px solid #cedbea;border-radius:8px;background:#f7fafd;color:#193047;cursor:pointer;font:inherit;font-size:13px;line-height:1.55}
.dh-title-pick:hover{border-color:#4f7cc0;background:#eef4fb}
.dh-title-pick.on{border-color:#2e9e97;background:#e8f6f4;font-weight:600;color:#0f5c57}
html[data-theme="tech"] .dh-title-pick{border-color:rgba(110,150,210,.35);background:rgba(24,40,72,.6);color:#dfe9fb}
html[data-theme="tech"] .dh-title-pick:hover{border-color:rgba(64,190,255,.6);background:rgba(38,60,102,.7)}
html[data-theme="tech"] .dh-title-pick.on{border-color:#3fc9c0;background:rgba(63,201,192,.16);color:#b9ece8}

/* ---- v2.102.95：④屏「从视频任务选/从素材库选」开关态高亮（点开列表时按钮亮起） ---- */
.s16-btnrow .small-btn.on{border-color:#2e9e97;background:#e8f6f4;color:#0f5c57;font-weight:600}
html[data-theme="tech"] .s16-btnrow .small-btn.on{border-color:#3fc9c0;background:rgba(63,201,192,.16);color:#b9ece8}

/* ---- v2.102.99：字幕模板卡加真实效果预览图（libass 渲染样例帧） ---- */
.s16-sub-card{padding:6px}
.s16-sub-shot{position:relative;display:block;width:100%;aspect-ratio:9/12;border-radius:8px;overflow:hidden;background:#14203a;margin-bottom:4px}
.s16-sub-shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.s16-sub-shot .s16-sub-chip{position:absolute;left:6px;bottom:6px;width:22px;height:6px;border-radius:3px;box-shadow:0 0 6px rgba(0,0,0,.35)}
.s16-sub-card b{padding:0 4px}
.s16-sub-card small{padding:0 4px 2px}

/* ---- v2.102.198：整屏「专业剪辑台」页 —— 操作条 + 选片面板 + 加载遮罩定位 ----
   页面结构：.lc-solo(列) > .lc-solo-bar(按钮条) / .lc-solo-pick(选片) / .lc-solo-stage(剪辑台 iframe)
   所以 .lc-solo-stage 必须 position:relative（遮罩绝对定位的锚点），且 .lc-solo 必须撑满 #lightcut 的
   calc(100vh - 88px)，否则 iframe 会塌成 0 高、又变成一块看不见的空框。 */
/* v2.102.201：父级 #lightcut 现在由 flex 链给高度（不再是写死的 calc），百分比 height:100% 在这种
   情形下解析不到（实测 iframe 塌成 150px），所以这里改成 flex:1 接力，整条链
   main → #lightcut → .lc-solo → .lc-solo-stage → iframe 全部用 flex，不依赖百分比高度。 */
.lc-solo { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.lc-solo-bar { flex: none; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 0 0 8px; }
.lc-solo-bar .s16-note { color: #7d8aa0; }
.lc-solo-bar .small-btn.on { border-color: #3b7bff; color: #1b4fd8; background: #eef4ff; }
.lc-solo-pick { flex: none; max-height: 34vh; overflow: auto; margin-bottom: 8px; }
.lc-solo-pick[hidden] { display: none !important; }
.lc-solo-stage { flex: 1; min-height: 0; display: flex; flex-direction: column; position: relative; background: #16244a; border-radius: 12px; overflow: hidden; }
/* v2.102.217：剪辑区跟随主题换色后，这块「iframe 底衬」也要一起跟，否则极光/经典下会在剪辑台四周留一圈藏蓝。
   科技主题保持原来的 #16244a 不动（改动前就是它）。注意：运营中心里「经典」= 不写 data-theme（空属性），
   所以经典要同时匹配空属性和无属性两种写法。 */
html[data-theme="premium"] .lc-solo-stage { background: #0c3134; }
html[data-theme="classic"] .lc-solo-stage,
html[data-theme=""] .lc-solo-stage,
html:not([data-theme]) .lc-solo-stage { background: #0d2440; }
.lc-solo-stage > #lightcut-frame { flex: 1 1 auto; min-height: 0; }

/* v2.102.215：提示词历史下拉（数字人/复刻手写提示词点选历史，免重复打字） */
.ph-dropdown{position:fixed;z-index:9999;background:#fff;border:1px solid #c9d6dd;border-radius:10px;box-shadow:0 10px 30px rgba(20,40,60,.2);max-height:340px;overflow:auto;font-size:13px;color:#1f2d38;min-width:260px}
.ph-hd{padding:7px 10px;font-size:12px;color:#6b7c89;border-bottom:1px solid #eef3f6;position:sticky;top:0;background:#fff}
.ph-item{display:flex;align-items:flex-start;gap:6px;padding:7px 8px;border-bottom:1px solid #f3f6f8;cursor:pointer}
.ph-item:last-child{border-bottom:0}
.ph-item:hover{background:#f1f7fb}
.ph-txt{flex:1;white-space:pre-wrap;word-break:break-word;line-height:1.45}
.ph-del{flex:none;border:0;background:transparent;color:#b3c0c9;cursor:pointer;font-size:12px;padding:0 2px;line-height:1.45}
.ph-del:hover{color:#e0533d}
html[data-theme="tech"] .ph-dropdown{background:#16264a;border-color:rgba(110,150,210,.45);color:#dfe9fb;box-shadow:0 12px 34px rgba(0,0,0,.55)}
html[data-theme="tech"] .ph-hd{color:#a8c4e8;border-bottom-color:rgba(110,150,210,.3);background:#16264a}
html[data-theme="tech"] .ph-item{border-bottom-color:rgba(110,150,210,.22)}
html[data-theme="tech"] .ph-item:hover{background:rgba(56,84,134,.65)}
html[data-theme="tech"] .ph-del:hover{color:#ff8c7a}

/* ---- v2.105.144：爆款复刻「生成方案」页首两步并排等高对齐 ---- */
.s16-route-selected-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;padding:12px 16px;border:1px solid #36c8ed;border-left:4px solid #36c8ed;border-radius:10px;background:linear-gradient(105deg,#173963,#214a7a 62%,#263e73);color:#eef8ff;box-shadow:0 4px 16px rgba(0,0,0,.16)}
.s16-route-selected-banner>span{padding:4px 8px;border-radius:999px;background:rgba(39,205,235,.16);color:#75e7fa;font-size:11px;font-weight:700;white-space:nowrap}
.s16-route-selected-banner>b{font-size:16px;color:#fff;white-space:nowrap}
.s16-route-selected-banner>small{flex:1 1 320px;color:#d5e6fb;font-size:12px;line-height:1.5}
.s16-rep2-step-avatar .rep2-avatar-model{width:100%}
.s16-rep2-materials{margin-top:18px;min-width:0}
.s16-rep2-materials-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px;padding:0 2px}
.s16-rep2-materials-head b{font-size:14px;color:#193047}
.s16-rep2-materials-head small{font-size:11px;color:#7d8aa0}
.s16-rep2-material-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:stretch}
.s16-rep2-step-card{min-width:0;box-sizing:border-box;display:flex;flex-direction:column}
.s16-rep2-step-card>.s16-tag{align-self:flex-start}
.s16-rep2-step-card>.s16-slotcheck:last-child{margin-top:auto}
.s16-rep2-step-video{grid-column:auto}
.s16-rep2-image-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:stretch;margin-top:8px}
.s16-rep2-image-groups>.s16-slotbox{min-width:0;margin-top:0}
.s16-rep2-image-groups>.s16-inputmode-slotwrap{grid-column:1/-1}
.s16-rep2-image-groups .s16-slotbox{height:100%;box-sizing:border-box}
html[data-theme="tech"] .s16-rep2-materials-head b{color:#e1ebfa}
html[data-theme="tech"] .s16-rep2-materials-head small{color:#a8c4e8}
@media(max-width:900px){.s16-rep2-material-grid{grid-template-columns:1fr}}
@media(max-width:620px){.s16-rep2-materials-head{align-items:flex-start;flex-direction:column;gap:3px}.s16-rep2-image-groups{grid-template-columns:1fr}.s16-rep2-image-groups>.s16-inputmode-slotwrap{grid-column:auto}}
