/* 配色和尺寸参照 Itone Modern Admin Dashboard（宝蓝主色 #2842C8、浅灰底、白色大圆角卡片、扁平阴影、Poppins 字体） */
:root {
  --bg: #f5f5f5;
  --card: #ffffff;
  --text: #202020;
  --muted: #8a8a8a;
  --faint: #a5a5a5;
  --line: #ececec;
  --field: #f5f5f5;
  --accent: #2842c8;
  --accent-hover: #2236ad;
  --accent-soft: #e9ebf9;
  --accent-2: #5775fc;
  --ok: #00a389;
  --warn: #ffab2d;
  --err: #e93030;
  --radius: 20px;
  --radius-sm: 10px;
  --shadow: 0 1px 2px rgba(32, 32, 32, .04);
  --accent-glow: rgba(40, 66, 200, .22);
  --sidebar: #ffffff;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #17181d; --card: #212229; --text: #f5f5f5; --muted: #a0a2ad; --faint: #6d6f7a; --line: #30323b;
    --field: #2a2c35; --accent: #5775fc; --accent-hover: #6d87ff; --accent-soft: #252c52; --accent-2: #7d93ff;
    --ok: #2bc4a6; --warn: #ffb84d; --err: #ff5a5a; --shadow: 0 1px 2px rgba(0, 0, 0, .2); --accent-glow: rgba(87, 117, 252, .3); --sidebar: #212229;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --bg: #17181d; --card: #212229; --text: #f5f5f5; --muted: #a0a2ad; --faint: #6d6f7a; --line: #30323b;
  --field: #2a2c35; --accent: #5775fc; --accent-hover: #6d87ff; --accent-soft: #252c52; --accent-2: #7d93ff;
  --ok: #2bc4a6; --warn: #ffb84d; --err: #ff5a5a; --shadow: 0 1px 2px rgba(0, 0, 0, .2); --accent-glow: rgba(87, 117, 252, .3); --sidebar: #212229;
  color-scheme: dark;
}
* { box-sizing: border-box; }
[v-cloak] { display: none; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 14px/1.55 "Poppins", "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3 { margin: 0; font-weight: 600; letter-spacing: -.01em; }
h2 { font-size: 18px; font-weight: 700; }
h3 { font-size: 15px; margin: 22px 0 10px; }
input, select, textarea, button { font: inherit; color: inherit; }
input:not([type=checkbox]):not([type=range]):not([type=radio]):not([type=file]), select, textarea {
  width: 100%;
  padding: 9px 14px;
  border: 2px solid transparent;
  border-radius: var(--radius-sm);
  background: var(--field);
  font-weight: 500;
  transition: border-color .2s, background .2s;
}
textarea { resize: vertical; min-height: 36px; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent) !important; background: var(--card) !important; }
input[type=range] { width: 100%; accent-color: var(--accent); }
input[type=checkbox], input[type=radio] { accent-color: var(--accent); }

/* 左侧导航 */
.shell { display: grid; grid-template-columns: 248px minmax(0, 1fr); min-height: 100vh; }
.sidebar {
  position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column;
  background: var(--sidebar); border-right: 1px solid var(--line); padding: 0 18px 18px;
}
.sb-brand { display: flex; align-items: center; gap: 12px; height: 96px; padding: 0 10px; font-weight: 700; font-size: 19px; letter-spacing: -.02em; white-space: nowrap; }
.logo { display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; background: linear-gradient(135deg, var(--accent-2), var(--accent)); color: #fff; flex: none; box-shadow: 0 6px 14px var(--accent-glow); }
.logo svg { width: 20px; height: 20px; }
.sb-scroll { flex: 1; overflow-y: auto; margin: 0 -6px; padding: 0 6px; scrollbar-width: none; }
.sb-scroll::-webkit-scrollbar { display: none; }
.sb-label { margin: 18px 12px 10px; font-size: 12px; font-weight: 500; color: var(--faint); }
.sb-nav { display: flex; flex-direction: column; gap: 4px; }
.sb-item {
  display: flex; align-items: center; gap: 14px; height: 52px; padding: 0 16px; border: 0; border-radius: 14px;
  background: transparent; color: var(--muted); font-size: 14px; font-weight: 600; cursor: pointer; text-align: left; transition: color .15s;
}
.sb-item:hover { color: var(--accent); }
.sb-item.active { background: var(--accent); color: #fff; box-shadow: 0 8px 18px var(--accent-glow); }
.sb-ico { display: inline-grid; width: 22px; height: 22px; flex: none; }
.sb-ico svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; }
.sb-text { flex: 1; white-space: nowrap; }
.sb-count { min-width: 22px; height: 22px; padding: 0 6px; border-radius: 11px; background: var(--err); color: #fff; font-size: 12px; line-height: 22px; text-align: center; font-weight: 600; }
.sb-status { display: flex; flex-direction: column; gap: 2px; }
.sb-stat { display: flex; align-items: center; gap: 10px; padding: 7px 14px; border: 0; border-radius: 10px; background: none; font-size: 13px; color: var(--muted); text-align: left; }
.sb-stat i { width: 8px; height: 8px; border-radius: 50%; flex: none; background: var(--warn); }
.sb-stat.ok i { background: var(--ok); box-shadow: 0 0 0 4px color-mix(in srgb, var(--ok) 18%, transparent); }
.sb-stat-btn { cursor: pointer; }
.sb-stat-btn:hover { background: var(--accent-soft); color: var(--accent); }
.sys-status { margin-bottom: 16px; }
.sys-status h3 { margin: 0 0 8px; font-size: 15px; }
.sys-status .sb-status { flex-direction: row; flex-wrap: wrap; gap: 4px 12px; }
.sb-foot { padding-top: 12px; }
.theme-switch { display: flex; padding: 4px; border-radius: 14px; background: var(--field); }
.theme-switch button { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 4px; height: 34px; border: 0; border-radius: 10px; background: none; color: var(--muted); font-size: 12px; font-weight: 600; cursor: pointer; }
.theme-switch button.on { background: var(--card); color: var(--text); box-shadow: 0 2px 8px rgba(0, 0, 0, .08); }

/* 页头 */
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin: 6px 0 24px; }
.page-kicker { margin: 0 0 4px; font-size: 13px; font-weight: 500; color: var(--muted); }
.page-head h1 { font-size: 34px; line-height: 1.15; font-weight: 700; letter-spacing: -.03em; }
.page-desc { margin: 8px 0 0; color: var(--muted); font-size: 14px; max-width: 720px; }

main { padding: 32px 40px 64px; max-width: 1920px; width: 100%; min-width: 0; }
.card { background: var(--card); border: 0; border-radius: var(--radius); padding: 24px; box-shadow: var(--shadow); }
.layout-2 { display: grid; grid-template-columns: 320px 1fr; gap: 24px; align-items: start; }
.side { display: flex; flex-direction: column; gap: 12px; position: sticky; top: 24px; max-height: calc(100vh - 48px); overflow: auto; }
.side:has(.tree) { overflow: hidden; padding: 14px 10px 12px; }
.narrow { max-width: 860px; margin: 0; }
.main-panel { min-height: 300px; }
.empty { display: grid; place-items: center; color: var(--muted); min-height: 200px; }

.row { display: flex; gap: 8px; align-items: center; }
.grow { flex: 1; }
.field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.field > label { font-weight: 500; font-size: 13px; display: flex; align-items: center; gap: 6px; }
.hint { margin: 0; font-size: 12px; color: var(--muted); }
.muted { color: var(--muted); margin: 0; font-size: 13px; }
.error { color: var(--err); margin: 0; font-size: 13px; }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  min-height: 40px; padding: 8px 18px; border-radius: var(--radius-sm); border: 0;
  background: var(--field); color: var(--text); cursor: pointer; white-space: nowrap; text-decoration: none; font-size: 13px; font-weight: 600;
  transition: background .2s, color .2s, box-shadow .2s;
}
.btn:hover { color: var(--accent); background: var(--accent-soft); }
.btn:disabled { opacity: .55; cursor: not-allowed; }
.btn.primary { background: var(--accent); color: #fff; box-shadow: 0 8px 18px var(--accent-glow); }
.btn.primary:hover { background: var(--accent-hover); color: #fff; }
.btn.ghost { background: transparent; box-shadow: inset 0 0 0 1.5px var(--line); }
.btn.ghost:hover { box-shadow: inset 0 0 0 1.5px var(--accent); background: transparent; }
.btn.danger, .link.danger, .icon.danger { color: var(--err); }
.btn.big { width: 100%; min-height: 56px; padding: 12px 20px; font-size: 15px; border-radius: 16px; }
.link { border: 0; background: none; padding: 0; color: var(--accent); cursor: pointer; font-size: 13px; text-decoration: none; }
.icon { border: 0; background: var(--field); color: var(--text); width: 30px; height: 30px; border-radius: 9px; cursor: pointer; }
.icon:hover { background: var(--accent-soft); color: var(--accent); }
.icon:disabled { opacity: .35; }

/* 滚动条：细、跟随主题 */
* { scrollbar-width: thin; scrollbar-color: var(--line) transparent; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: var(--line); border-radius: 8px; }
::-webkit-scrollbar-track { background: transparent; }

.btn.small { min-height: 32px; padding: 5px 12px; font-size: 12px; border-radius: 10px; }
.spin { display: inline-block; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* 素材分类树 */
.side-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 0 6px; }
.side-title { font-weight: 600; font-size: 15px; }
.tree { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 1px; margin: 0 -2px; padding: 0 2px; }
.tree .pad { padding: 8px; }
.group {
  display: flex; align-items: center; gap: 6px; width: 100%;
  border: 0; background: none; padding: 8px 8px; border-radius: 7px; cursor: pointer; text-align: left;
  font-weight: 600; margin-top: 4px;
}
.group:hover { background: var(--bg); }
.chev { display: inline-block; width: 14px; color: var(--muted); transition: transform .15s; font-size: 15px; line-height: 1; }
.chev.open { transform: rotate(90deg); }
.group-meta { margin-left: auto; font-size: 12px; color: var(--muted); font-weight: 400; white-space: nowrap; }
.leaves { display: flex; flex-direction: column; gap: 1px; margin: 2px 0 4px 15px; padding-left: 8px; border-left: 1px solid var(--line); }
.cat-icon { width: 14px; color: var(--muted); font-size: 11px; flex: none; text-align: center; }
.count-pill { margin-left: auto; flex: none; font-size: 11px; padding: 1px 7px; border-radius: 99px; background: var(--bg); color: var(--muted); font-variant-numeric: tabular-nums; }
.cat.active .count-pill { background: var(--accent); color: #fff; }
.tree-section { font-size: 12px; color: var(--muted); margin: 14px 8px 4px; padding-top: 10px; border-top: 1px solid var(--line); }
.source { border-top: 1px solid var(--line); padding: 10px 6px 0; }
.source summary { color: var(--muted); font-size: 12px; }
.source .row { margin: 8px 0 6px; }

/* 素材详情头部 */
.crumbs { font-size: 12px; color: var(--muted); margin-bottom: 2px; }

/* 总览（未选分类时） */
.overview { max-width: 760px; padding: 12px 8px; }
.overview > .muted { margin: 6px 0 20px; }
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 24px; }
.stat { background: var(--bg); border-radius: 10px; padding: 14px 16px; }
.stat-num { font-size: 26px; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.2; }
.stat-label { font-size: 12px; color: var(--muted); }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.step { display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; }
.step b { flex: none; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); font-size: 13px; }
.step strong { display: block; font-size: 14px; }
.step span { font-size: 12px; color: var(--muted); }

.cat-list { display: flex; flex-direction: column; gap: 2px; }
.cat-group-title { font-size: 12px; color: var(--muted); margin: 10px 0 4px; }
.cat { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; border: 0; background: none; padding: 6px 8px; border-radius: 7px; cursor: pointer; min-width: 0; }
.cat:hover { background: var(--bg); }
.cat.active { background: var(--accent-soft); color: var(--accent); }
.cat-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.cat-count { color: var(--muted); font-variant-numeric: tabular-nums; }
.upload { margin-top: 8px; }

.panel-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.title-input { font-size: 16px !important; font-weight: 600; max-width: 420px; }

.asset-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(150px, 100%), 1fr)); gap: 14px; }
.asset { min-width: 0; }
.asset.dim { opacity: .45; }
.thumb { position: relative; aspect-ratio: 9 / 16; background: var(--bg); border-radius: 8px; overflow: hidden; display: grid; place-items: center; }
.thumb img { width: 100%; height: 100%; object-fit: cover; }
.thumb-ph { color: var(--muted); font-size: 12px; }
.dur { position: absolute; right: 5px; bottom: 5px; background: rgba(0, 0, 0, .65); color: #fff; font-size: 11px; padding: 1px 5px; border-radius: 4px; }
.asset-preview-play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: grid; place-items: center; width: 44px; height: 44px; padding: 0 0 0 3px; border: 1px solid rgba(255,255,255,.8); border-radius: 50%; background: rgba(0,0,0,.7); color: #fff; font-size: 18px; cursor: pointer; }
.asset-preview-play:hover { background: rgba(0,0,0,.9); }
.asset-preview-play:focus-visible, .asset-preview-close:focus-visible { outline: 3px solid #91a4ff; outline-offset: 3px; }
body.asset-preview-open { overflow: hidden; }
.asset-preview-mask { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 16px; overflow: auto; background: rgba(0,0,0,.82); color: #f5f5f5; }
.asset-preview-dialog { width: min(960px, 100%); min-width: 0; max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); overflow-y: auto; overflow-x: hidden; border: 1px solid #393c47; border-radius: 14px; background: #17181d; box-shadow: 0 24px 80px rgba(0,0,0,.5); }
.asset-preview-head { display: flex; align-items: flex-start; gap: 16px; padding: 16px; }
.asset-preview-head > div { flex: 1; min-width: 0; }
.asset-preview-head h2 { font-size: 17px; overflow-wrap: anywhere; }
.asset-preview-info { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 6px 0 0; color: #afb2be; font-size: 13px; }
.asset-preview-range { margin: 6px 0 0; color: #b9c5ff; font-size: 13px; overflow-wrap: anywhere; }
.asset-preview-close { display: grid; place-items: center; flex: none; width: 40px; height: 40px; padding: 0; border: 1px solid #454854; border-radius: 10px; background: #292c35; color: #fff; cursor: pointer; }
.asset-preview-body { display: grid; place-items: center; min-width: 0; min-height: 180px; padding: 0 16px 16px; }
.asset-preview-body video, .asset-preview-body img { display: block; width: auto; height: auto; max-width: 100%; max-height: 80vh; object-fit: contain; background: #000; }
.asset-preview-body audio { display: block; width: min(560px, 100%); max-width: 100%; }
.asset-preview-message { max-width: 100%; margin: 24px 0; text-align: center; overflow-wrap: anywhere; color: #c2c5d0; }
.asset-preview-error { color: #ffb2b2; }
.asset-name { font-size: 12px; margin-top: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.asset-meta { display: flex; gap: 6px; align-items: center; justify-content: space-between; }
.tag { font-size: 11px; padding: 1px 6px; border-radius: 4px; background: var(--bg); color: var(--muted); font-weight: 500; }
.tag.warn { color: var(--warn); }
.tag.err, .tag.failed { color: var(--err); }
.tag.done { color: var(--ok); }
.tag.running, .tag.queued { color: var(--accent); }

table.slots { width: 100%; border-collapse: collapse; margin-bottom: 10px; }
.slots th { text-align: left; font-size: 12px; font-weight: 500; color: var(--muted); padding: 6px; border-bottom: 1px solid var(--line); }
.slots td { padding: 6px; border-bottom: 1px solid var(--line); vertical-align: top; }
.slots td.num { color: var(--muted); padding-top: 13px; width: 28px; }
.slots td:nth-child(2) { width: 260px; }
.slots .ops { white-space: nowrap; width: 132px; }
.num-input { max-width: 90px; }
.settings-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 4px 20px; }
.settings-grid .wide { grid-column: 1 / -1; }
/* 按段排列 / 时长混剪共用的固定开头 + 结尾，和上面的分段列表 / 混剪设置拉开一点距离 */
.lead-ending-fields { margin-top: 12px; }
.checks { display: flex; flex-wrap: wrap; gap: 6px 16px; }
.checks label { display: flex; align-items: center; gap: 5px; }

.gen-texts { display: flex; flex-direction: column; gap: 6px; }
.gen-text { display: grid; grid-template-columns: 180px 1fr; gap: 8px; align-items: center; }
.gen-cat { font-size: 13px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
details { margin-top: 8px; }
details textarea { margin: 8px 0; }
summary { cursor: pointer; color: var(--accent); font-size: 13px; }

.job { margin-bottom: 16px; }
.progress { height: 4px; background: var(--bg); border-radius: 4px; overflow: hidden; margin-bottom: 12px; }
.progress div { height: 100%; background: var(--accent); transition: width .4s; }
.video-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 14px; }
.video video, .video-ph { width: 100%; aspect-ratio: 9 / 16; border-radius: 8px; background: #000; display: block; }
.video-ph { display: flex; flex-direction: column; gap: 6px; align-items: center; justify-content: center; background: var(--bg); color: var(--muted); font-size: 13px; padding: 10px; text-align: center; }
.video-ph.failed { color: var(--err); }
.video-ph small { font-size: 11px; word-break: break-all; color: var(--muted); }
.video-prog { display: block; width: 70%; height: 6px; border-radius: 3px; background: var(--line, #ddd); overflow: hidden; }
.video-prog i { display: block; height: 100%; background: var(--accent); transition: width .6s ease; }
.video-info .row { justify-content: space-between; flex-wrap: wrap; gap: 6px; }
.plan { margin: 6px 0 0; padding-left: 18px; font-size: 12px; color: var(--muted); }
.plan .plan-shot { margin: 3px 0; }
.plan .plan-shot img { width: 28px; height: 40px; object-fit: cover; border-radius: 3px; vertical-align: middle; margin-right: 6px; background: #eee; }

.login { min-height: 100vh; display: grid; place-items: center; padding: 16px;
  background: radial-gradient(1200px 600px at 15% 10%, var(--accent-soft), transparent 60%), var(--bg); }
.login-card { width: 100%; max-width: 380px; display: flex; flex-direction: column; gap: 14px; padding: 36px 32px; }
.login-card h1 { font-size: 28px; font-weight: 700; letter-spacing: -.03em; }
.login-card .btn { min-height: 52px; font-size: 15px; }
.toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); padding: 12px 20px; border-radius: 14px; font-weight: 500; box-shadow: 0 12px 30px rgba(17, 20, 45, .25); background: var(--text); color: var(--card); z-index: 50; max-width: calc(100% - 32px); }
.toast.err { background: var(--err); color: #fff; }

@media (max-width: 860px) {
  .topbar { flex-wrap: wrap; gap: 8px 16px; padding: 10px 16px; }
  .status-pills { display: none; }
  main { padding: 16px 16px 60px; }
  .layout-2 { grid-template-columns: 1fr; }
  .side { position: static; max-height: none; }
  .side:has(.tree) { overflow: visible; }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .steps { grid-template-columns: 1fr; }
  .slots thead { display: none; }
  .slots tr { display: grid; grid-template-columns: 28px 1fr 90px; gap: 6px; padding: 8px 0; border-bottom: 1px solid var(--line); }
  .slots td { border: 0; padding: 0; width: auto !important; }
  .slots td:nth-child(4) { grid-column: 2 / -1; }
  .slots td.ops { grid-column: 2 / -1; }
  .gen-text { grid-template-columns: 1fr; gap: 2px; }
}

/* 模板类型切换 */
.mode-switch { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px; }
.mode-switch button {
  display: flex; flex-direction: column; gap: 2px; text-align: left; cursor: pointer;
  padding: 10px 14px; border-radius: 10px; border: 1px solid var(--line); background: var(--card);
}
.mode-switch button strong { font-size: 14px; }
.mode-switch button span { font-size: 12px; color: var(--muted); }
.mode-switch button.on { border-color: var(--accent); background: var(--accent-soft); }
.mode-switch button.on strong { color: var(--accent); }

/* 文案组选择 */
.group-picker { display: flex; flex-direction: column; gap: 8px; max-height: 320px; overflow-y: auto; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; }
.gp-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-weight: 600; font-size: 13px; }
.gp-group .checks { padding: 4px 0 2px 2px; font-size: 13px; }
.gp-single { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; }
.hint.error { color: var(--err); }

/* 批量生成 + 配方预览 */
.generate { max-width: 1120px; margin: 0; display: flex; flex-direction: column; gap: 16px; }
.gen-actions { margin-top: 6px; }
.gen-actions .btn.big { width: auto; }
.warn-list { margin: 0 0 12px; padding: 8px 12px 8px 28px; border-radius: 8px; background: var(--accent-soft); color: var(--warn); font-size: 13px; }
.space { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; padding: 10px 14px; border-radius: 8px; background: var(--bg); font-size: 13px; margin-bottom: 12px; }
.space small { color: var(--muted); }
.space.bad { outline: 1px solid var(--err); }
.space strong { color: var(--err); }
.recipes { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.recipe { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; }
.recipe-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.recipe-no { font-weight: 700; font-variant-numeric: tabular-nums; }
.strip { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; }
.chip { flex: none; width: 64px; }
.chip-thumb {
  position: relative; width: 64px; aspect-ratio: 9 / 16; border-radius: 6px; overflow: hidden;
  background: var(--bg); display: grid; place-items: center; font-size: 11px; color: var(--muted); text-align: center; padding: 2px;
}
.chip-thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.chip-thumb em { position: absolute; left: 0; right: 0; bottom: 0; font-style: normal; font-size: 10px; background: var(--accent); color: #fff; text-align: center; }
.chip.ending .chip-thumb { outline: 2px solid var(--accent); outline-offset: -2px; }
.chip-label { font-size: 11px; color: var(--muted); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 860px) {
  .mode-switch { grid-template-columns: 1fr; }
  .gen-actions { flex-direction: column; align-items: stretch; }
}

/* 产品选择 */
.product-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px; }
.product {
  display: grid; grid-template-columns: auto 1fr; column-gap: 8px; align-items: center; cursor: pointer;
  padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--card);
}
.product input { grid-row: span 2; }
.product strong { font-size: 14px; }
.product span { font-size: 12px; color: var(--muted); }
.product.on { border-color: var(--accent); background: var(--accent-soft); }
.product.on strong { color: var(--accent); }
.cap-list { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 13px; color: var(--muted); margin: -4px 0 12px; }
.product-tag { background: var(--accent-soft); color: var(--accent); font-size: 12px; vertical-align: middle; }

/* 模板库 */
.btn.on { border-color: var(--accent); color: var(--accent); }
.preset-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.preset { border: 1px solid var(--line); border-radius: 10px; padding: 14px; display: flex; flex-direction: column; gap: 8px; }
.preset-head { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.preset p { margin: 0; font-size: 13px; color: var(--muted); flex: 1; }
.preset .btn { align-self: flex-start; }
.note-input { margin: -4px 0 14px; font-size: 13px; }

/* 整段组合：通用分类勾选 */
.name-checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 6px; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; }
.name-checks label { display: flex; align-items: center; gap: 6px; font-size: 13px; min-width: 0; }
.name-checks small { color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 有效画面标签 */
.count-pill.untagged { background: color-mix(in srgb, var(--err) 18%, transparent); color: var(--err); }
.tag-btn { margin-left: 4px; font-size: 13px; opacity: .55; padding: 0 2px; }
.tag-btn:hover { opacity: 1; }
.tag-box { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; margin-bottom: 14px; background: var(--bg); }
.tag-box-head { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; margin-bottom: 6px; }
.tag-box .hint { margin: 6px 0 0; }
.tag-form { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px; align-items: end; }
.tag-form label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); }
.tag-form label.inline, label.inline { flex-direction: row; align-items: center; gap: 6px; font-size: 13px; color: var(--text); }
.tag-form .btn { justify-self: start; }
.batch-bar {
  position: sticky; top: 64px; z-index: 5; display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  padding: 10px 12px; margin-bottom: 12px; border-radius: 10px; border: 1px solid var(--accent); background: var(--card);
}
.batch-bar input:not([type=checkbox]) { width: 200px; }
.asset.picked .thumb { outline: 3px solid var(--accent); outline-offset: -3px; }
.thumb { cursor: default; }
.thumb .pick {
  position: absolute; left: 6px; top: 6px; width: 20px; height: 20px; border-radius: 50%; cursor: pointer; z-index: 1;
  display: grid; place-items: center; font-size: 12px; color: transparent;
  background: rgba(0, 0, 0, .35); border: 1.5px solid rgba(255, 255, 255, .85);
}
.thumb .pick.on { background: var(--accent); border-color: var(--accent); color: #fff; }
.asset-tags { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 4px; }
.chip-tag { font-size: 11px; padding: 0 6px; border-radius: 4px; background: var(--bg); color: var(--muted); line-height: 18px; white-space: nowrap; }
.chip-tag.ok { color: var(--ok); background: color-mix(in srgb, var(--ok) 14%, transparent); }
.chip-tag.bad { color: var(--err); background: color-mix(in srgb, var(--err) 14%, transparent); }
.chip-tag.gen { color: var(--warn); background: color-mix(in srgb, var(--warn) 14%, transparent); }
.chip-tag.own { color: var(--accent); background: var(--accent-soft); }
.claim-line { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-top: 4px; font-size: 12px; }
.claim-edit { display: flex; gap: 6px; margin-top: 4px; }
.claim-edit input { font-size: 12px; padding: 4px 8px !important; }
.chip-thumb .mb {
  position: absolute; top: 2px; right: 2px; z-index: 1; font-style: normal; font-size: 10px; line-height: 14px;
  padding: 0 3px; border-radius: 3px; color: #fff;
}
.chip-thumb .mb.ok { background: var(--ok); }
.chip-thumb .mb.gen { background: var(--warn); }
.gen-text > div { min-width: 0; }
@media (max-width: 860px) { .tag-form { grid-template-columns: 1fr; } }

/* 模板所属产品 */
.tpl-filter { font-size: 13px; }
.tpl-product { margin-left: 6px; font-size: 11px; color: var(--accent); background: var(--accent-soft); padding: 0 5px; border-radius: 4px; }
.product-field { max-width: 460px; margin-bottom: 8px; }
.product.disabled { opacity: .4; cursor: not-allowed; }

/* 素材来源 */
.label-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.label-row > label { font-weight: 500; font-size: 13px; }
.source-form { border: 1px dashed var(--accent); border-radius: 10px; padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.source-list { border-top: 1px solid var(--line); padding-top: 8px; display: flex; flex-direction: column; gap: 4px; }
.source-item { display: flex; align-items: center; gap: 8px; font-size: 13px; padding: 3px 0; }
.mt { margin-top: 6px; }

/* AI 写文案 */
.ai-btn { border-color: var(--accent); color: var(--accent); }
.ai-panel { border: 1px solid var(--accent); background: var(--accent-soft); border-radius: 10px; padding: 12px; display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
.ai-result { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.ai-version, .ai-advice { background: var(--card); border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; font-size: 13px; }
.ai-version ol, .ai-advice ul { margin: 6px 0 0; padding-left: 20px; }
.ai-version li, .ai-advice li { margin: 2px 0; }
.ai-advice { grid-column: 1 / -1; }

/* 声音与音乐 */
.sound-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.sound-box { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.sound-box > label:not(.inline):not(.btn) { display: flex; flex-direction: column; gap: 2px; color: var(--muted); font-size: 12px; }

/* 模板完整选项 */
.opt-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.opt-group { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
.opt-group h4 { margin: 0 0 2px; font-size: 14px; }
.opt-group label:not(.inline) { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--muted); }
.opt-group .row label { min-width: 0; }
.slot-adv td { padding-top: 0 !important; }
.slot-adv td[colspan] { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: flex-end; background: var(--bg); border-radius: 8px; padding: 10px !important; }
.slot-adv label:not(.inline) { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--muted); }
.icon.on { border-color: var(--accent); color: var(--accent); }
.slots .ops { width: 168px; }

/* 差异化增强 / 贴纸 / 效果预览 */
.opt-group h4 small { font-weight: 400; margin-left: 6px; }
.opt-group .row label.inline { flex-direction: row; align-items: center; color: var(--text); font-size: 13px; }
.sticker-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(42px, 1fr)); gap: 6px; }
.sticker { position: relative; aspect-ratio: 1; border: 2px solid var(--line); border-radius: 8px; background: var(--bg); padding: 4px; cursor: pointer; }
.sticker:hover { border-color: var(--accent); }
.sticker img { width: 100%; height: 100%; object-fit: contain; display: block; }
.sticker.on { border-color: var(--accent); background: var(--accent-soft); }
.sticker .del { position: absolute; top: -6px; right: -6px; width: 16px; height: 16px; border-radius: 50%; background: var(--err); color: #fff; font-size: 10px; font-style: normal; line-height: 16px; text-align: center; display: none; }
.sticker:hover .del { display: block; }
.settings-head { margin-top: 18px; margin-bottom: 8px; }
.settings-head h3 { margin: 0; }
.fx-preview { display: flex; gap: 14px; align-items: flex-start; border: 1px solid var(--line); border-radius: 10px; padding: 12px; margin-bottom: 12px; background: var(--bg); }
.fx-preview img { width: 240px; max-height: 430px; object-fit: contain; border-radius: 8px; background: #000; flex: none; }
.fx-preview img.wide { width: 420px; }
.fx-preview-info { font-size: 13px; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.fx-preview-info p { margin: 0; }
input[type=color] { padding: 0 2px; height: 34px; width: 64px; cursor: pointer; }
@media (max-width: 700px) { .fx-preview { flex-direction: column; } .fx-preview img, .fx-preview img.wide { width: 100%; } }

/* 发布标题 / 图片素材 */
.caption { display: flex; gap: 8px; align-items: flex-start; font-size: 12px; margin-top: 4px; color: var(--text); }
.caption span { flex: 1; min-width: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.opt-group textarea { font-size: 13px; min-height: 0; }

/* 时长混剪 */
.mode-switch.three { grid-template-columns: 1fr 1fr 1fr; }
.mix-box { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px 4px; margin-bottom: 12px; background: var(--bg); }
.mix-box textarea { min-height: 0; }
@media (max-width: 860px) { .mode-switch.three { grid-template-columns: 1fr; } }

/* 批量生成页的成片设置 */
.gen-settings { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; }
.gen-settings .settings-head h3 { display: none; }
.gen-settings-summary { font-size: 12px; padding: 6px 2px; }
.custom-box { border: 1px dashed var(--accent); border-radius: 10px; padding: 12px 14px; margin-bottom: 14px; }
.custom-save { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }

/* 网页内确认框 */
.ask-mask { position: fixed; inset: 0; z-index: 60; background: rgba(0, 0, 0, .45); display: grid; place-items: center; padding: 16px; }
.ask-box { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 18px 20px; width: 100%; max-width: 420px; box-shadow: 0 10px 30px rgba(0, 0, 0, .25); }
.ask-box p { margin: 0 0 16px; line-height: 1.6; white-space: pre-line; }
.ask-actions { justify-content: flex-end; }
.link.ai-line { margin-left: auto; font-weight: 600; }
.link.ai-line:disabled { color: var(--muted, #999); cursor: wait; }

/* 素材库：识别出的字幕 */
.asr-text { font-size: 11px; color: var(--muted); margin-top: 4px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.cat .tpl-del { margin-left: auto; padding: 0 4px; border-radius: 5px; font-size: 13px; opacity: .35; transition: opacity .15s; }
.cat:hover .tpl-del, .cat.active .tpl-del { opacity: .7; }
.cat .tpl-del:hover { opacity: 1; background: #fde2e1; }
.bgm-pick { border: 1px solid var(--line); border-radius: 8px; padding: 6px 8px; display: flex; flex-direction: column; gap: 4px; }
.bgm-pick-head { display: flex; justify-content: space-between; gap: 8px; font-size: 12px; color: var(--muted); }
.bgm-list { max-height: 210px; overflow-y: auto; display: flex; flex-direction: column; }
.bgm-item { display: flex; align-items: center; gap: 6px; padding: 3px 2px; border-radius: 6px; font-size: 13px; }
.bgm-item.on { background: var(--accent-soft); }
.bgm-item label.inline { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bgm-item .muted { font-size: 11px; font-variant-numeric: tabular-nums; }
.bgm-play { flex: none; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--line); background: var(--card, #fff); color: var(--accent); cursor: pointer; font-size: 10px; padding: 0; }
.opt-group .checks label { flex-direction: row; align-items: center; font-size: 13px; color: var(--text); }
.label-row .btn.small { margin-left: auto; }
.ai-script-brief input { width: 100%; margin: 4px 0; }
.ai-script-text { margin: 4px 0; font-size: 13px; line-height: 1.6; white-space: pre-wrap; }
.ai-version-head { display: flex; align-items: center; gap: 8px; }
.ai-version-head .btn { margin-left: auto; }
.share-box { max-width: 520px; display: flex; flex-direction: column; gap: 8px; }
.share-box h3 { margin: 0; font-size: 16px; }
.share-box .hint { margin: 0; }
.share-box input { width: 100%; font-size: 13px; }
.pill-btn { cursor: pointer; font: inherit; }
.gen-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.gen-head h2 { margin: 0; }
.seg { display: inline-flex; border: 1px solid var(--line); border-radius: 10px; padding: 3px; gap: 3px; background: var(--bg); }
.seg.wrap { flex-wrap: wrap; }
.seg button { border: 0; background: none; padding: 6px 14px; border-radius: 7px; font: inherit; font-size: 13px; color: var(--text); cursor: pointer; }
.seg button.on { background: var(--accent); color: #fff; font-weight: 600; }
.auto-box { display: flex; flex-direction: column; gap: 4px; }
.auto-intro { margin: 4px 0 8px; padding: 10px 12px; border-radius: 10px; background: var(--accent-soft); font-size: 13px; line-height: 1.6; }
.auto-box > .field > input { width: 100%; }
.auto-result { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }

/* ---------- 小屏：侧边栏变成顶部横条 ---------- */
@media (max-width: 1100px) {
  .shell { grid-template-columns: 88px minmax(0, 1fr); }
  .sidebar { padding: 0 12px 14px; }
  .sb-brand { justify-content: center; padding: 0; }
  .sb-brand-text, .sb-text, .sb-label, .theme-switch span { display: none; }
  .sb-item { justify-content: center; padding: 0; position: relative; }
  .sb-count { position: absolute; top: 6px; right: 6px; min-width: 18px; height: 18px; line-height: 18px; font-size: 11px; padding: 0 4px; }
  .theme-switch { flex-direction: column; gap: 2px; }
  main { padding: 24px 24px 56px; }
}
@media (max-width: 760px) {
  .shell { display: block; }
  .sidebar { position: sticky; top: 0; z-index: 20; height: auto; flex-direction: row; align-items: center; gap: 8px; padding: 8px 12px; border-right: 0; border-bottom: 1px solid var(--line); }
  .sb-brand { height: auto; }
  .logo { width: 34px; height: 34px; }
  .sb-scroll { display: flex; align-items: center; overflow-x: auto; margin: 0; padding: 0; }
  .sb-nav { flex-direction: row; gap: 2px; }
  .sb-item { height: 40px; padding: 0 12px; gap: 6px; }
  .sb-item .sb-text { display: none; font-size: 13px; }
  .sb-item.active .sb-text { display: inline; }   /* 手机上只有当前页显示文字，其余只留图标 */
  .sb-item { padding: 0 10px; }
  .sb-ico, .sb-ico svg { width: 18px; height: 18px; }
  .sb-foot { padding: 0; }
  .theme-switch { flex-direction: row; }
  .theme-switch button { width: 30px; height: 30px; }
  main { padding: 16px 16px 48px; }
  .page-head h1 { font-size: 26px; }
  .page-desc { display: none; }
  .layout-2 { grid-template-columns: 1fr; }
  .side { position: static; max-height: none; }
}

/* 产品选择：搜索 + 已选标签 + 紧凑列表（产品多了也不臃肿） */
.catalog-picker { position: relative; min-width: 0; }
.catalog-picker > input { width: 100%; }
.catalog-picker-menu { position: absolute; z-index: 45; top: calc(100% + 4px); left: 0; right: 0; max-height: 270px; overflow: auto; padding: 5px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); box-shadow: 0 12px 28px rgba(0,0,0,.18); }
.catalog-picker-option { display: flex; flex-direction: column; width: 100%; gap: 2px; padding: 7px 9px; border: 0; border-radius: 6px; color: inherit; background: transparent; text-align: left; cursor: pointer; }
.catalog-picker-option:hover { background: var(--accent-soft); }
.catalog-picker-option small, .catalog-picker-hint { color: var(--muted); font-size: 12px; }
.catalog-picker-new { color: var(--accent); border-top: 1px solid var(--line); }
.catalog-picker-hint { margin: 5px 8px; }
.catalog-picker-option.hi { background: var(--accent-soft); }
.catalog-picker-option.picked b { color: var(--accent); }
.catalog-picker-recent { margin-left: 6px; padding: 1px 6px; border-radius: 99px; background: var(--accent-soft); color: var(--accent); font-size: 11px; font-style: normal; font-weight: 500; }
.catalog-picker-chips { margin-bottom: 6px; }
.cur-product { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; width: 300px; max-width: 100%; }
.cur-product-label { flex: 0 0 auto; color: var(--muted); font-size: 12px; white-space: nowrap; }
.cur-product .catalog-picker { flex: 1; }
.gen-defaults { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 8px 0; padding: 8px 12px; border-radius: 8px; background: var(--accent-soft); font-size: 13px; }
.product-center-kit-link { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.home-cost-breakdown { display: block; margin-top: 5px; line-height: 1.45; }
.pp { display: flex; flex-direction: column; gap: 10px; }
.pp-bar { display: flex; align-items: center; gap: 12px; }
.pp-search { position: relative; flex: 1; max-width: 420px; }
.pp-search svg { position: absolute; left: 14px; top: 50%; width: 17px; height: 17px; transform: translateY(-50%); fill: none; stroke: var(--muted); stroke-width: 2; stroke-linecap: round; pointer-events: none; }
.pp-search input { padding-left: 40px !important; }
.pp-count { font-size: 13px; color: var(--muted); white-space: nowrap; }
.pp-count b { color: var(--accent); }
.pp-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.pp-chip { display: inline-flex; align-items: center; gap: 4px; padding: 4px 6px 4px 12px; border-radius: 99px; background: var(--accent); color: #fff; font-size: 12px; font-weight: 600; }
.pp-chip button { width: 18px; height: 18px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .25); color: #fff; font-size: 12px; line-height: 1; cursor: pointer; padding: 0; }
.pp-chip button:hover { background: rgba(255, 255, 255, .45); }
.pp-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 2px 8px; max-height: 236px; overflow-y: auto; padding: 6px; border-radius: 16px; background: var(--field); }
.pp-row { display: flex; align-items: center; gap: 8px; min-width: 0; height: 36px; padding: 0 10px; border-radius: 10px; cursor: pointer; font-size: 13px; }
.pp-row:hover { background: var(--card); }
.pp-row.on { background: var(--card); color: var(--accent); font-weight: 600; box-shadow: 0 2px 8px var(--accent-glow); }
.pp-row.disabled { opacity: .4; cursor: not-allowed; }
.pp-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pp-meta { flex: none; font-size: 11px; color: var(--faint); font-variant-numeric: tabular-nums; }
.pp-empty { grid-column: 1 / -1; padding: 10px; }

/* 看图 AI 打标 + 审核 */
.ai-bar { display: flex; flex-direction: column; gap: 10px; margin: 0 0 16px; padding: 16px 18px; border-radius: 18px; background: var(--accent-soft); }
.ai-bar-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.ai-bar-top strong { margin-right: 8px; }
.ai-progress { display: flex; align-items: center; gap: 12px; font-size: 12px; color: var(--muted); }
.ai-progress-bar { flex: 1; height: 8px; border-radius: 4px; background: var(--card); overflow: hidden; }
.ai-progress-bar i { display: block; height: 100%; background: var(--accent); border-radius: 4px; transition: width .4s; }
.review-seg { align-self: flex-start; flex-wrap: wrap; background: var(--card); }
.review-actions { flex-wrap: wrap; }
.chip-tag.ai { background: var(--accent); color: #fff; }
.ai-line { display: flex; align-items: center; gap: 6px; min-width: 0; margin-top: 4px; font-size: 12px; }
.ai-scene { flex: 1; min-width: 0; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ai-actions { display: flex; gap: 10px; margin-top: 4px; font-size: 12px; }
.ai-actions .link { font-size: 12px; }

/* 素材库：打标进度标记 + 待办总览 */
.badge { flex: none; display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: 10px; font-size: 11px; font-weight: 600; white-space: nowrap; }
.badge.todo { background: color-mix(in srgb, var(--err) 16%, transparent); color: var(--err); }
.badge.review { background: var(--accent-soft); color: var(--accent); }
.badge.done { background: color-mix(in srgb, var(--ok) 16%, transparent); color: var(--ok); }
.badge.off { background: var(--field); color: var(--muted); }
.badge.mini { height: 16px; padding: 0 5px; font-size: 10px; margin-left: 4px; }
.tree-todo { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 10px; }
.group { cursor: pointer; }
.group.active { background: var(--accent-soft); color: var(--accent); }
.chev-btn { flex: none; display: inline-grid; place-items: center; width: 22px; height: 22px; padding: 0; border: 0; border-radius: 6px; background: none; cursor: pointer; }
.chev-btn:hover { background: var(--field); }
.group .group-meta { margin-left: auto; }
.ov-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.ov-head .muted { margin-top: 4px; max-width: 620px; }
.stat.todo .stat-num { color: var(--err); }
.stat.review .stat-num { color: var(--accent); }
.stat.done .stat-num { color: var(--ok); }
.ov-progress { display: flex; align-items: center; gap: 12px; font-size: 13px; color: var(--muted); margin: -8px 0 8px; }
.todo-list { display: flex; flex-direction: column; gap: 6px; }
.todo-row { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 14px; background: var(--field); }
.todo-name { display: flex; flex-direction: column; min-width: 160px; flex: 0 0 200px; }
.todo-name strong { font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.todo-name .muted { font-size: 12px; }
.todo-bar { flex: 1; min-width: 60px; height: 6px; border-radius: 3px; background: var(--card); overflow: hidden; }
.todo-bar i { display: block; height: 100%; background: var(--ok); }
@media (max-width: 760px) { .todo-row { flex-wrap: wrap; } .todo-name { flex-basis: 100%; } }
details.tag-box > summary { cursor: pointer; list-style: none; }
details.tag-box > summary::-webkit-details-marker { display: none; }
details.tag-box > summary strong::before { content: '▸ '; color: var(--muted); }
details.tag-box[open] > summary strong::before { content: '▾ '; }
.pp-sec { font-size: 12px; font-weight: 600; color: var(--muted); margin-top: 4px; }
.pp-sec small { font-weight: 500; color: var(--faint); margin-left: 4px; }
.pp-all { font-size: 13px; white-space: nowrap; }

/* 分镜生产 */
.storyboard { display: flex; flex-direction: column; gap: 16px; max-width: 1280px; }
.sb-product { margin-bottom: 12px; }
.sb-refs { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; }
.sb-ref { position: relative; aspect-ratio: 3 / 4; border-radius: 12px; overflow: hidden; background: var(--field); }
.sb-ref img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sb-ref-del { position: absolute; top: 6px; right: 6px; width: 24px; height: 24px; border: 0; border-radius: 50%; background: rgba(0, 0, 0, .55); color: #fff; cursor: pointer; font-size: 14px; line-height: 1; }
.sb-ref-add { display: grid; place-items: center; border: 2px dashed var(--line); background: transparent; cursor: pointer; color: var(--muted); font-size: 13px; font-weight: 600; }
.sb-ref-add:hover { border-color: var(--accent); color: var(--accent); }
.sb-ref-add.busy { opacity: .6; cursor: wait; }
.sb-counts { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-bottom: 12px; }
.sb-counts label { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 14px; border-radius: 12px; background: var(--field); font-size: 13px; font-weight: 600; }
.sb-counts .num-input { width: 70px; }
.sb-opts { flex-wrap: wrap; margin-bottom: 12px; }
.sb-opts > label { display: flex; align-items: center; gap: 6px; font-size: 13px; white-space: nowrap; }
.sb-opts > label select { width: auto; }
.btn.big-ish { min-height: 44px; padding: 8px 22px; font-size: 14px; }
.sb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 14px; }
.sb-shot { display: flex; flex-direction: column; gap: 6px; padding: 10px; border-radius: 14px; background: var(--field); border: 2px solid transparent; }
.sb-shot.accept { border-color: var(--ok); }
.sb-shot.reject { opacity: .55; }
.sb-shot.failed { border-color: color-mix(in srgb, var(--err) 50%, transparent); }
.sb-video { position: relative; aspect-ratio: 9 / 16; border-radius: 10px; overflow: hidden; background: #000; }
.sb-video video { width: 100%; height: 100%; object-fit: contain; display: block; }
.sb-ph { position: absolute; inset: 0; display: grid; place-items: center; color: #ccc; font-size: 13px; background: var(--card); }
.sb-mark { position: absolute; top: 8px; left: 8px; padding: 2px 8px; border-radius: 8px; font-size: 12px; font-weight: 700; color: #fff; }
.sb-mark.ok { background: var(--ok); }
.sb-mark.bad { background: var(--err); }
.sb-shot-title { font-size: 13px; line-height: 1.4; }
.sb-err { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sb-prompt summary { font-size: 12px; color: var(--muted); cursor: pointer; }
.sb-prompt textarea { margin: 6px 0; font-size: 12px; }
.sb-actions { display: flex; gap: 12px; font-size: 13px; }
.sb-actions .link.strong { font-weight: 700; }
.sb-mark.lib { background: var(--accent); }
.sb-plans { flex-wrap: wrap; margin-bottom: 12px; }
.sb-plans select { width: auto; max-width: 320px; }
.sb-qc { font-size: 12px; padding: 4px 8px; border-radius: 8px; background: var(--card); color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sb-qc.ok { color: var(--ok); background: color-mix(in srgb, var(--ok) 12%, transparent); }
.sb-qc.bad { color: var(--err); background: color-mix(in srgb, var(--err) 12%, transparent); }
.sb-qc.warn { color: var(--warn); }
.sb-desc { margin-bottom: 12px; }
.sb-n { width: 60px !important; }
.sb-tools { flex-wrap: wrap; margin-top: 8px; }
.sb-tools > label select { width: auto; }
.sb-go { margin-top: 10px; }
.sb-cat { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; }
.sb-cat select { width: auto; font-size: 12px; padding: 4px 8px; }
.sb-cat select.empty { border-color: var(--warn); color: var(--warn); }
.sb-name-wrap { position: relative; }
.sb-names { position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 30; max-height: 280px; overflow-y: auto; padding: 6px;
  border-radius: 14px; background: var(--card); box-shadow: 0 12px 32px rgba(17, 20, 45, .16); border: 1px solid var(--line); }
.sb-names-title { padding: 6px 10px 4px; font-size: 12px; color: var(--muted); }
.sb-names button { display: block; width: 100%; text-align: left; padding: 8px 10px; border: 0; border-radius: 8px; background: none; font: inherit; font-size: 13px; color: var(--text); cursor: pointer; }
.sb-names button:hover { background: var(--accent-soft); color: var(--accent); }
.sb-reuse { align-self: flex-start; }
.sb-batch-refs { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 12px; }
.sb-batch-refs img { width: 30px; height: 40px; object-fit: cover; border-radius: 6px; }
.sb-batch-refs .muted { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 520px; }
.sb-cat input { font-size: 12px; padding: 5px 8px; }
.sb-cat input.cat-empty { border-color: var(--warn); }   /* 不能叫 .empty：会套上全局空状态的 200px 最小高度 */
.sb-cat .sb-names { max-height: 200px; }
.sb-cat .sb-name-wrap { flex: 1; min-width: 0; }
.sb-cat .sb-name-wrap input { width: 100%; }
.sb-cat .sb-names { min-width: 240px; right: auto; white-space: normal; }
.sb-shot, .sb-grid { overflow: visible; }
.bgm-tags { flex-wrap: wrap; }
.bgm-mini { margin-left: 6px; font-weight: 500; }
.bgm-search { width: 180px !important; font-size: 12px !important; padding: 3px 8px !important; }

/* 分镜生产：简洁版（一个创作区 + 折叠批次） */
.sb-composer { display: flex; flex-direction: column; gap: 12px; }
.sb-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.sb-prod { flex: 0 0 260px; }
.sb-prod input { font-weight: 600; }
.sb-refs-inline { display: flex; align-items: center; gap: 6px; }
.sb-ref-mini { position: relative; width: 44px; height: 56px; border-radius: 8px; overflow: hidden; background: var(--field); flex: none; }
.sb-ref-mini img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sb-ref-mini .sb-ref-del { top: 2px; right: 2px; width: 18px; height: 18px; font-size: 12px; }
.sb-ref-mini.sb-ref-add { width: auto; min-width: 72px; padding: 0 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; border: 1.5px dashed var(--line); background: transparent; cursor: pointer; color: var(--muted); font-size: 16px; line-height: 1.1; }
.sb-ref-mini.sb-ref-add small { font-size: 10px; }
.sb-desc-inline { flex: 1 1 320px; }
.sb-warn { margin: -4px 0 0; }
.sb-rows { display: flex; flex-direction: column; gap: 6px; }
.sb-row { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; border-radius: 12px; background: var(--field); }
.sb-row.nop { border-left: 3px solid var(--warn); }
.sb-row-no { flex: none; width: 22px; padding-top: 10px; font-size: 12px; color: var(--muted); text-align: center; font-variant-numeric: tabular-nums; }
.sb-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.sb-want { background: var(--card) !important; }
.sb-row-prompt summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 6px; font-size: 12px; min-width: 0; padding: 2px 4px; }
.sb-row-prompt summary::-webkit-details-marker { display: none; }
.sb-row-preview { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sb-row-prompt textarea { margin-top: 4px; font-size: 13px; background: var(--card) !important; }
.sb-row-num { flex: none; display: flex; align-items: center; gap: 3px; padding-top: 2px; font-size: 12px; color: var(--muted); }
.sb-row-num input { width: 56px !important; padding: 6px 6px !important; text-align: center; background: var(--card) !important; }
.sb-row .icon { margin-top: 4px; }
.sb-rows-tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 2px 0; }
.sb-rows-tools .hint { margin-left: 4px; }
.sb-n-inline { width: 44px !important; padding: 2px 4px !important; font-size: 12px !important; text-align: center; margin: 0 2px; }
.sb-bar { display: flex; align-items: center; gap: 14px; padding: 10px 12px; border-radius: 14px; background: var(--field); flex-wrap: wrap; }
.sb-bar-item { display: flex; align-items: center; gap: 6px; font-size: 13px; }
.sb-bar-item select { width: auto; background: var(--card) !important; }
.sb-batch { padding: 14px 18px; }
.sb-batch-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; cursor: pointer; min-height: 32px; }
.sb-batch-head strong { font-size: 15px; }
.sb-batch-meta { font-size: 12px; }
.sb-batch-ref { width: 26px; height: 34px; object-fit: cover; border-radius: 5px; }
.sb-batch .sb-grid { margin-top: 12px; }
.sb-qc-dot { position: absolute; right: 8px; top: 8px; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-size: 12px; font-weight: 700; cursor: help; }
.sb-qc-dot.ok { background: var(--ok); }
.sb-qc-dot.bad { background: var(--err); }
.sb-names button.suggest { color: var(--accent); font-weight: 600; }
@media (max-width: 760px) { .sb-prod { flex-basis: 100%; } .sb-row { flex-wrap: wrap; } }
.auto-plan { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; }
.auto-plan-product { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: 14px; background: var(--field); }
.auto-plan-head strong { font-size: 15px; }
.auto-version { display: flex; flex-direction: column; gap: 6px; }
.auto-version textarea, .auto-version input { background: var(--field) !important; }
.auto-vname { max-width: 220px; font-weight: 600; }

/* 分镜生产：即梦式创作台 */
.sb-studio { display: flex; flex-direction: column; gap: 12px; padding: 18px 20px; }
.sb-studio-head { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap; }
.sb-field-label { font-size: 12px; font-weight: 600; margin-bottom: 5px; }
.sb-field-label .muted { font-weight: 400; }
.sb-desc-wrap { flex: 1 1 320px; min-width: 0; }
.sb-tb-label { font-size: 12px; color: var(--muted); margin-right: 6px; }
.sb-studio-body { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 14px; align-items: start; }
.sb-side { display: flex; flex-direction: column; gap: 8px; }
.sb-side-title { font-size: 12px; font-weight: 600; color: var(--muted); }
.sb-side-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; }
.sb-side-grid .sb-ref-mini { width: auto; height: auto; aspect-ratio: 3 / 4; }
.sb-side-grid .sb-ref-mini.sb-ref-add { min-width: 0; padding: 0; font-size: 20px; }
.sb-side-hint { font-size: 12px; margin: 0; }
.sb-main { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.sb-lines { font-size: 14px; line-height: 1.7; padding: 12px 14px !important; min-height: 150px; background: var(--field) !important; border-radius: 14px !important; }
.sb-main-tools { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 12px; }
.sb-prompts { display: flex; flex-direction: column; gap: 8px; padding: 10px; border-radius: 12px; background: var(--field); }
.sb-prompt-row { display: flex; flex-direction: column; gap: 4px; padding: 8px 10px; border-radius: 10px; background: var(--card); }
.sb-prompt-head { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.sb-prompt-row textarea { font-size: 12px; }
.sb-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 12px; border-radius: 16px; background: var(--field); }
.sb-tb { display: flex; align-items: center; font-size: 13px; }
.sb-tb select { width: auto; background: var(--card) !important; font-weight: 600; padding: 7px 10px !important; }
.sb-est { font-size: 13px; }
.sb-model-desc { margin: -4px 0 0 4px; }
@media (max-width: 760px) { .sb-studio-body { grid-template-columns: 1fr; } .sb-side-grid { grid-template-columns: repeat(5, 1fr); } }
.sb-studio-body { grid-template-columns: minmax(0, 1fr); }
.sb-ref-strip { display: flex; gap: 8px; flex-wrap: wrap; }
.sb-ref-strip .sb-ref-mini { width: 54px; height: 72px; }
.sb-ref-no { position: absolute; left: 4px; top: 4px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 4px; background: rgba(0, 0, 0, .55); color: #fff; font-size: 10px; line-height: 16px; text-align: center; }
.sb-upload-btn { cursor: pointer; }
.sb-upload-btn.busy { opacity: .6; }
.sb-lines-label { font-size: 13px; font-weight: 600; }
.sb-lines-label .muted { font-weight: 400; }

/* 分镜表格（一行一个分镜） */
.sb-table-wrap { border-radius: 14px; background: var(--field); padding: 6px 10px; overflow-x: auto; }
.sb-table { width: 100%; border-collapse: collapse; }
.sb-table th { padding: 8px 6px; font-size: 12px; font-weight: 600; color: var(--muted); text-align: left; border-bottom: 1px solid var(--line); }
.sb-table td { padding: 8px 6px; vertical-align: top; border-bottom: 1px solid color-mix(in srgb, var(--line) 60%, transparent); }
.sb-table tr:last-child td { border-bottom: 0; }
.sb-table textarea { font-size: 14px; line-height: 1.6; padding: 10px 12px !important; background: var(--card) !important; min-height: 0; resize: vertical; }
.sb-table .c-no { width: 28px; padding-top: 16px; font-size: 12px; color: var(--muted); text-align: center; font-variant-numeric: tabular-nums; }
.sb-table .c-num { width: 70px; }
.sb-table .c-num input { width: 64px !important; padding: 8px 6px !important; text-align: center; background: var(--card) !important; }
.sb-table .c-act { width: 64px; white-space: nowrap; padding-top: 12px; }
.sb-table .c-act .icon { margin: 0 2px; }
.sb-table .claim-line { margin-top: 4px; }
.sb-empty { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 14px 6px; font-size: 13px; margin: 0; }
.sb-table tbody tr td:nth-child(2) { width: 30%; }

/* 带说明的选项弹层 */
.pick-btn { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 6px 12px; border: 0; border-radius: 10px; background: var(--card); color: var(--text); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; box-shadow: inset 0 0 0 1.5px var(--line); white-space: nowrap; }
.pick-btn:hover { box-shadow: inset 0 0 0 1.5px var(--accent); }
.pick-btn i { font-style: normal; font-size: 10px; color: var(--muted); }
.pick-btn.sm { min-height: 32px; padding: 4px 10px; font-size: 12px; }
.pick-mask { position: fixed; inset: 0; z-index: 70; }
.pick-box { position: fixed; width: 300px; max-height: min(520px, calc(100vh - 24px)); display: flex; flex-direction: column; border-radius: 16px; background: var(--card); border: 1px solid var(--line); box-shadow: 0 18px 48px rgba(17, 20, 45, .22); padding: 14px 10px 10px; }
.pick-title { font-size: 15px; font-weight: 700; padding: 0 8px; }
.pick-desc { font-size: 12px; color: var(--muted); line-height: 1.5; padding: 4px 8px 8px; }
.pick-list { overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
.pick-item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 9px 10px; border: 0; border-radius: 10px; background: none; color: var(--text); font: inherit; cursor: pointer; }
.pick-item:hover { background: var(--field); }
.pick-item.on { background: var(--accent-soft); }
.pick-ico { flex: none; width: 20px; text-align: center; color: var(--muted); font-size: 13px; }
.pick-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.pick-main b { font-size: 13px; font-weight: 600; }
.pick-main small { font-size: 11px; color: var(--muted); line-height: 1.4; }
.pick-check { color: var(--accent); font-weight: 700; }
.pick-custom { border-top: 1px solid var(--line); margin-top: 8px; padding: 10px 8px 2px; }
.pick-custom-label { font-size: 12px; color: var(--muted); margin-bottom: 6px; }
.pick-custom input { width: 120px !important; }

/* 资产库弹窗 */
.lib-box { display: flex; flex-direction: column; gap: 10px; width: 100%; max-width: 760px; max-height: calc(100vh - 40px); background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 16px 18px; box-shadow: 0 18px 48px rgba(17, 20, 45, .25); }
.lib-head { display: flex; align-items: center; gap: 10px; font-size: 16px; }
.lib-tools { display: flex; gap: 8px; align-items: center; }
.lib-tools input { flex: 1; }
.lib-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.lib-chip { border: 0; border-radius: 999px; padding: 5px 12px; background: var(--field); color: var(--text); font: inherit; font-size: 12px; cursor: pointer; }
.lib-chip.on { background: var(--accent); color: #fff; }
.lib-note { margin: 0; padding: 8px 12px; border-radius: 10px; font-size: 12px; color: var(--warn); background: color-mix(in srgb, var(--warn) 10%, transparent); }
.lib-grid { overflow-y: auto; display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 10px; padding: 2px; }
.lib-item { display: flex; flex-direction: column; gap: 4px; border-radius: 12px; padding: 6px; background: var(--field); cursor: pointer; border: 2px solid transparent; }
.lib-item.on { border-color: var(--accent); }
.lib-item.dim { opacity: .7; cursor: not-allowed; }
.lib-thumb { position: relative; aspect-ratio: 1; border-radius: 8px; overflow: hidden; background: var(--card); display: grid; place-items: center; }
.lib-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lib-ph { font-size: 28px; }
.lib-kind { position: absolute; left: 6px; top: 6px; padding: 1px 6px; border-radius: 6px; font-size: 10px; background: rgba(0, 0, 0, .55); color: #fff; }
.lib-check { position: absolute; right: 6px; top: 6px; width: 20px; height: 20px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 12px; font-weight: 700; display: grid; place-items: center; }
.lib-name { font-size: 12px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lib-meta { display: flex; align-items: center; font-size: 11px; }
.lib-meta .muted { font-size: 11px; }
.lib-meta .link { font-size: 11px; }
.lib-empty { padding: 48px 0; text-align: center; color: var(--muted); font-size: 14px; }
.lib-empty-ico { font-size: 40px; margin-bottom: 8px; }
.lib-foot { display: flex; align-items: center; gap: 8px; padding-top: 8px; border-top: 1px solid var(--line); }
.lib-new { display: flex; flex-direction: column; gap: 8px; padding: 12px; border-radius: 12px; background: var(--field); }
.lib-new input, .lib-new textarea { background: var(--card) !important; }
.lib-texts { overflow-y: auto; display: flex; flex-direction: column; gap: 8px; }
.lib-text { padding: 10px 12px; border-radius: 12px; background: var(--field); cursor: pointer; border: 2px solid transparent; }
.lib-text:hover { border-color: var(--accent); }
.lib-text-head { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.lib-text-body { margin-top: 4px; font-size: 12px; color: var(--muted); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; white-space: pre-line; }
.link.danger { color: var(--err); }
.lib-sync { display: flex; align-items: center; gap: 10px; font-size: 12px; padding: 0 2px; }
.lib-sync .link { font-size: 12px; }
.sb-desc-row { gap: 6px; }
.sb-desc-row input { flex: 1; min-width: 0; }

/* 橙色圆形 AI 标（即梦式） */
.ai-badge { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: #ff7a1a; color: #fff; font-size: 10px; font-weight: 800; letter-spacing: .5px; margin-right: 6px; box-shadow: 0 2px 6px rgba(255, 122, 26, .4); }
.ai-btn { display: inline-flex; align-items: center; }
.ai-btn.ghost .ai-badge { width: 20px; height: 20px; }
.ai-badge.spin { animation: spin 1s linear infinite; }
.pick-foot { border-top: 1px solid var(--line); margin-top: 8px; padding: 10px 8px 2px; }
.pick-new { font-size: 12px; padding: 3px 0; }

/* 整段组合：编排面板 */
.arr-panel { display: flex; flex-direction: column; gap: 12px; padding: 14px 16px; border-radius: 14px; background: var(--field); }
.arr-panel .field { margin: 0; }
.arr-panel .mode-switch { margin-bottom: 0; }
.arr-panel .mode-switch button { background: var(--card); }
.arr-grid { gap: 4px 16px; }
.arr-list { list-style: none; margin: 6px 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.arr-list li { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 10px; background: var(--card); font-size: 13px; }
.arr-no { flex: none; width: 22px; height: 22px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 12px; font-weight: 700; display: grid; place-items: center; }
.arr-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.arr-add select { background: var(--card) !important; }
.arr-adv summary { cursor: pointer; font-size: 13px; font-weight: 600; padding: 8px 12px; border-radius: 10px; background: var(--card); list-style: none; }
.arr-adv summary::-webkit-details-marker { display: none; }
.arr-adv summary::after { content: '▾'; float: right; color: var(--muted); }
.arr-adv[open] summary::after { content: '▴'; }
.arr-adv .field { padding: 10px 12px 2px; }
.arr-cap { padding: 10px 12px; border-radius: 10px; background: var(--card); font-size: 13px; }
.arr-cap b { color: var(--accent); }
.arr-stats b { color: var(--accent); }
.panel-actions { gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.up-cat { width: 220px; }
.btn.busy { opacity: .7; pointer-events: none; }

/* 成片页：好片 */
.out-bar { display: flex; flex-direction: column; gap: 8px; }
.out-bar .mode-switch { margin-bottom: 0; }
.star-btn.on { color: var(--warn); font-weight: 700; }
.star-note { margin-top: 4px; font-size: 12px; padding: 6px 8px !important; background: color-mix(in srgb, var(--warn) 8%, var(--field)) !important; }
.star-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; width: 100%; }
.star-card { display: flex; gap: 12px; padding: 12px; min-width: 0; border-radius: 14px; background: var(--field); border: 2px solid color-mix(in srgb, var(--warn) 40%, transparent); }
.star-card video { width: 110px; aspect-ratio: 9 / 16; border-radius: 10px; background: #000; object-fit: cover; flex: none; }
.star-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.star-head { display: flex; align-items: center; gap: 6px; font-size: 12px; flex-wrap: wrap; }
.star-head .tag { white-space: nowrap; }
.star-struct { font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.star-actions { gap: 8px; margin-top: auto; }
.local-up select, .local-up input { font-size: 12px; }
.local-up .btn { justify-content: center; }
.side-actions { gap: 6px; }
.side-search { margin: 8px 2px 6px; }
.side-search input { font-size: 12px; }
.up-bar { grid-column: 1 / -1; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.up-steps { display: grid; grid-template-columns: 1.7fr 0.7fr 1fr 1.3fr; gap: 12px; }
.up-step { display: flex; flex-direction: column; gap: 8px; padding: 10px 12px; border-radius: 12px; background: var(--field); min-width: 0; }
.up-step-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.up-step-head strong { font-size: 13px; }
.up-no { flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 11px; font-weight: 700; display: grid; place-items: center; }
.up-row { gap: 8px; flex-wrap: wrap; }
.up-row .up-field { flex: 1 1 150px; min-width: 0; }
.up-row .up-field input { background: var(--card) !important; }
.up-row .sb-names { max-height: 240px; }
.up-stat { font-size: 13px; white-space: nowrap; }
.up-stat b { color: var(--accent); }
.ok-text { color: var(--ok); }
.up-auto { font-size: 12px; color: var(--muted); white-space: nowrap; }
.up-list summary { cursor: pointer; font-size: 12px; color: var(--muted); }
.up-items { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
.up-item { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 10px; background: var(--field); font-size: 12px; }
.up-item-name { min-width: 0; max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.up-field-cat { flex: 0 1 140px !important; }
@media (max-width: 1200px) { .up-steps { grid-template-columns: 1fr 1fr; } }
@media (max-width: 760px) { .up-steps { grid-template-columns: 1fr; } }

/* ---------- 投放平台投放 ---------- */
.qc { display: flex; flex-direction: column; gap: 16px; }
.qc h2 { margin: 0 0 4px; font-size: 16px; }
.qc-code { margin-top: 4px; }
.qc-advs { display: grid; gap: 6px; margin-top: 12px; }
.qc-adv { display: grid; grid-template-columns: 170px 1fr 220px; gap: 10px; align-items: center; font-size: 13px; }
.qc-note { min-height: 30px; padding: 4px 10px; font-size: 12px; }
.qc-form { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; margin: 12px 0; }
.qc-form .field:last-child { grid-column: 1 / -1; }
.qc-manual { margin-top: 6px; }
.qc-manual input { flex: 1; min-width: 0; }
.qc-kpis { display: flex; gap: 32px; }
.qc-kpis div { display: flex; flex-direction: column; }
.qc-kpis b { font-size: 26px; font-variant-numeric: tabular-nums; }
.qc-kpis b.err { color: var(--err); }
.qc-kpis span { font-size: 12px; color: var(--muted); }
.qc-daily { display: flex; gap: 10px; align-items: flex-end; margin-top: 16px; }
.qc-day { display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: 11px; color: var(--muted); }
.qc-bar { display: flex; gap: 2px; align-items: flex-end; height: 62px; }
.qc-bar i { display: block; width: 12px; border-radius: 3px 3px 0 0; background: var(--accent); }
.qc-bar i.bad { background: var(--err); }
.qc-errs { margin: 14px 0 0; padding: 0; list-style: none; display: grid; gap: 4px; font-size: 12px; }
.qc-files { width: 100%; border-collapse: collapse; font-size: 13px; }
.qc-files th { text-align: left; font-weight: 500; color: var(--muted); font-size: 12px; padding: 6px 8px; border-bottom: 1px solid var(--line); }
.qc-files td { padding: 6px 8px; border-bottom: 1px solid var(--line); vertical-align: top; }
.qc-files td:first-child { max-width: 360px; overflow: hidden; text-overflow: ellipsis; }
.qc-files .st-done { color: var(--ok); }
.qc-files .st-failed { color: var(--err); }
.qc-files .st-running, .qc-files .st-pending { color: var(--muted); }
@media (max-width: 900px) { .qc-form { grid-template-columns: 1fr; } .qc-adv { grid-template-columns: 1fr; } }
.qc-adv-group { display: grid; gap: 4px; padding: 6px 0; border-top: 1px solid var(--line); }
.qc-adv-head { font-weight: 500; }
.qc-adv-kid { padding-left: 18px; }
.qc-adv-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qc-ws { padding-top: 8px; border-top: 1px solid var(--line); }
.sb-count.warn { background: var(--warn); color: #fff; }
.qc-gate { display: grid; gap: 10px; justify-items: start; }
.qc-gate h2 { margin: 0; }
.pick-btn.warn { box-shadow: inset 0 0 0 1.5px var(--warn); }
.ai-all { display: flex; flex-direction: column; gap: 8px; padding: 10px 12px; margin: 6px 0 10px; border-radius: 12px; background: var(--accent-soft); }
.ai-all input { background: var(--card) !important; }
.ai-all-product { width: 200px; flex: none; background: var(--card) !important; }
.shots-box { background: var(--soft, rgba(124,92,255,.06)); border-radius: 12px; padding: 10px 12px; }
.shots-table { width: 100%; border-collapse: collapse; margin-top: 6px; }
.shots-table td { padding: 4px 6px; vertical-align: middle; font-size: 13px; }
.shots-table td.grow { width: 100%; }
.shots-table select { min-width: 150px; }
.shots-table input { width: 100%; }
.preset-group { margin-top: 18px; }
.preset-group h3 { margin: 0 0 2px; font-size: 15px; }
.preset-group > .hint { margin: 0 0 10px; }
.preset-roles { font-size: 12px !important; color: var(--accent, #7c5cff) !important; flex: none !important; }
.preset-product { gap: 8px; white-space: nowrap; }
.preset-product select { min-width: 200px; }
.scope-hint { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 4px 0 8px; }
.main-panel { min-width: 0; }
.preset-product { flex-wrap: wrap; max-width: 100%; }
.preset-product select { min-width: 0 !important; width: 220px; max-width: 100%; }
.preset-grid { grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr)); }
.layout-2 { grid-template-columns: 320px minmax(0, 1fr); }
.sb-ai { margin-bottom: 10px; }
.sb-shots li { margin: 3px 0; }
.tag.purpose { display: inline-block; font-size: 11px; padding: 1px 6px; margin-right: 6px; border-radius: 6px; background: rgba(124,92,255,.15); color: var(--accent, #7c5cff); white-space: nowrap; }
.profile-box { max-width: 720px; width: 92vw; }
.profile-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 10px 0; }
.profile-fields .field { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.profile-fields textarea { width: 100%; }
.profile-actions { gap: 8px; flex-wrap: wrap; }
@media (max-width: 720px) { .profile-fields { grid-template-columns: 1fr; } }
.qc-rep-tools { gap: 8px; flex-wrap: wrap; align-items: center; }
.qc-rep-tools .seg { display: inline-flex; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.qc-rep-tools .seg button { border: 0; background: none; padding: 5px 10px; font-size: 13px; color: inherit; cursor: pointer; }
.qc-rep-tools .seg button.on { background: var(--accent, #7c5cff); color: #fff; }
.qc-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; margin: 6px 0 12px; }
.qc-kpi { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; }
.qc-kpi span { font-size: 12px; color: var(--muted); }
.qc-kpi b { font-size: 18px; font-variant-numeric: tabular-nums; }
.qc-rep-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.qc-rep-table th, .qc-rep-table td { padding: 6px 8px; border-bottom: 1px solid var(--line); text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.qc-rep-table th:first-child, .qc-rep-table td:first-child { text-align: left; white-space: normal; }
.qc-report .good { color: #2fa86b; }
.qc-report .bad { color: #e5534b; }
.table-wrap { overflow-x: auto; }

/* ===== 投放平台：计划管理 / 投流监控 / 素材管理 / 本机上传（2026-10-21 从大浪鸟项目合并，类名统一用 qx- 前缀） ===== */
.qx-good { color: #2fa86b !important; }
.qx-bad { color: #e5534b !important; }
.qx-toolbar { flex-wrap: wrap; margin: 4px 0 12px; }
.qx-toolbar select { max-width: 100%; }
.qx-batch { flex-wrap: wrap; background: var(--accent-soft); border-radius: var(--radius-sm); padding: 8px 12px; margin-bottom: 12px; }
.qx-batch input { width: 120px; min-height: 32px; padding: 4px 8px; }
.qx-plans td, .qx-videos td { vertical-align: middle; }
.qx-pname { min-width: 180px; }
.qx-pname small { display: block; color: var(--muted); font-size: 12px; }
tr.qx-selected td { background: var(--accent-soft); }
.qx-cell { width: 92px; min-height: 30px; padding: 4px 6px; text-align: right; }
.qx-cell.changed { box-shadow: inset 0 0 0 1.5px var(--warn); background: color-mix(in srgb, var(--warn) 12%, var(--field)); }
.qx-cell.invalid { box-shadow: inset 0 0 0 1.5px var(--err); background: color-mix(in srgb, var(--err) 12%, var(--field)); }
.qx-cell:disabled { background: transparent; box-shadow: none; color: var(--muted); }
.qx-fail { margin-top: 12px; padding: 10px 14px; border-radius: var(--radius-sm); background: color-mix(in srgb, var(--err) 10%, transparent); color: var(--text); font-size: 13px; }
.qx-fail b { color: var(--err); }
.qx-fail ul { margin: 6px 0 0; padding-left: 18px; }
.qx-monitor-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(380px, 100%), 1fr)); gap: 16px; }
.qx-monitor.live { box-shadow: inset 0 0 0 2px var(--accent), var(--shadow); }
.qx-small-kpis { grid-template-columns: repeat(auto-fit, minmax(84px, 1fr)); gap: 6px; margin: 4px 0 8px; }
.qx-small-kpis .qc-kpi { padding: 6px 8px; }
.qx-small-kpis .qc-kpi b { font-size: 15px; }
.qx-steps { margin: 8px 0; padding-left: 22px; font-size: 13px; }
.qx-steps li { margin: 3px 0; color: var(--muted); }
.qx-steps li.done { text-decoration: line-through; }
.qx-steps li.cur { color: var(--accent); font-weight: 600; }
.qx-steps-edit input, .qx-steps-edit select { width: 100%; min-width: 80px; min-height: 32px; padding: 4px 8px; }
.ask-box.qx-wide { max-width: 900px; }
.qx-lines { margin: 0 0 8px; padding-left: 18px; line-height: 1.6; font-size: 14px; }
.qx-lines li { overflow-wrap: anywhere; }
.btn.qx-danger { background: var(--err); color: #fff; }
.qx-tagbar { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.qx-chip { display: inline-flex; align-items: center; border: 1px solid var(--line); background: var(--card); color: var(--text); border-radius: 99px; font: inherit; font-size: 13px; padding: 3px 12px; cursor: pointer; }
span.qx-chip { padding: 0 4px 0 0; cursor: default; }
.qx-chip.on { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }
.qx-chip small { color: var(--muted); margin-left: 2px; }
.qx-chip-main { border: 0; background: none; color: inherit; font: inherit; padding: 3px 4px 3px 12px; cursor: pointer; }
.qx-chip-act { border: 0; background: none; color: var(--muted); font: inherit; padding: 3px 4px; cursor: pointer; line-height: 1; }
.qx-chip-act:hover { color: var(--accent); }
.qx-vcell { display: flex; gap: 10px; align-items: center; min-width: 260px; white-space: normal !important; text-align: left !important; }
.qx-vthumb { width: 42px; height: 74px; flex: none; border-radius: 6px; background: var(--field); overflow: hidden; display: grid; place-items: center; color: var(--muted); font-size: 12px; }
.qx-vthumb.h { width: 74px; height: 42px; }
.qx-vthumb img { width: 100%; height: 100%; object-fit: cover; }
.qx-vmeta { min-width: 0; }
.qx-vmeta small { display: block; color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
.qx-vname { font-weight: 500; overflow-wrap: anywhere; }
.qx-tcell { white-space: normal !important; text-align: left !important; min-width: 120px; }
.qx-tcell .chip-tag { display: inline-block; margin: 2px 4px 2px 0; }
.qx-browser { border: 1px solid var(--line); border-radius: var(--radius-sm); overflow: hidden; }
.qx-crumb { background: var(--field); padding: 8px 12px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; font-size: 13px; }
.qx-path { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; overflow-wrap: anywhere; flex: 1; min-width: 0; font-size: 12px; }
.qx-entries { max-height: 320px; overflow-y: auto; }
.qx-entry { display: flex; gap: 10px; align-items: center; padding: 7px 12px; border-top: 1px solid var(--line); cursor: pointer; font-size: 13px; }
.qx-entry:hover { background: var(--field); }
.qx-ename { flex: 1; min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 760px) { .qx-batch input { width: 100%; } }
.qc-adv-kid { grid-template-columns: 170px minmax(0, 1fr) minmax(320px, 1.2fr); }
@media (max-width: 900px) { .qc-adv-kid { grid-template-columns: 1fr; } }
/* 投放平台新页面的表格：文字列左对齐、数字列右对齐；工具栏控件按内容宽度排一行 */
.qx-plans th, .qx-plans td, .qx-videos th, .qx-videos td { text-align: left; }
.qx-plans th.num, .qx-plans td.num,
.qx-videos th:nth-child(n+5), .qx-videos td:nth-child(n+5) { text-align: right; }
.qx-toolbar select, .qx-toolbar .seg { width: auto; flex: none; }
.qx-toolbar input.grow { min-width: 180px; }
.qx-monitor > .row > .hint.grow { flex-basis: 100%; }
.sbfix-box { max-width: 760px; width: 94vw; }
.sbfix-top { display: flex; gap: 14px; align-items: flex-start; }
.sbfix-video { width: 150px; border-radius: 10px; background: #000; flex: none; }
.sbfix-top .chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 8px; }
.sbfix-top .fix-chip { border: 1px solid var(--line); border-radius: 999px; padding: 4px 10px; background: none; color: inherit; font-size: 12px; cursor: pointer; }
.sbfix-top .fix-chip.on { border-color: var(--accent, #7c5cff); background: rgba(124,92,255,.15); color: var(--accent, #7c5cff); }
.sbfix-top input { width: 100%; margin-bottom: 8px; }
.sbfix-result { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; margin: 10px 0; font-size: 13px; }
.sbfix-result ul { margin: 4px 0 6px 18px; }
.sbfix-part { display: flex; gap: 10px; align-items: center; margin-top: 6px; }
.sbfix-part img { width: 96px; height: 96px; object-fit: cover; border-radius: 8px; border: 1px solid var(--line); }
.sbfix-actions { gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
@media (max-width: 640px) { .sbfix-top { flex-direction: column; } .sbfix-video { width: 100%; max-width: 220px; } }
.out-pickbar { position: sticky; top: 8px; z-index: 20; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 14px; margin-bottom: 12px;
  border-radius: 12px; background: var(--card); border: 1px solid var(--accent, #7c5cff); box-shadow: 0 6px 20px rgba(0,0,0,.18); font-size: 13px; }
.out-pick { margin-right: 6px; }
.out-pick input { width: 15px; height: 15px; vertical-align: -2px; }
.qcnew-box { max-width: 760px; width: 94vw; max-height: 90vh; overflow: auto; }
.qcnew-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 8px 0; }
.qcnew-grid .field { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.qcnew-q { width: 200px; }
.qcnew-products { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; max-height: 220px; overflow: auto; margin-top: 6px; }
.qcnew-product { display: flex; align-items: center; gap: 8px; text-align: left; padding: 6px 8px; border: 1px solid var(--line); border-radius: 10px; background: none; color: inherit; cursor: pointer; font-size: 12px; }
.qcnew-product.on { border-color: var(--accent, #7c5cff); background: rgba(124,92,255,.12); }
.qcnew-product img { width: 36px; height: 36px; object-fit: cover; border-radius: 6px; flex: none; }
.qcnew-pause { margin: 6px 0 10px; font-size: 13px; }
@media (max-width: 640px) { .qcnew-grid, .qcnew-products { grid-template-columns: 1fr; } }
.qcnew-pinfo { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.qcnew-pname { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.qcnew-pinfo small { font-variant-numeric: tabular-nums; user-select: all; }
.qcnew-chosen { margin: 6px 0 0; }
.qcnew-progress { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; margin: 8px 0; font-size: 13px; }
.qcnew-progress .progress { margin: 6px 0; }
.qcnew-src { border: 1px dashed var(--line); border-radius: 10px; padding: 8px 10px; margin: 6px 0 10px; font-size: 13px; }
.qcnew-src .row { gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 6px; }
.sb-autofix { font-size: 12px; gap: 4px; color: var(--muted); }
.sb-prep { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: 12px; margin: 4px 0 10px; color: var(--muted); }
.sb-prep details { flex-basis: 100%; font-size: 12px; }
.sb-prep details p, .sb-prep details ul { margin: 4px 0; }
.sb-fixnote { display: flex; gap: 6px; align-items: center; font-size: 11px; color: var(--muted); line-height: 1.4; }
.sb-fixnote img { width: 34px; height: 34px; object-fit: cover; border-radius: 6px; flex: none; }
.sb-card { border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; margin: 8px 0; font-size: 12px; }
.sb-card .row { gap: 8px; align-items: center; flex-wrap: wrap; }
.sb-card p { margin: 4px 0; line-height: 1.6; }
.sbfix-cons { margin: 6px 0; }
.sbfix-cons ul { margin: 4px 0 0 4px; list-style: none; padding: 0; }
.sbfix-cons li { margin: 2px 0; }
.sb-sched { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); }
.sb-sched.on { color: var(--accent, #7c5cff); }
.sb-sched input[type=time] { width: 92px; padding: 3px 6px; font-size: 12px; }
.sb-sched label, .sb-autofix { white-space: nowrap; }
.sb-toolbar { flex-wrap: wrap; row-gap: 8px; }
.qcnew-seg { display: inline-flex; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; width: fit-content; }
.qcnew-seg button { border: 0; background: none; color: inherit; padding: 6px 12px; font-size: 13px; cursor: pointer; }
.qcnew-seg button.on { background: var(--accent, #7c5cff); color: #fff; }
.qcnew-opts { display: flex; flex-direction: column; gap: 4px; margin: 4px 0 6px; font-size: 13px; }
.new-version-bar { position: fixed; top: 12px; left: 50%; transform: translateX(-50%); z-index: 1000; display: flex; gap: 10px; align-items: center;
  padding: 8px 14px; border-radius: 12px; background: var(--card); border: 1px solid var(--accent, #7c5cff); box-shadow: 0 8px 24px rgba(0,0,0,.25); font-size: 13px; }
.qcnew-wide { max-width: 1100px; width: 96vw; }
.qcnew-layout { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 16px; align-items: start; }
.qcnew-main h4 { margin: 16px 0 8px; font-size: 15px; }
.qcnew-main .field { display: flex; flex-direction: column; gap: 4px; font-size: 13px; margin-bottom: 10px; }
.qcnew-modes { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.qcnew-mode { display: flex; flex-direction: column; gap: 2px; text-align: left; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: none; color: inherit; text-decoration: none; cursor: pointer; font-size: 13px; }
.qcnew-mode span { color: var(--muted); font-size: 12px; }
.qcnew-mode.on { border-color: var(--accent, #7c5cff); background: rgba(124,92,255,.10); }
.qcnew-chosen-list { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 6px; }
.qcnew-chosen-list .qcnew-product { cursor: default; }
.qcnew-addrow { gap: 10px; align-items: center; margin: 4px 0 8px; }
.qcnew-num { max-width: 220px; }
.qcnew-tip { display: block; padding: 6px 10px; border-radius: 8px; background: rgba(47,168,107,.10); }
.qcnew-mats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.qcnew-mat { display: flex; flex-direction: column; gap: 4px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; font-size: 13px; }
.qcnew-mat.qcnew-src { grid-column: 1 / -1; border-style: dashed; margin: 0; }
.qcnew-mat input[type=checkbox] { margin-left: 6px; vertical-align: -2px; }
.qcnew-submit { gap: 10px; align-items: center; margin-top: 12px; }
.qcnew-go { padding: 10px 32px; font-size: 15px; }
.qcnew-side { display: flex; flex-direction: column; gap: 12px; position: sticky; top: 0; }
.qcnew-card { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; font-size: 12px; line-height: 1.6; }
.qcnew-card p { margin: 4px 0; }
.qcnew-money { font-size: 20px; font-weight: 700; }
@media (max-width: 820px) { .qcnew-layout { grid-template-columns: 1fr; } .qcnew-chosen-list, .qcnew-mats, .qcnew-modes { grid-template-columns: 1fr; } }
.qc-plan-counts { display: flex; gap: 28px; align-items: center; flex-wrap: wrap; margin: 6px 0 12px; }
.qc-plan-counts div { display: flex; flex-direction: column; gap: 2px; font-size: 12px; color: var(--muted); }
.qc-plan-counts b { font-size: 20px; color: var(--text, inherit); }
.qc-trend-wrap { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 14px; margin-bottom: 12px; }
.qc-kpis-col { grid-template-columns: 1fr; margin: 0; }
.qc-trend { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; font-size: 12px; }
.qc-trend .row { gap: 12px; align-items: center; }
.qc-legend::before { content: ''; display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 4px; vertical-align: -1px; }
.qc-legend.cost::before { background: #2bb3c0; } .qc-legend.gmv::before { background: #7c5cff; }
.qc-trend-svg { width: 100%; height: 180px; margin-top: 6px; }
.qc-trend-svg polyline { fill: none; stroke-width: 2; vector-effect: non-scaling-stroke; }
.qc-trend-svg polyline.cost { stroke: #2bb3c0; } .qc-trend-svg polyline.gmv { stroke: #7c5cff; }
.qc-trend-svg line.grid { stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; }
.qc-trend-x { display: flex; justify-content: space-between; color: var(--muted); font-size: 11px; }
@media (max-width: 760px) { .qc-trend-wrap { grid-template-columns: 1fr; } }

/* 计划管理表格照投放平台后台：计划列带启停开关、商品图、素材数；投放设置、调控工具、操作竖排；指标列很多，横向滚动，前两列固定 */
.qx-kpis6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
@media (max-width: 1100px) { .qx-kpis6 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.qx-plans { min-width: 2400px; }
.qx-plans th { white-space: nowrap; }
.qx-plans td.num { white-space: nowrap; font-variant-numeric: tabular-nums; }
.qx-plans .qx-stick0, .qx-plans .qx-stick1 { position: sticky; z-index: 1; background: var(--card); }
.qx-plans .qx-stick0 { left: 0; width: 36px; }
.qx-plans .qx-stick1 { left: 36px; min-width: 300px; max-width: 340px; box-shadow: 1px 0 0 var(--line); }
.qx-plans tr.qx-selected .qx-stick0, .qx-plans tr.qx-selected .qx-stick1 { background: color-mix(in srgb, var(--accent) 10%, var(--card)); }
.qx-total td { font-weight: 600; background: color-mix(in srgb, var(--text) 4%, transparent); }
.qx-plan { display: flex; gap: 10px; align-items: flex-start; }
.qx-plan-main { min-width: 0; display: grid; gap: 3px; }
.qx-plan-name { color: var(--accent); font-weight: 600; text-decoration: none; }
.qx-plan-name:hover { text-decoration: underline; }
.qx-plan-main small { color: var(--muted); font-size: 12px; }
.qx-goods-id { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 280px; }
/* 多商品计划：「跑出来的商品」一栏 + 展开的各商品数据 */
.qx-hot { min-width: 170px; max-width: 220px; font-size: 12px; }
.qx-hot-item { display: flex; gap: 6px; align-items: center; margin-bottom: 4px; }
.qx-hot-item img { width: 28px; height: 28px; border-radius: 4px; object-fit: cover; flex: none; background: var(--field); }
.qx-hot-item span { display: grid; min-width: 0; }
.qx-hot-item b { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qx-hot-item small { color: var(--ok); }
.qx-hot .link { font-size: 12px; }
.qx-goods-row > td { background: color-mix(in srgb, var(--text) 3%, var(--card)); padding: 0 !important; }
.qx-goods-panel { position: sticky; left: 36px; width: min(980px, calc(100vw - 340px)); padding: 12px 14px 14px; }
.qx-goods-head { display: grid; gap: 4px; margin-bottom: 8px; }
.qx-goods-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.qx-goods-table th, .qx-goods-table td { padding: 6px 8px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.qx-goods-table .num { text-align: right; }
.qx-goods-table tr.qx-good-sold td { background: color-mix(in srgb, var(--ok) 7%, transparent); }
.qx-good-name { display: flex; gap: 8px; align-items: center; white-space: normal; max-width: 420px; }
.qx-good-name img { width: 34px; height: 34px; border-radius: 4px; object-fit: cover; flex: none; background: var(--field); }
.qx-good-name span { display: grid; min-width: 0; }
.qx-good-name small { color: var(--muted); font-size: 11px; }
@media (max-width: 760px) { .qx-goods-panel { width: calc(100vw - 60px); } }
.qx-plan-assets { display: flex; gap: 12px; align-items: center; font-size: 12px; }
.qx-goods { display: inline-flex; gap: 4px; align-items: center; color: var(--accent); cursor: default; }
.qx-goods img { width: 26px; height: 26px; border-radius: 4px; object-fit: cover; background: var(--field); }
.qx-switch { flex: none; width: 34px; height: 20px; margin-top: 2px; border-radius: 10px; border: 0; padding: 0; background: var(--line); position: relative; cursor: pointer; }
.qx-switch i { position: absolute; left: 2px; top: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; transition: left .15s; }
.qx-switch.on { background: var(--accent); }
.qx-switch.on i { left: 16px; }
.qx-dot { white-space: nowrap; font-size: 13px; }
.qx-dot::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; margin-right: 6px; vertical-align: middle; background: var(--muted); }
.qx-dot.ok::before { background: var(--ok); }
.qx-dot.warn::before { background: var(--warn); }
.qx-set { display: grid; gap: 4px; min-width: 210px; font-size: 13px; }
.qx-set label { display: flex; align-items: center; gap: 4px; white-space: nowrap; }
.qx-set label .qx-cell { width: 76px !important; min-width: 0; flex: none; min-height: 26px; padding: 2px 6px; }
.qx-tools { white-space: nowrap; font-size: 13px; }
.qx-tools > a, .qx-tools > button { display: block; margin: 2px 0; color: var(--accent); text-decoration: none; }
/* 计划详情弹窗：照投放平台后台计划详情页，顶部信息 + 转投，下面 商品 / 素材 / 日志 */
.qx-plan-name { background: none; border: 0; padding: 0; font: inherit; text-align: left; cursor: pointer; }
.qx-goods[role=button] { cursor: pointer; }
.qx-goods[role=button]:hover, .qx-plan-assets .link:hover { color: var(--accent-hover); text-decoration: underline; }
.qcpd-box { max-width: 1100px; width: 96vw; height: 88vh; display: flex; flex-direction: column; padding: 0; overflow: hidden; }
.qcpd-head { padding: 16px 20px 12px; border-bottom: 1px solid var(--line); display: grid; gap: 8px; }
.qcpd-title { display: flex; align-items: center; gap: 12px; font-size: 18px; }
.qcpd-meta { display: flex; flex-wrap: wrap; gap: 6px 22px; align-items: center; font-size: 13px; color: var(--muted); }
.qcpd-meta b { color: var(--text); }
.qcpd-tabs { display: flex; gap: 24px; padding: 0 20px; border-bottom: 1px solid var(--line); }
.qcpd-tabs button { border: 0; background: none; padding: 12px 0 10px; font: inherit; font-size: 15px; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; }
.qcpd-tabs button.on { color: var(--text); font-weight: 600; border-bottom-color: var(--accent); }
.qcpd-body { flex: 1; overflow: auto; padding: 14px 20px 20px; display: grid; gap: 12px; align-content: start; }
.qcpd-sub { justify-self: start; }
.qcpd-goods { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.qcpd-good { display: flex; gap: 10px; align-items: center; padding: 10px; border: 1px solid var(--line); border-radius: 10px; }
.qcpd-good img, .qcpd-good .qcpd-noimg { width: 52px; height: 52px; border-radius: 8px; object-fit: cover; flex: none; }
.qcpd-good > div { min-width: 0; flex: 1; display: grid; gap: 2px; }
.qcpd-good b { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qcpd-good small, .qcpd-pick-row small { color: var(--muted); font-size: 12px; }
.qcpd-noimg { display: inline-grid; place-items: center; background: var(--field); color: var(--muted); font-size: 11px; }
.qcpd-picker { border: 1px solid var(--line); border-radius: 10px; padding: 12px; display: grid; gap: 8px; max-height: 360px; overflow: auto; background: var(--bg); }
.qcpd-pick-row { display: flex; gap: 10px; align-items: center; font-size: 13px; cursor: pointer; }
.qcpd-pick-row img { width: 32px; height: 32px; border-radius: 6px; object-fit: cover; }
.qcpd-pick-row span { flex: 1; min-width: 0; }
.qcpd-lib { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; }
.qcpd-lib-item { position: relative; display: grid; gap: 4px; cursor: pointer; border-radius: 8px; padding: 4px; border: 2px solid transparent; }
.qcpd-lib-item.on { border-color: var(--accent); }
.qcpd-lib-item input { position: absolute; top: 8px; left: 8px; }
.qcpd-lib-item img, .qcpd-lib-item .qcpd-noimg { width: 100%; aspect-ratio: 9 / 16; object-fit: cover; border-radius: 6px; max-height: 180px; }
.qcpd-lib-name { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qcpd-vids td { vertical-align: middle; }
.qcpd-vid { display: flex; gap: 10px; align-items: center; }
.qcpd-vid img, .qcpd-vid .qcpd-noimg { width: 42px; height: 56px; border-radius: 6px; object-fit: cover; flex: none; }
.qcpd-vid > div { display: grid; gap: 2px; font-size: 13px; }
.qcpd-vid small { color: var(--muted); font-size: 12px; }
.qcpd-titles { margin: 0; padding-left: 22px; display: grid; gap: 6px; font-size: 13px; }
.qx-dot.off::before { background: var(--err); }
.qcpd-vids th, .qcpd-vids td, .qcpd-body .qc-rep-table th, .qcpd-body .qc-rep-table td { text-align: left; }

/* 滤镜：一排可点的胶囊 */
.filter-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.filter-chip { border: 1px solid var(--line); background: var(--field); color: var(--text); border-radius: 999px; padding: 5px 12px; font: inherit; font-size: 13px; cursor: pointer; }
.filter-chip.on { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }

/* 新建投放弹框里的「逐条挑」：按批次列成片封面，点选 */
.qcnew-pick { margin-top: 10px; display: grid; gap: 10px; max-height: 420px; overflow: auto; padding: 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--bg); }
.qcnew-pick-head { gap: 8px; align-items: baseline; }
.qcnew-pick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; margin-top: 6px; }
.qcnew-pick-item { position: relative; display: grid; gap: 3px; padding: 3px; border: 2px solid transparent; border-radius: 8px; background: none; cursor: pointer; text-align: left; color: var(--text); font: inherit; }
.qcnew-pick-item.on { border-color: var(--accent); }
.qcnew-pick-item img, .qcnew-pick-item .qcpd-noimg { width: 100%; aspect-ratio: 9 / 16; object-fit: cover; border-radius: 6px; }
.qcnew-pick-item small { font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qcnew-pick-check { position: absolute; top: 7px; right: 7px; width: 20px; height: 20px; border-radius: 50%; border: 2px solid #fff; background: rgba(0,0,0,.35);
  color: #fff; font-style: normal; font-size: 12px; display: grid; place-items: center; }
.qcnew-pick-item.on .qcnew-pick-check { background: var(--accent); border-color: var(--accent); }
/* 样式模板栏 */
.style-bar { display: grid; gap: 8px; padding: 12px 14px; margin: 10px 0; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.style-bar-head { gap: 10px; align-items: center; }
.style-group { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.style-group-name { font-size: 12px; color: var(--muted); min-width: 56px; }
.style-actions { gap: 14px; align-items: center; font-size: 13px; }
.style-form { gap: 8px; }
.style-form input { width: auto; flex: 1; min-width: 140px; }
.danger-link { color: var(--err) !important; }
.rand-badge { font-size: 11px; font-weight: 500; color: var(--accent); background: var(--accent-soft); border-radius: 999px; padding: 1px 8px; margin-left: 6px; vertical-align: middle; }

/* AI 计划诊断 */
.qcai-box { max-width: 860px; width: 94vw; max-height: 88vh; overflow: auto; display: grid; gap: 10px; }
.qcai-verdict { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 10px 12px; border-radius: 10px; background: var(--accent-soft); }
.qcai-verdict.h-差 { background: color-mix(in srgb, var(--err) 14%, var(--card)); }
.qcai-verdict.h-好 { background: color-mix(in srgb, var(--ok) 16%, var(--card)); }
.qcai-days th, .qcai-days td { text-align: right; white-space: nowrap; }
.qcai-days td:first-child, .qcai-days th:first-child { text-align: left; }
.qcai-list { margin: 0; padding-left: 20px; display: grid; gap: 4px; font-size: 13px; }
.qcai-action { display: flex; gap: 12px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; }
.qcai-action p { margin: 4px 0 2px; font-size: 13px; }
.qcai-box h4 { margin: 6px 0 0; }


/* ---------- Itone 外观：侧栏是浮在灰底上的白色圆角卡片，选中项实心蓝块；卡片扁平、标题字重 600 ---------- */
@media (min-width: 1101px) {
  .shell { grid-template-columns: 260px minmax(0, 1fr); }
  .sidebar { top: 12px; height: calc(100vh - 24px); margin: 12px 0 12px 12px; border-right: 0; border-radius: var(--radius); padding: 0 16px 16px; box-shadow: var(--shadow); }
  .sb-brand { height: 88px; font-size: 22px; font-weight: 600; letter-spacing: -.01em; }
  main { padding: 28px 32px 64px; }
}
.logo { border-radius: 10px; }
.sb-item { height: 46px; border-radius: 8px; font-weight: 500; color: var(--muted); gap: 12px; }
.sb-item:hover { color: var(--accent); background: var(--accent-soft); }
.sb-item.active { background: var(--accent); color: #fff; box-shadow: none; }
.sb-ico svg { stroke-width: 1.7; }
.sb-label { font-weight: 600; color: var(--faint); letter-spacing: .02em; }
.page-head h1 { font-size: 28px; font-weight: 600; letter-spacing: -.01em; }
.page-kicker { color: var(--faint); }
.card { box-shadow: var(--shadow); }
h2 { font-weight: 600; }
.btn { border-radius: var(--radius-sm); font-weight: 500; }
.btn.primary { box-shadow: none; }
.btn.primary:hover { box-shadow: 0 6px 14px var(--accent-glow); }
.btn.small { border-radius: 8px; }
.theme-switch { border-radius: 10px; }
.theme-switch button { border-radius: 8px; font-weight: 500; }
.seg button.on { box-shadow: none; }
.tag { border-radius: 6px; }

/* 计划表格：调控工具 / 操作两列左对齐、行距一致；AI 诊断做成浅蓝小按钮 */
.qx-stack { display: grid; gap: 6px; justify-items: start; font-size: 13px; white-space: nowrap; }
.qx-stack > a, .qx-stack .qx-op-row a { color: var(--accent); text-decoration: none; }
.qx-stack > a:hover, .qx-stack .link:hover, .qx-stack .qx-op-row a:hover { text-decoration: underline; }
.qx-op-row { display: inline-flex; gap: 6px; align-items: center; }
.qx-op-row i { font-style: normal; color: var(--faint); }
.qx-ai-btn { border: 0; border-radius: 6px; padding: 3px 10px; background: var(--accent-soft); color: var(--accent); font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; }
.qx-ai-btn:hover { background: var(--accent); color: #fff; }

/* 分镜首帧模式 */
.sb-ff { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 10px; background: var(--field); font-size: 13px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.sb-ff.on { background: var(--accent-soft); color: var(--accent); }
.sb-ff-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; pointer-events: none; }
.sb-risk { position: absolute; left: 8px; bottom: 8px; padding: 2px 8px; border-radius: 6px; font-size: 11px; font-weight: 600; background: rgba(0, 0, 0, .55); color: #fff; z-index: 2; }
.sb-skip { position: relative; z-index: 2; display: grid; gap: 6px; padding: 12px; text-align: center; justify-items: center; }
.sb-skip b { color: var(--warn); }
.sb-skip small { font-size: 11px; line-height: 1.4; }

.sb-ff-review { font-size: 13px; white-space: nowrap; }
.sb-frame-review { position: absolute; inset: 0; }
.sb-frame-review img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sb-frame-tag { position: absolute; top: 8px; left: 8px; padding: 2px 8px; border-radius: 6px; background: var(--warn); color: #202020; font-size: 11px; font-weight: 700; }

.sbscene-box { max-width: 560px; width: 94vw; display: grid; gap: 10px; }
.sbscene-box h4 { margin: 6px 0 0; }
.sbscene-item { display: flex; gap: 12px; align-items: center; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; }
.sbscene-item > div { display: grid; gap: 2px; min-width: 0; }
.sbscene-item small { color: var(--muted); font-size: 12px; }
.sbscene-item.on { border-color: var(--accent); background: var(--accent-soft); }
.sbscene-box textarea { width: 100%; }

/* 分镜：批次步骤条、首帧来源标签、审首帧按钮 */
.sb-steps { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin: 10px 0 4px; }
.sb-step { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--faint); font-weight: 500; }
.sb-step i { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--field); font-style: normal; font-size: 11px; }
.sb-step.on { color: var(--accent); font-weight: 600; }
.sb-step.on i { background: var(--accent); color: #fff; }
.sb-step.done { color: var(--ok); }
.sb-step.done i { background: color-mix(in srgb, var(--ok) 18%, transparent); }
.sb-frame-tag.src-real, .sb-frame-tag.src-real_edit { background: var(--ok); color: #fff; }
.sb-frame-tag.src-scene { background: var(--accent); color: #fff; }
.sb-frame-tag.src-raw { background: #ddd; color: #202020; }
.sb-frame-busy { position: absolute; left: 8px; right: 8px; bottom: 40px; padding: 6px 8px; border-radius: 8px; background: rgba(0,0,0,.6); color: #fff; font-size: 12px; text-align: center; }
.sb-review-actions { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px; }
.sb-review-actions .btn { padding: 4px 6px; }
.sb-risk-seg { width: 100%; margin: 6px 0; }
.sb-risk-seg button { flex: 1; font-size: 12px; }
.sb-motion, .sb-note { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sb-note { color: var(--muted); font-size: 12px; }

/* AI 诊断：卡点排查、优先级、动作计划 */
.qcai-path { display: flex; flex-direction: column; gap: 4px; margin-bottom: 8px; }
.qcai-step { display: flex; gap: 10px; padding: 6px 10px; border-radius: 8px; background: color-mix(in srgb, var(--text) 5%, transparent); font-size: 13px; }
.qcai-step b { min-width: 96px; white-space: nowrap; }
.qcai-step.ok b { color: var(--ok); } .qcai-step.bad { background: color-mix(in srgb, var(--err) 10%, transparent); } .qcai-step.bad b { color: var(--err); } .qcai-step.na b { color: var(--faint); }
.tag.pri-P0 { background: #d14343; color: #fff; } .tag.pri-P1 { background: #f0a020; color: #fff; } .tag.pri-P2 { background: color-mix(in srgb, var(--text) 10%, transparent); color: var(--muted); }
.qcai-plan { display: grid; grid-template-columns: auto 1fr; gap: 2px 10px; margin: 6px 0; font-size: 12.5px; }
.qcai-plan dt { color: var(--muted); white-space: nowrap; } .qcai-plan dd { margin: 0; }

/* 规则托管 */
.qcr .qcr-mode { gap: 12px; margin: 6px 0 10px; flex-wrap: wrap; }
.qcr-auth { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; padding: 10px 12px; border-radius: 10px; margin-bottom: 10px; font-size: 13px;
  color: var(--text); background: color-mix(in srgb, var(--warn) 12%, transparent); border: 1px solid color-mix(in srgb, var(--warn) 35%, transparent); }
.qcr-auth label { display: inline-flex; align-items: center; gap: 6px; margin: 0; white-space: nowrap; }
.qcr-auth input[type=checkbox], .qcr-groups input[type=checkbox] { width: auto !important; margin: 0; }
.qcr-auth input[type=number] { width: 90px !important; } .qcr-auth input[type=date] { width: 150px !important; }
.qcr-params { margin: 8px 0; } .qcr-params summary { cursor: pointer; font-weight: 600; padding: 4px 0; }
.qcr-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; margin: 8px 0; }
.qcr-groups fieldset { border: 1px solid var(--line, #e5e7ef); border-radius: 10px; padding: 8px 12px; margin: 0; }
.qcr-groups legend { font-weight: 600; font-size: 13px; padding: 0 4px; }
.qcr-groups label { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 12.5px; margin: 4px 0; }
.qcr-groups label.chk { justify-content: flex-start; }
.qcr-groups input[type=number] { width: 86px !important; flex: none; }
.qcr-pending { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px 10px; margin: 6px 0; border-radius: 8px; background: color-mix(in srgb, var(--warn) 12%, transparent); font-size: 13px; }
.qcr-table td { vertical-align: top; font-size: 12.5px; }
.tag.st-done { background: color-mix(in srgb, var(--ok) 15%, transparent); color: var(--ok); }
.tag.st-failed, .tag.st-alert { background: color-mix(in srgb, var(--err) 14%, transparent); color: var(--err); }
.tag.st-unknown, .tag.st-pending { background: color-mix(in srgb, var(--warn) 16%, transparent); color: var(--warn); }
.tag.st-advice { background: var(--accent-soft); color: var(--accent); }
.tag.st-expired, .tag.st-skipped { background: color-mix(in srgb, var(--text) 8%, transparent); color: var(--faint); }
.qcr-groups fieldset.wide { grid-column: 1 / -1; }
.qcr-ex { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.qcr-ex > .hint { flex-basis: 100%; }
.qcr-groups input.qcr-str { width: 170px !important; flex: none; }
.qcr-groups select { width: auto !important; flex: none; }
.qcr-warn { padding: 8px 10px; margin: 6px 0; border-radius: 8px; font-size: 13px; color: var(--err); background: color-mix(in srgb, var(--err) 10%, transparent); }

/* 规则托管：重新排版 */
.qcr-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 4px 0 6px; }
.qcr-bar .grow { flex: 1; }
.qcr-every { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); margin: 0; }
.qcr-every input { width: 64px !important; text-align: center; }
.qcr-sub { margin: 0 0 12px; }
.qcr-auth-sep { width: 1px; height: 18px; background: color-mix(in srgb, var(--warn) 40%, transparent); }
.qcr-params { margin: 4px 0 12px; border-top: 1px solid var(--line); padding-top: 8px; }
.qcr-params > summary { font-size: 14px; padding: 6px 0; }
.qcr-params > summary .hint { font-weight: 400; margin-left: 6px; }
.qcr-sec { margin-top: 12px; }
.qcr-sec h4 { margin: 0 0 8px; font-size: 12px; font-weight: 600; color: var(--muted); letter-spacing: .04em; }
.qcr-cards { columns: 4 250px; column-gap: 12px; }
.qcr-card { break-inside: avoid; margin: 0 0 12px; border: 1px solid var(--line); border-radius: 12px; background: color-mix(in srgb, var(--text) 2%, transparent); }
.qcr-card.wide { column-span: all; }
.qcr-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--line); font-size: 13px; }
.qcr-card-body { padding: 8px 12px 10px; display: flex; flex-direction: column; gap: 6px; }
.qcr-card.off .qcr-card-body { opacity: .4; pointer-events: none; }
.qcr-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0; font-size: 12.5px; color: var(--text); }
.qcr-row > span:first-child { flex: 1; min-width: 0; color: var(--muted); line-height: 1.35; }
.qcr-num { display: inline-flex; align-items: center; gap: 4px; flex: none; }
.qcr-num input { width: 72px !important; padding: 5px 8px !important; text-align: right; }
.qcr-num em { font-style: normal; font-size: 12px; color: var(--faint); width: 24px; }
.qcr-row select { width: auto !important; padding: 5px 8px !important; }
.qcr-row input.qcr-str { width: 150px !important; padding: 5px 8px !important; flex: none; }
.qcr-check { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 12.5px; color: var(--muted); }
.qcr-check input { width: auto !important; margin: 0; }
.qcr-switch { position: relative; display: inline-block; width: 32px; height: 18px; margin: 0; flex: none; cursor: pointer; }
.qcr-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.qcr-switch i { position: absolute; inset: 0; border-radius: 99px; background: var(--line); transition: background .15s; }
.qcr-switch i::after { content: ""; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; transition: transform .15s; }
.qcr-switch input:checked + i { background: var(--accent); }
.qcr-switch input:checked + i::after { transform: translateX(14px); }
.qcr-ex { display: flex; flex-wrap: wrap; gap: 6px; }
.qcr-chip { display: inline-flex; align-items: center; gap: 6px; margin: 0; padding: 4px 10px; border-radius: 99px; border: 1px solid var(--line); font-size: 12.5px; cursor: pointer; }
.qcr-chip input { display: none; }
.qcr-chip small { color: var(--faint); }
.qcr-chip.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.qcr-ex > .hint { flex-basis: 100%; margin-top: 2px; }

/* 自动字幕：识别引擎 */
.asr-engine { display: flex; flex-direction: column; gap: 6px; margin: 4px 0 6px; }
.asr-engine .seg { align-self: flex-start; }
.asr-engine .seg button { white-space: nowrap; }
.asr-engine select { width: 100%; }

/* 资产包 */
.kit-page { display: flex; flex-direction: column; gap: 14px; }
.kit-tabs { align-items: center; display: flex; gap: 4px; flex-wrap: wrap; }
.kit-model { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
.kit-model select { width: auto !important; }
.kit-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }
.kit-bar label { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; }
.kit-bar select { min-width: 220px; }
.kit-checks { display: flex; flex-wrap: wrap; gap: 6px; }
.kit-check { font-size: 12.5px; padding: 4px 10px; border-radius: 99px; background: color-mix(in srgb, var(--text) 6%, transparent); color: var(--muted); }
.kit-check.ok { background: color-mix(in srgb, var(--ok) 15%, transparent); color: var(--ok); }
.kit-page h3 { margin: 0 0 10px; font-size: 15px; }
.kit-page h3 small { font-weight: 400; margin-left: 6px; }
.kit-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
.kit-slot { border: 1px solid var(--line); border-radius: 12px; padding: 10px; min-width: 0; }
.kit-name { outline: none; border-radius: 4px; padding: 0 2px; cursor: text; }
.kit-name:hover { box-shadow: inset 0 -1px 0 currentColor; }
.kit-name:focus { background: var(--card, #fff); color: var(--text); box-shadow: 0 0 0 1px var(--accent, #3b6cff); }
.kit-slot-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: 13px; }
.kit-slot-head label { margin-left: auto; cursor: pointer; }
.kit-imgs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }  /* minmax(0,…)：长标签不撑宽列、不挤到隔壁分类 */
.kit-img { min-width: 0; }
.kit-imgs > .hint { grid-column: 1 / -1; margin: 0; font-size: 12px; }
.kit-rules { margin: 0 0 10px; padding-left: 18px; font-size: 12.5px; color: var(--muted); line-height: 1.7; }
.kit-slot-need { border-color: color-mix(in srgb, var(--warn, #e8590c) 60%, var(--line)); }
.kit-img-bar small { flex: 1; }
.kit-img img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 8px; display: block; background: #fff; }
.kit-img-bar { display: flex; gap: 4px; align-items: center; margin-top: 4px; }
.kit-img-bar select { flex: 1; min-width: 0; padding: 3px 4px !important; font-size: 12px; }
.kit-know-head { align-items: center; gap: 10px; flex-wrap: wrap; }
.kit-know-head h3 { margin: 0; }
/* 产品知识档案：每格一样大——标题一行、说明一行（放不下省略，鼠标停上去看全文）、输入框同高，要更长自己往下拉 */
.kit-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px 16px; align-items: start; }
@media (max-width: 1100px) { .kit-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) { .kit-fields { grid-template-columns: 1fr; } }
.kit-fields .kit-field { margin: 0; gap: 4px; min-width: 0; }
.kit-field-title { font-weight: 500; font-size: 13px; line-height: 20px; }
.kit-field-hint { display: block; height: 18px; line-height: 18px; font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kit-fields textarea { width: 100%; height: 168px; min-height: 120px; font-size: 13px; line-height: 1.55; resize: vertical; box-sizing: border-box; }
.kit-card { margin-top: 10px; font-size: 13px; }
.kit-card summary { cursor: pointer; color: var(--muted); }
.kit-form { display: flex; flex-direction: column; gap: 8px; }
.kit-form-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.kit-form-row input { flex: 1 1 160px; }
.kit-form-row input.short, .kit-voice input.short { flex: 0 0 80px; width: 80px; }
.kit-form label.btn, .kit-person label.btn { cursor: pointer; }
.kit-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.kit-grid > .hint { grid-column: 1 / -1; }
.kit-person, .kit-scene { display: flex; flex-direction: column; gap: 8px; }
.kit-person-imgs { display: flex; gap: 8px; }
.kit-src img { width: 72px; height: 100px; object-fit: cover; border-radius: 8px; display: block; }
.kit-sheet { flex: 1; }
.kit-sheet img { width: 100%; aspect-ratio: 16 / 9; object-fit: contain; border-radius: 8px; background: #fff; display: block; }
.kit-sheet.empty, .kit-scene-empty { display: flex; align-items: center; justify-content: center; aspect-ratio: 16 / 9; border-radius: 8px; border: 1px dashed var(--line); color: var(--muted); font-size: 12.5px; padding: 8px; text-align: center; }
.kit-scene img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 8px; display: block; }
.kit-voice { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 0; border-bottom: 1px dashed var(--line); }
.kit-voice input { flex: 0 1 160px; }
.kit-voice audio { height: 32px; }
.kit-bar label { white-space: nowrap; }

/* 分镜生产：资产包参考 / 推荐依据 / 资产包提醒 */
.sb-kit-sel, .sb-basis { width: auto !important; max-width: 220px; padding: 5px 8px !important; font-size: 13px; }
.sb-kit-warn { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 8px 12px; margin: 8px 0; border-radius: 10px; font-size: 13px;
  background: color-mix(in srgb, var(--warn) 12%, transparent); border: 1px solid color-mix(in srgb, var(--warn) 35%, transparent); }

/* 素材打标：来源标签 */
.asset-labels { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 8px; }
.asset-labels select { width: auto !important; padding: 4px 8px !important; font-size: 12.5px; }
.asset-lbls { display: flex; flex-wrap: wrap; gap: 4px; margin: 2px 0 4px; }
.asset-lbl { font-size: 11px; padding: 1px 7px; border-radius: 99px; background: var(--accent-soft); color: var(--accent); cursor: pointer; }
.asset-lbl.on { background: var(--accent); color: #fff; }
.kit-back { margin-right: 8px; }

.kit-steel { display: flex; gap: 12px; align-items: flex-start; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.kit-steel img { width: 120px; height: 80px; object-fit: cover; border-radius: 6px; display: block; }
.kit-specs { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; margin-top: 8px; }
@media (max-width: 1100px) { .kit-specs { grid-template-columns: 1fr 1fr; } }
.kit-specs textarea { width: 100%; }
@media (max-width: 760px) { .kit-specs { grid-template-columns: 1fr; } }
.kit-steel .hint { margin: 4px 0 0; }

.sb-row-opts { display: flex; gap: 8px; align-items: center; margin-top: 4px; flex-wrap: wrap; }
.sb-row-opts .inline { font-size: 12px; white-space: nowrap; }
.sb-line { flex: 1; min-width: 140px; font-size: 12px; padding: 3px 6px; }

.sb-exp-warn { margin: 6px 0 0; padding: 6px 10px; border-radius: 6px; font-size: 12px; background: rgba(245, 158, 11, .12); color: #b45309; }
:root[data-theme="dark"] .sb-exp-warn { color: #fbbf24; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .sb-exp-warn { color: #fbbf24; } }
.chip-tag.exp { background: rgba(245, 158, 11, .15); color: #b45309; }

.asset-perf { font-size: 11px; margin: 2px 0; padding: 1px 6px; border-radius: 4px; display: inline-block; background: var(--line); color: var(--muted); }
.asset-perf.good { background: rgba(34, 197, 94, .15); color: #16a34a; }
.asset-perf.bad { background: rgba(239, 68, 68, .12); color: #dc2626; }

.kit-img-head { gap: 8px; align-items: center; flex-wrap: wrap; }
.kit-img-head h3 { margin: 0; }
.kit-scene-sugg { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-bottom: 8px; }
.kit-scene-sugg .chip-tag { cursor: pointer; border: none; }

.asset-vm { display: flex; flex-wrap: wrap; gap: 3px; margin: 2px 0; }
.asset-vm .vm { font-size: 11px; padding: 0 5px; border-radius: 3px; background: var(--line); color: var(--muted); }
.asset-vm .vm.role { background: rgba(59, 130, 246, .14); color: #2563eb; }
.asset-vm .vm.bad { background: rgba(239, 68, 68, .14); color: #dc2626; }
.asset-vm .vm.good { background: rgba(34, 197, 94, .15); color: #16a34a; }
.roles-box { max-width: 560px; }
.roles-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.roles-table th, .roles-table td { padding: 6px 8px; border-bottom: 1px solid var(--line); text-align: left; }
.beats-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.beats-table th, .beats-table td { padding: 6px; border-bottom: 1px solid var(--line); vertical-align: top; text-align: left; }
.beats-table textarea { width: 100%; min-width: 160px; font-size: 13px; }
.beats-table tr.beat-face td:first-child { box-shadow: inset 3px 0 0 #f59e0b; }

.home-page { display: flex; flex-direction: column; gap: 12px; }
.home-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.home-stats .card { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; }
.home-stats b { font-size: 22px; font-variant-numeric: tabular-nums; }
.home-stats span { font-size: 12px; color: var(--muted); }
.home-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); gap: 12px; }
.home-grid .card { min-width: 0; }
.home-sug { display: flex; gap: 8px; align-items: flex-start; width: 100%; text-align: left; padding: 8px 10px; margin: 4px 0; border: 1px solid var(--line);
  border-radius: 6px; background: transparent; color: inherit; cursor: pointer; font: inherit; line-height: 1.5; }
.home-sug:hover { border-color: var(--accent, #6366f1); }
.home-sug i { font-style: normal; font-size: 11px; padding: 1px 6px; border-radius: 3px; white-space: nowrap; background: var(--line); }
.home-sug.high i { background: rgba(239, 68, 68, .15); color: #dc2626; }
.home-sug.mid i { background: rgba(245, 158, 11, .15); color: #b45309; }
.home-top { margin: 4px 0; padding-left: 1.4em; font-size: 13px; }
.home-report { white-space: pre-wrap; font-size: 12px; background: var(--line); padding: 8px; border-radius: 6px; max-height: 220px; overflow: auto; }
@media (max-width: 480px) { .home-grid { grid-template-columns: 1fr; } }
@media (max-width: 760px) {
  .asset-layout { grid-template-columns: minmax(0, 1fr); }
  .asset-layout > *, .asset-layout .panel-head > *, .asset-layout .ai-bar-top > * { min-width: 0; max-width: 100%; }
  .asset-layout .ai-bar-top .row { flex-wrap: wrap; }
  .asset-layout .asset-meta { flex-wrap: wrap; }
  .asset-layout .asset-labels select, .asset-layout .batch-bar input { max-width: 100%; }
  .asset-layout .panel-head, .asset-layout .crumbs { overflow-wrap: anywhere; }
  .asset-preview-mask { padding: 12px; }
  .asset-preview-dialog { max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); }
  .asset-preview-head { padding: 12px; gap: 10px; }
  .asset-preview-body { padding: 0 12px 12px; }
}

.qx-editor-err { margin-top: 10px; padding: 8px 12px; border-radius: 8px; background: color-mix(in srgb, var(--err) 12%, transparent); font-size: 14px; font-weight: 600; }
.ai-btn .ai-badge { display: inline-block; margin-right: 4px; font-weight: 700; }
.ai-badge.spin { animation: ai-spin 1s linear infinite; }
@keyframes ai-spin { to { transform: rotate(360deg); } }

.qcmt-sort{background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.qcmt-sort:hover,.qcmt-sort:focus-visible{color:var(--accent,#3b82f6);text-decoration:underline;outline:none}
.qcmt-sort:focus-visible{outline:2px solid var(--accent,#3b82f6);outline-offset:2px;border-radius:3px}
.qcmt-sort-ind{font-size:.85em;opacity:.75}
.qcmt-only-stats{display:inline-flex;align-items:center;gap:4px;font-size:.9em;white-space:nowrap;cursor:pointer}
.qcmt-only-stats input[disabled]{cursor:not-allowed}
.qc-materials, .qc-materials > .card { min-width: 0; max-width: 100%; }
.qc-materials .table-wrap { width: 100%; min-width: 0; }
.qcmt-clone-error { margin: 0 0 12px; padding: 10px 12px; border-radius: 8px; color: var(--err); background: color-mix(in srgb, var(--err) 10%, transparent); font-size: 13px; overflow-wrap: anywhere; }

/* 爆款母版：整页 iframe（高度随窗口，外层不滚动、无双滚动条） */
main.clone-main { padding: 0; max-width: none; height: 100vh; overflow: hidden; }
/* 画布：铺满主区域（手机端照常排在顶栏下面） */
@media (min-width: 761px) { main.canvas-main { padding: 0; max-width: none; height: 100vh; overflow: hidden; } main.canvas-main > .page-head { display: none; } main.canvas-main > .cv-wrap { height: 100%; } }
.clone-page { height: 100%; display: flex; flex-direction: column; }
.clone-frame { display: block; width: 100%; flex: 1; min-height: 0; height: auto; border: 0; background: var(--bg); }

/* ===== 智能封面：设置区 / 卡片角标 / 换封面弹窗 ===== */
.video { position: relative; }
.video-cover-tags { position: absolute; top: 8px; left: 8px; z-index: 3; display: flex; gap: 4px; }
.cover-badge { display: inline-flex; align-items: center; height: 20px; padding: 0 7px; border-radius: 6px; font-size: 11px; font-weight: 700; line-height: 20px; color: #fff; letter-spacing: .02em; box-shadow: 0 2px 8px rgba(0, 0, 0, .28); }
.cover-badge.ai { background: linear-gradient(135deg, #7c5cff, #2842c8); }
.cover-badge.own { background: rgba(0, 0, 0, .62); }

.cover-set { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; padding: 12px; border-radius: 12px; background: var(--field); }
.cover-set .row { align-items: flex-start; flex-wrap: wrap; }
.cover-set label:not(.inline) { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); min-width: 0; }
.cover-set .cover-text-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
.cover-set .cover-text-row label { width: 100%; }
.cover-style-thumbs, .cover-dlg-styles { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 8px; }
.cover-style-thumb { display: flex; flex-direction: column; gap: 3px; min-width: 0; padding: 4px; border: 2px solid transparent; border-radius: 10px; background: var(--card); color: var(--muted); cursor: pointer; }
.cover-style-thumb:hover { border-color: var(--accent-soft); }
.cover-style-thumb.on { border-color: var(--accent); color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
.cover-style-thumb img { display: block; width: 100%; aspect-ratio: 9 / 16; object-fit: cover; border-radius: 6px; background: var(--field); }
.cover-style-thumb em { width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-size: 11px; line-height: 1.25; text-align: center; }
.cover-rotate-ico { display: grid; place-items: center; width: 100%; aspect-ratio: 9 / 16; border: 1px dashed var(--line); border-radius: 6px; background: var(--field); color: var(--accent); font-size: 24px; font-weight: 700; }

.cover-mask { position: fixed; inset: 0; z-index: 70; display: grid; place-items: center; padding: 16px; background: rgba(0, 0, 0, .5); }
.cover-box { width: 100%; max-width: 900px; max-height: calc(100vh - 32px); overflow: auto; padding: 18px; border: 1px solid var(--line); border-radius: 18px; background: var(--card); box-shadow: 0 18px 48px rgba(0, 0, 0, .3); }
.cover-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.cover-head h3 { margin: 0; flex: none; }
.cover-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 18px; align-items: start; }
.cover-preview { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cover-preview img, .cover-preview-empty { display: block; max-width: 100%; max-height: 62vh; object-fit: contain; border-radius: 12px; background: var(--field); }
.cover-preview img { width: auto; height: auto; margin: 0 auto; }
.cover-preview-empty { display: grid; place-items: center; width: 100%; aspect-ratio: 9 / 16; padding: 16px; color: var(--muted); font-size: 13px; line-height: 1.7; text-align: center; border: 1px dashed var(--line); }
.cover-controls { min-width: 0; }
.cover-controls .field { margin-bottom: 10px; }
.cover-controls .field > label { display: flex; flex-direction: column; gap: 4px; }
.cover-controls .field > label .hint { font-weight: 400; }
.cover-title-fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
.cover-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.cover-actions .btn { white-space: normal; }
.cover-actions .btn.ai { background: var(--accent-soft); color: var(--accent); }
.cover-actions .btn.ai:hover { background: var(--accent); color: #fff; }
.cover-actions .btn.busy { opacity: .65; pointer-events: none; }
.cover-mask .error { margin: 4px 0 8px; padding: 8px 10px; border-radius: 8px; background: color-mix(in srgb, var(--err) 12%, transparent); overflow-wrap: anywhere; }

@media (max-width: 760px) {
  .cover-mask { padding: 8px; }
  .cover-box { max-height: calc(100vh - 16px); max-height: calc(100dvh - 16px); padding: 14px; border-radius: 14px; }
  .cover-head { flex-wrap: wrap; }
  .cover-head .hint { flex-basis: 100%; order: 3; }
  .cover-body { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .cover-preview { max-width: 260px; margin: 0 auto; }
  .cover-preview img, .cover-preview-empty { max-height: 42vh; }
  .cover-title-fields, .cover-set .cover-text-row { grid-template-columns: minmax(0, 1fr); }
  .cover-style-thumbs, .cover-dlg-styles { grid-template-columns: repeat(auto-fill, minmax(56px, 1fr)); gap: 6px; }
}
@media (max-width: 400px) {
  .cover-actions .btn, .cover-actions label.btn { flex: 1 1 100%; text-align: center; justify-content: center; }
}

/* 390 宽：顶部横条里放不下的导航在自己的滚动区里滚，不把整页撑宽 */
@media (max-width: 760px) {
  .sidebar { max-width: 100vw; overflow: hidden; }
  .sb-scroll { min-width: 0; max-width: 100%; }
}

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

/* 封面设置区的输入框在灰底上要看得出来 */
.cover-set input:not([type=checkbox]):not([type=range]), .cover-set select { background: var(--card); }

.cover-head .icon { margin-left: auto; }
.cover-controls .field > label { align-items: stretch; }

.cover-set input:not([type=checkbox]):not([type=range]), .cover-set select { box-shadow: inset 0 0 0 1px var(--line); }

@media (max-width: 760px) {
  .job .panel-head { flex-wrap: wrap; }
  .job .panel-head > .row { flex-wrap: wrap; width: 100%; }
}

/* 分镜生产「AI 规划分镜」：先看三样资料齐没齐，再选推荐方式让 AI 规划 */
.sb-plan { display: flex; flex-direction: column; gap: 12px; padding: 16px 18px; border-radius: var(--radius-sm); background: var(--accent-soft); }
.sb-plan-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.sb-plan-head strong { font-size: 14px; }
.sb-plan-head .muted { font-size: 12px; }
.sb-need-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 8px; align-items: stretch; }
.sb-need { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 12px; border-radius: var(--radius-sm); background: var(--card); font-size: 13px; border: 1px solid var(--line); }
.sb-need i { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; font-style: normal; font-size: 11px; font-weight: 700; background: var(--field); color: var(--muted); }
.sb-need.ok i { background: var(--ok); color: #fff; }
.sb-need span { font-weight: 600; }
.sb-need b { font-weight: 500; color: var(--text); max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sb-need em { order: 3; flex-basis: 100%; padding-left: 28px; font-style: normal; font-size: 12px; color: var(--err); }
.sb-need .btn { order: 2; }
.sb-need span { margin-right: auto; }
.sb-plan-go { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.sb-basis-wrap { display: flex; align-items: center; gap: 8px; font-size: 12px; flex: 1 1 320px; }
.sb-basis-wrap .sb-basis { flex: 1; min-width: 0; max-width: none; background: var(--card) !important; }
.sb-plan-btn { white-space: nowrap; }
.sb-plan-warn { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 12px; padding: 8px 12px; border-radius: var(--radius-sm); background: color-mix(in srgb, var(--warn) 16%, var(--card)); }

/* 生产类板块：这台机器的三库资料齐全度（web/ext/machine.js） */
.machine-ready { border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; margin: 8px 0; background: var(--card); }
.machine-ready.bad { border-color: var(--err); }
.machine-ready-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.machine-ready-head .grow { flex: 1; }
.machine-ready-checks { display: flex; flex-wrap: wrap; gap: 4px 6px; margin-top: 6px; }
.machine-ready .hint.error { color: var(--err); margin: 6px 0 0; }

/* ===== 手机端（≤ 760px）：页头换行、通用横排可折行、几处固定宽度改成随屏宽 ===== */
@media (max-width: 760px) {
  /* 页头：标题占一整行，「当前产品」挪到下一行铺满（原来 300px 固定宽把标题挤成一字一行） */
  .page-head { flex-wrap: wrap; align-items: flex-start; gap: 10px; margin-bottom: 16px; }
  .page-head > :first-child { flex: 1 1 100%; min-width: 0; }
  .page-head h1 { font-size: 24px; }
  .cur-product { width: 100%; }
  /* 通用横排（按钮组、筛选条）放不下就换行，不把整页撑宽 */
  main .row { flex-wrap: wrap; }
  main .row > * { min-width: 0; max-width: 100%; }
  main img, main video { max-width: 100%; }
  /* 和说明文字、按钮排在一行的小标题不被挤成一字一行：标题按自身宽度，其余换到下一行 */
  main h2, main h3 { flex-shrink: 0; flex-basis: auto; max-width: 100%; }
  main h2.grow, main h3.grow { flex: 1 0 auto; }
  main .rl-head { flex-wrap: wrap; }
  /* 分镜生产「推荐方式」下拉：原来最少 320px */
  .sb-basis-wrap { flex: 1 1 100%; min-width: 0; }
  /* 分镜组合骨架：分类 + 条数一行，秒数和操作折到下一行 */
  main .ext-shotmix-roles { grid-template-columns: minmax(0, 1fr) 72px; }
  main .ext-shotmix-roles-head > :nth-child(n+3) { display: none; }
  main .ext-shotmix-roles > :nth-child(3) { justify-self: start; }
  main .ext-shotmix-roles > :nth-child(4) { justify-self: end; }
}

/* 分镜生产：参考图按资产包分类分组；每条分镜卡片上显示这条喂了哪几张 */
.sb-ref-groups { display: flex; flex-wrap: wrap; gap: 10px 18px; align-items: flex-start; }
.sb-ref-groups > .hint { flex-basis: 100%; margin: 0; }
.sb-ref-group { display: flex; flex-direction: column; gap: 4px; }
.sb-ref-group-name { font-size: 12px; font-weight: 600; color: var(--muted); }
.sb-shot-refs { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; margin-top: 6px; font-size: 11px; }
.sb-shot-refs img { width: 26px; height: 34px; object-fit: cover; border-radius: 4px; background: var(--field); }

/* 分镜生产 · AI 分镜对话（web/ext/sbchat.js） */
.sbc { display: flex; flex-direction: column; gap: 8px; padding: 12px; border-radius: var(--radius-sm); background: var(--card); border: 1px solid var(--line); }
.sbc-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; }
.sbc-head .muted { font-size: 12px; }
.sbc-head .grow { flex: 1; }
.sbc-tier { font-size: 12px; color: var(--muted); display: inline-flex; align-items: center; gap: 4px; }
.sbc-tier select { padding: 2px 6px; height: 28px; }
.sbc-list { display: flex; flex-direction: column; gap: 8px; max-height: 640px; overflow-y: auto; padding: 4px 2px; resize: vertical; }
.sbc-list > .hint { margin: 0; }
.sbc-msg { display: flex; }
.sbc-msg.user { justify-content: flex-end; }
.sbc-bubble { max-width: 86%; padding: 8px 12px; border-radius: 12px; background: var(--field); font-size: 13px; line-height: 1.6; }
.sbc-msg.user .sbc-bubble { background: var(--accent-soft); }
.sbc-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.sbc-applied { margin-top: 6px; font-size: 12px; color: var(--ok); }
.sbc-scripts { margin-top: 8px; border-top: 1px dashed var(--line); padding-top: 6px; }
.sbc-scripts-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.sbc-scripts-head .link { margin-left: auto; }
.sbc-scripts details { margin: 4px 0; }
.sbc-scripts summary { cursor: pointer; font-weight: 600; }
.sbc-script { white-space: pre-wrap; overflow-wrap: anywhere; padding: 6px 8px; margin-top: 4px; border-radius: 8px; background: var(--card, #fff); }
.sbc-files { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 4px; }
.sbc-file { position: relative; width: 54px; height: 72px; border-radius: 6px; overflow: hidden; background: var(--field); }
.sbc-file img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sbc-file em { position: absolute; left: 0; right: 0; bottom: 0; font-style: normal; font-size: 10px; text-align: center; color: #fff; background: rgba(0, 0, 0, .55); }
.sbc-file button { position: absolute; top: 2px; right: 2px; width: 18px; height: 18px; border: 0; border-radius: 50%; background: rgba(0, 0, 0, .55); color: #fff; cursor: pointer; font-size: 12px; line-height: 1; }
.sbc-pending { align-items: center; }
.sbc-input { display: flex; gap: 8px; align-items: flex-end; }
.sbc-input textarea { flex: 1; min-width: 0; resize: vertical; }
.sbc-attach { white-space: nowrap; }
.sbc-quick { display: flex; flex-wrap: wrap; gap: 6px; }
.sbc-quick .chip-tag { cursor: pointer; border: 0; }
@media (max-width: 760px) { .sbc-input { flex-wrap: wrap; } .sbc-input textarea { flex-basis: 100%; } .sbc-bubble { max-width: 100%; } }

/* 分镜生产排版：参考图 → 真机外观卡 → AI 分镜对话 → 生成设置 → 要生成的分镜 → 生成，每块一个小标题、块与块之间留白 */
.sb-studio .sb-main { gap: 12px; }
.sb-sec-title { margin-top: 6px; font-size: 13px; font-weight: 600; }
.sb-sec-title .muted { font-weight: 400; font-size: 12px; }
.sb-studio .sb-card { margin: 0; }
.sb-studio .sb-kit-warn { margin: 0; }
.sb-studio .sb-lines-label { margin-top: 6px; }
/* 生成设置一整框放在分镜列表下面：设置和「生成」按钮同一行（定时后面），缺图提醒和模型说明在框里 */
.sb-gen-box { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--card); }
.sb-gen-box .sb-sec-title { margin-top: 0; }
.sb-gen-box .sb-toolbar { background: var(--field); }
.sb-gen-box .sb-model-desc { margin: 0; }
.sb-gen-box .sb-kit-sel { width: auto; max-width: 150px; }
.sb-gen-box .sb-toolbar .big-ish { padding-left: 16px; padding-right: 16px; }
.sb-gen-box > .sb-est { font-size: 12px; margin-top: -2px; }

/* 投流监控 · AI 托管（app/adplatform/aipilot.py） */
.qcr-ai { background: var(--accent-soft); }
.qcr-ai-main { font-size: 14px; }
.qcr-ai input[type=number] { width: 52px; }
.qcr-ai-sum { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin: 8px 0; padding: 8px 12px; border-radius: 10px; background: var(--field); font-size: 13px; }
.qcr-ai-cell { min-width: 220px; font-size: 12px; line-height: 1.5; }
.qcr-ai-cell > div + div { margin-top: 2px; }
.qcr-rv-bar { margin: 6px 0; }
.qcr-rv { margin: 6px 0; padding: 6px 10px; border: 1px solid var(--line); border-radius: 10px; }
.qcr-rv-text { white-space: pre-wrap; font-size: 13px; line-height: 1.7; margin-top: 6px; }

/* 分镜生产 · 严谨模式 */
.sb-ff.sb-strict { cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.sb-ff.sb-strict:not(.on) { background: transparent; border: 1px dashed var(--line, #ccc); color: inherit; }
.sb-ff.sb-strict input { margin: 0; }
.sb-strict-hint { margin: 6px 0 0; }
.sb-ref-part { position: absolute; left: 2px; right: 2px; bottom: 2px; padding: 0 3px; border-radius: 3px; background: rgba(0, 0, 0, .6); color: #fff; font-size: 10px; line-height: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; }
.sb-ref-part.render { background: rgba(160, 90, 0, .75); }
.sb-frame-tag.src-strict { background: var(--accent); color: #fff; }
.sb-frame-tag.src-crop { background: var(--ok); color: #fff; }
.sb-last-frame { position: absolute; right: 8px; bottom: 8px; width: 34%; border: 2px solid #fff; border-radius: 6px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, .35); background: #000; }
.sb-last-frame img { width: 100%; height: auto !important; display: block; }
.sb-last-frame small { position: absolute; left: 0; top: 0; padding: 0 5px; background: rgba(0, 0, 0, .6); color: #fff; font-size: 10px; border-bottom-right-radius: 4px; }
.sb-frame-check { position: absolute; left: 8px; right: 8px; top: 32px; padding: 3px 7px; border-radius: 6px; font-size: 11px; line-height: 1.35; }
.sb-frame-check.bad { background: rgba(200, 40, 40, .9); color: #fff; }
.sb-frame-check.ok { background: rgba(30, 140, 70, .85); color: #fff; right: auto; }
.kit-img-label { width: 100%; height: auto !important; min-height: 0; line-height: 1.5; margin-top: 4px; padding: 2px 4px; border: 0; border-radius: 4px; background: var(--chip, #eef2f7); color: inherit; font-size: 11px; text-align: left; white-space: normal; word-break: break-all; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; cursor: pointer; }
.kit-img-label.empty { background: transparent; border: 1px dashed var(--line, #ccc); color: var(--muted, #888); }
.kit-img-label.render { background: #fbe9d0; }

/* 分镜按部件挑参考图：六视图 + 部件细节图 */
.sb-parts { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 4px; font-size: 12px; }
.sb-part-img { display: inline-flex; flex-direction: column; align-items: center; width: 44px; }
.sb-part-img img { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; border: 1px solid var(--line); background: #fff; }
.sb-part-img em { font-style: normal; font-size: 10px; max-width: 44px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); }
.sb-parts .chip-tag .link { margin-left: 2px; padding: 0 2px; }
.sb-part-add { height: 24px; padding: 0 4px !important; font-size: 12px; width: auto; }

/* 团队成员：侧栏底部的「我是谁」、改密码弹窗、系统设置里的成员表 */
.ext-me { position: relative; margin-bottom: 8px; }
.ext-me-chip { display: flex; align-items: center; gap: 8px; width: 100%; padding: 6px 8px; border: 0; border-radius: 10px; background: transparent; color: inherit; cursor: pointer; text-align: left; }
.ext-me-chip:hover { background: color-mix(in srgb, var(--text) 8%, transparent); }
.ext-me-avatar { flex: none; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: var(--accent, #4f6ef7); color: #fff; font-size: 13px; font-weight: 700; }
.ext-me-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.ext-me-name small { color: var(--muted); }
.ext-me-menu { position: absolute; left: 0; right: 0; bottom: 100%; margin-bottom: 4px; z-index: 50; display: flex; flex-direction: column; padding: 4px; border: 1px solid var(--line); border-radius: 10px; background: var(--card); box-shadow: var(--shadow); }
.ext-me-menu button { padding: 7px 10px; border: 0; border-radius: 8px; background: transparent; color: inherit; text-align: left; cursor: pointer; }
.ext-me-menu button:hover { background: color-mix(in srgb, var(--text) 8%, transparent); }
.ext-me-mask { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; background: rgba(0, 0, 0, .45); }
.ext-me-dlg { width: min(360px, calc(100vw - 32px)); display: flex; flex-direction: column; gap: 10px; }
.ext-me-dlg input { width: 100%; }
.ext-members-add { flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.login-card input + input { margin-top: 8px; }
.kit-video-part { margin-top: 18px; padding-top: 14px; border-top: 1px dashed var(--line); }
.kit-slot-head-v { align-items: flex-start; }
.kit-slot-title { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.kit-slot-title b { white-space: nowrap; }
.ext-onboard-sub { display: flex; flex-direction: column; gap: 2px; margin: 10px 0 8px; }
.kit-ai-slots { margin-top: 16px; padding-top: 12px; border-top: 1px dashed var(--line); }
.kit-checks-row { flex-basis: 100%; align-items: center; }
.clouddoc-go { margin-left: 10px; vertical-align: middle; text-decoration: none; }
.ext-members-team { gap: 10px; padding: 8px 10px; margin: 8px 0; border: 1px solid var(--line, #e5e7eb); border-radius: 8px; }
.ext-members-team small { display: block; margin-top: 2px; }
.ext-members-perm-row td { background: var(--soft, rgba(127,127,127,.06)); }
.ext-members-perms { display: flex; flex-wrap: wrap; gap: 14px 28px; margin: 4px 0 10px; }
.ext-members-group { display: flex; flex-direction: column; gap: 4px; min-width: 120px; }
.ext-members-group label { display: flex; align-items: center; gap: 6px; font-weight: normal; }
.ext-members-perm-row .row { flex-wrap: wrap; gap: 6px; align-items: center; }
/* 系统设置：上方分类，成员表紧凑排 */
.sys-tabs { margin-bottom: 14px; }
.ext-sysconfig-tip { margin: 0 0 8px; }
.ext-members .table { width: auto; min-width: 70%; }
.ext-members .table td, .ext-members .table th { padding: 6px 10px; white-space: nowrap; }
.ext-members .table select { width: auto; min-width: 110px; }
.ext-members-sub { margin: 16px 0 6px; font-size: 14px; }
.ext-members-add { align-items: center; }
.ext-members-add input:not([type=checkbox]), .ext-members-add select { width: auto; flex: 0 1 200px; min-width: 140px; }
.ext-members-add label { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.ext-members-addbox { border: 1px solid var(--line, #e5e7eb); border-radius: 10px; padding: 12px; margin: 8px 0 14px; }
.ext-members-addbox .row { flex-wrap: wrap; gap: 8px; align-items: center; }
/* 成员权限：权限一行、人一列，打勾即生效 */
.ext-members-tag { margin-left: 6px; padding: 1px 6px; border-radius: 6px; font-size: 11px; background: var(--accent); color: #fff; }
.ext-perm-wrap { overflow-x: auto; border: 1px solid var(--line, #e5e7eb); border-radius: 10px; }
.ext-perm { border-collapse: collapse; width: 100%; font-size: 13px; }
.ext-perm th, .ext-perm td { padding: 10px 14px; border-bottom: 1px solid var(--line, #e5e7eb); text-align: center; white-space: nowrap; }
.ext-perm th { font-weight: 600; position: sticky; top: 0; background: var(--card, #fff); }
.ext-perm th small { display: block; font-weight: normal; color: var(--muted, #999); }
.ext-perm th.off { opacity: .5; }
.ext-perm .ext-perm-name { text-align: left; min-width: 220px; }
.ext-perm .ext-perm-name small { display: block; color: var(--muted, #999); font-size: 12px; margin-top: 2px; white-space: normal; }
.ext-perm .ext-perm-group td { text-align: left; font-weight: 600; background: color-mix(in srgb, var(--accent) 10%, transparent); }
.ext-perm .ext-perm-admin td { background: color-mix(in srgb, var(--accent) 4%, transparent); }
.ext-perm .ext-perm-yes { color: #16a34a; font-weight: 700; }
.ext-perm tr:last-child td { border-bottom: 0; }
/* 右上角：当前产品 + 我是谁 */
.page-head-right { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; justify-content: flex-end; }
.ext-me.ext-me-top { margin: 0; }
.ext-me-top .ext-me-chip { width: auto; padding: 4px 10px 4px 4px; border: 1px solid var(--line); border-radius: 999px; }
.ext-me-top .ext-me-menu { top: 100%; bottom: auto; left: auto; right: 0; min-width: 140px; margin: 4px 0 0; }

/* 视频素材库：工具条一行 + 设置收进按钮 + 筛选单独一行（2026-11-14 重新排版） */
.asset-page { display: flex; flex-direction: column; gap: 16px; }
.asset-toolbar { padding: 12px 16px; display: flex; flex-direction: column; gap: 8px; }
.at-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.at-group { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
.at-upload { flex-wrap: nowrap; }
.at-upload .up-field { flex: 0 1 200px; min-width: 140px; }
.at-upload .up-field-cat { flex: 0 1 110px !important; min-width: 90px; }
.at-upload .up-field input { padding-top: 6px !important; padding-bottom: 6px !important; }
.at-row .btn.upload { white-space: nowrap; }
.at-upload .up-field input { background: var(--field) !important; }
.at-upload .sb-names { max-height: 240px; }
.at-sep { width: 1px; height: 22px; background: var(--line); flex: none; }
.at-more { margin-left: auto; gap: 6px; }
.at-more .btn.on { color: var(--accent); background: var(--accent-soft); }
.asset-sources { padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.asset-sources .row { gap: 10px; align-items: baseline; flex-wrap: wrap; }
.asset-sources input, .asset-sources select { max-width: 520px; }
.asset-page > #ext-rolemap { grid-column: auto; }
.asset-filterbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin: 0 0 14px; }
.asset-filterbar .review-seg { align-self: center; }
.asset-filterbar select { width: auto !important; padding: 4px 8px !important; font-size: 12.5px; max-width: 220px; }
@media (max-width: 760px) {
  .at-sep { display: none; }
  .at-upload { flex-wrap: wrap; }
  .at-upload, .at-upload .up-field, .at-upload .up-field-cat { flex: 1 1 100% !important; }
  .asset-filterbar select { max-width: 100%; }
}

/* 模特卡库（2026-11-14） */
.mc-form-head { gap: 12px; flex-wrap: wrap; align-items: center; }
.mc-form-head h3 { margin: 0; }
.mc-fields { display: flex; flex-wrap: wrap; gap: 8px 12px; }
.mc-fields label { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--muted); flex: 0 1 130px; min-width: 0; }
.mc-fields label.wide { flex: 1 1 240px; }
.mc-fields input, .mc-fields select { width: 100%; }
.mc-fields input.short { width: 100%; }
.mc-styles { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.mc-styles .chip { flex: none; width: auto; white-space: nowrap; line-height: 1.5; font-size: 12.5px; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--line); background: var(--card); color: var(--muted); cursor: pointer; }
.mc-styles .chip.on { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.mc-filter { display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: center; margin: 4px 0 12px; }
.mc-filter select { width: auto !important; padding: 4px 8px !important; font-size: 12.5px; }
.mc-grid { grid-template-columns: repeat(auto-fill, minmax(min(320px, 100%), 1fr)); }
.mc-card { gap: 6px; }
.mc-card.bad { border-color: var(--danger, #e5484d); }
.mc-img { display: block; aspect-ratio: 16 / 9; border-radius: 10px; overflow: hidden; background: var(--field); }
.mc-img img { width: 100%; height: 100%; object-fit: contain; display: block; }
.mc-img.empty { display: grid; place-items: center; position: relative; color: var(--muted); font-size: 12px; text-align: center; padding: 8px; }
.mc-img.empty img { position: absolute; inset: 0; opacity: .35; object-fit: cover; }
.mc-img.empty span { position: relative; }
.mc-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mc-code { font-family: ui-monospace, Menlo, Consolas, monospace; font-weight: 700; color: var(--accent); font-size: 13px; }
.mc-head .tag.mc-face { color: var(--accent); background: var(--accent-soft); }
.mc-meta { font-size: 12.5px; color: var(--muted); }
.mc-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.mc-warn { margin: 0; font-size: 12.5px; }
.mc-edit summary { cursor: pointer; font-size: 12.5px; color: var(--muted); }
.mc-edit[open] { display: flex; flex-direction: column; gap: 8px; }
@media (max-width: 760px) { .mc-fields label { flex: 1 1 calc(50% - 12px); } .mc-grid { grid-template-columns: minmax(0, 1fr); } .mc-card { min-width: 0; } }

/* AI 生模特卡（2026-11-14） */
.mg-page { display: flex; flex-direction: column; gap: 16px; }
.mg-form { display: flex; flex-direction: column; gap: 10px; }
.mg-form .mc-fields label .seg { align-self: flex-start; }
.mg-regions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.mg-regions .chip { flex: none; white-space: nowrap; font-size: 12.5px; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--line); background: var(--card); color: var(--muted); cursor: pointer; }
.mg-regions .chip.on { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.mg-go { gap: 12px; flex-wrap: wrap; align-items: center; }
.mg-go select { width: auto !important; margin: 0 4px; }
.mg-result { display: flex; flex-direction: column; gap: 12px; }
.mg-result > .row { gap: 10px; flex-wrap: wrap; align-items: baseline; }
.mg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(360px, 100%), 1fr)); gap: 12px; }
.mg-cand { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.mg-cand .row { gap: 8px; flex-wrap: wrap; }
.mg-cand .row input { flex: 1 1 140px; min-width: 0; }
.mg-cand.saved .mc-img { outline: 2px solid var(--ok); }
.mg-mode { gap: 12px; flex-wrap: wrap; align-items: center; }
.mg-ref { display: flex; gap: 12px; align-items: flex-start; flex-wrap: wrap; }
.mg-ref-pick { flex: none; width: 120px; aspect-ratio: 3 / 4; border: 1px dashed var(--line); border-radius: 10px; display: grid; place-items: center;
  overflow: hidden; cursor: pointer; color: var(--muted); font-size: 12.5px; background: var(--field); }
.mg-ref-pick.has { border-style: solid; }
.mg-ref-pick img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mg-ref-text { flex: 1 1 240px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.mg-ref-text .hint { margin: 0; }
.mg-cand .mc-img { aspect-ratio: 1 / 1; }
.mc-img.sq { aspect-ratio: 1 / 1; }   /* 露脸模特卡是正方形拼版 */
.mg-family { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; }
.mg-family select, .mg-family input { width: auto; flex: 0 1 180px; min-width: 0; }

/* 侧栏「更多」折叠（2026-11-14） */
.sb-more { display: flex; align-items: center; gap: 4px; width: 100%; background: none; border: 0; cursor: pointer; font: inherit; text-align: left; }
.sb-more-chev { display: inline-block; transition: transform .15s; }
.sb-more.open .sb-more-chev { transform: rotate(90deg); }
/* 窄屏时分组标题隐藏，「更多」按钮要留着（只显示 ⋯），否则 AI 助手 / 画布 / 工作台点不到 */
@media (max-width: 1100px) {
  .sb-more { display: flex !important; justify-content: center; margin: 10px 0 4px; font-size: 0; }
  .sb-more .sb-more-chev { font-size: 18px; transform: none !important; }
  .sb-more .sb-more-chev::before { content: "⋯"; }
  .sb-more .sb-more-chev { color: transparent; width: 1.2em; position: relative; }
  .sb-more .sb-more-chev::before { color: var(--muted); position: absolute; left: 0; }
}
.mg-added { display: flex; gap: 12px; align-items: flex-start; flex-wrap: wrap; padding-top: 4px; }
.mg-added .mc-img { width: 200px; flex: none; }
.mg-added-text { flex: 1 1 220px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.mc-goto { margin: 0 0 4px; }

/* CORE-25：模特卡库顶部「AI 生模特卡」入口 */
.mc-goto-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 16px; margin-bottom: 12px; }
.mc-goto-bar > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
/* FD-40 改这款品类的下拉，放在完成度一行最前面 */
.kit-own-ptype { display: inline-flex; align-items: center; gap: 6px; margin-right: 12px; }
.kit-own-ptype select { padding: 2px 6px; }
/* 编辑文字图层（2026-11-15）：候选图右边一块可改资料，窄屏落到图下面 */
.mg-cand { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
@media (min-width: 900px) { .mg-cand { grid-template-columns: minmax(0, 1.2fr) minmax(220px, 1fr); align-items: start; } }
.mg-grid { grid-template-columns: repeat(auto-fill, minmax(min(560px, 100%), 1fr)); }
.mg-text { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.mg-text-head { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: baseline; }
.mg-text-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 10px; }
.mg-text-fields label { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--muted); min-width: 0; }
.mg-text-fields input, .mg-text-fields select { width: 100%; }
.mg-intro { margin: 0; font-size: 13px; line-height: 1.6; }
.mg-intro .hint { margin-right: 6px; }
.mc-retext .mg-text-fields { margin: 8px 0; }
.mc-intro { line-height: 1.6; }


/* ---------- CORE-27：侧栏按说明书六步分组（编号 + 组色 + 折叠） ---------- */
.nv-grp { --gc: var(--faint); }
.nv-grp[data-k="base"] { --gc: var(--ok); }
.nv-grp[data-k="tools"] { --gc: var(--warn); }
.nv-grp[data-k="line"] { --gc: var(--accent-2); }
.nv-grp[data-k="ads"] { --gc: #9b7cf0; }
.nv-pin { margin-top: 4px; }
.nv-fold { display: flex; align-items: center; gap: 8px; width: calc(100% - 24px); background: none; border: 0; cursor: pointer; font: inherit; font-size: 12px; text-align: left; color: var(--faint); padding: 0; }
.nv-fold:hover, .nv-fold.here { color: var(--gc); }
.nv-fold .sb-more-chev { margin-left: auto; font-size: 14px; }
.nv-fold.open .sb-more-chev { transform: rotate(90deg); }
.nv-no { display: inline-grid; place-items: center; min-width: 18px; height: 18px; border-radius: 5px; font-size: 12px; line-height: 1; color: var(--gc); background: color-mix(in srgb, var(--gc) 14%, transparent); }
.sb-nav.nv-shut { display: none; }
.sb-item.sub { height: 42px; padding-left: 30px; font-weight: 500; }
.sb-item.sub .sb-ico, .sb-item.sub .sb-ico svg { width: 18px; height: 18px; }
.nv-head { margin: 6px 16px 0; font-size: 13px; font-weight: 600; color: var(--muted); }
.nv-link .nv-go { font-size: 12px; color: var(--faint); }
a.sb-item { text-decoration: none; }
.nv-plan { cursor: default; opacity: .55; height: 40px; font-weight: 500; }
.nv-plan:hover { color: var(--muted); }
.nv-tag { font-size: 11px; padding: 1px 6px; border-radius: 5px; background: var(--field); color: var(--muted); font-weight: 500; }
.nv-grp .sb-item.active { background: var(--accent); }
/* 窄屏（图标栏 / 手机横条）：组名只留编号（没编号的显示 ⋯），小标题、规划中、快捷入口不显示 */
@media (max-width: 1100px) {
  .nv-fold { display: flex !important; justify-content: center; width: 100%; margin: 10px 0 4px; font-size: 0; }
  .nv-fold .sb-more-chev { display: none; }
  .nv-grp:not([data-k="base"]):not([data-k="tools"]):not([data-k="line"]):not([data-k="ads"]) .nv-fold::before { content: "⋯"; font-size: 18px; color: var(--muted); }
  .nv-no { font-size: 12px; }
  .nv-head, .nv-plan, .nv-link { display: none !important; }
  .sb-item.sub { padding: 0; }
}
@media (max-width: 760px) {
  .nv-grp { display: flex; align-items: center; }
  .nv-fold { width: auto; margin: 0 2px 0 6px; }
  .sb-item.sub { padding: 0 10px; height: 40px; }
}

/* FD-06 禁说词：保存卖点命中就标红 */
.kit-word-bad { border-color: var(--err) !important; box-shadow: 0 0 0 1px var(--err); }
.kit-word-hits { grid-column: 1 / -1; font-size: 13px; line-height: 1.6; word-break: break-all; }
.kit-own-ptype .kit-pcat { margin-right: 4px; }
.kit-own-ptype { flex-wrap: wrap; max-width: 100%; }
.kit-own-ptype select { max-width: 100%; min-width: 0; }
