/* 短剧工作台 · 设计令牌与组件样式（09-18 起整站白底：近白页面底 + 白卡片 + 细线 + 亮蓝主色，照 soldy.ai 那一路；由深色版按明度/色相逐色映射而来） */
:root {
  --bg: #fafafb; --bg-side: #fafafb; --surface: #ffffff; --surface-hi: #f5f6f8;
  --accent-soft: #eaf2ff; --line: #e6e8ec; --line-hi: #c2c8d1;
  --ink: #20242b; --ink-2: #4b5160; --ink-3: #7a8190;
  --accent: #0b67ff; --accent-hi: #0053d6; --on-accent: #ffffff;
  --tag-amber-bg: #eaf2ff; --tag-green-bg: #ecfdf3; --tag-green: #067647;
  --tag-blue-bg: #eaf2ff; --tag-blue: #175cd3; --tag-purple-bg: #f4f3ff; --tag-purple: #6941c6;
}

/* 飞书交付版管理员后台 */
.admin-center-ov{z-index:130;background:#17203340}.admin-center{width:min(880px,calc(100vw - 32px));max-height:88vh;overflow:auto;background:#fff;border:1px solid #dbe2ec;border-radius:16px;padding:24px;color:#20242b;box-shadow:0 24px 80px #33527b33}.admin-center>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.admin-center h2,.admin-center h3{margin:0;color:#20242b}.admin-center header p,.admin-keys p{margin:5px 0 0;color:#7a8190;font-size:13px}.admin-center .admin-close{flex:none;min-width:72px;height:38px;padding:0 18px;border:1px solid #cfd6e2;background:#fff;color:#344054;border-radius:9px}.admin-users{display:grid;gap:8px}.admin-users article{display:grid;grid-template-columns:minmax(220px,1fr) 120px 170px;align-items:center;gap:12px;background:#f5f8fd;border:1px solid #e4eaf2;border-radius:10px;padding:13px 15px}.admin-user{display:grid;gap:3px}.admin-user small{color:#7a8190;font:11px/1.35 Consolas,monospace;word-break:break-all}.admin-users label{font-size:13px;color:#475467}.admin-password,.admin-keys{margin-top:20px;padding-top:20px;border-top:1px solid #e4e7ec}.admin-password>div{display:grid;grid-template-columns:1fr 1fr 110px;gap:10px;margin-top:12px}.admin-center .inp{height:42px;background:#fff;border:1px solid #cfd6e2;color:#20242b}.admin-center .btn-primary{height:42px;min-width:110px;padding:0 18px;white-space:nowrap;background:#0b67ff;color:#fff;border:0;border-radius:9px}.admin-key-row{display:grid;grid-template-columns:160px 1fr 110px;gap:10px;align-items:center;margin-top:12px}.admin-key-row>label{font-size:13px;color:#344054}.admin-key{display:inline-block;margin-left:8px;padding:4px 8px;border-radius:99px;background:#fff0f1;color:#c4323d;font-size:11px}.admin-key.ok{background:#e8f8ef;color:#067647}.admin-center .adm-msg{margin:0 0 12px;color:#c4323d}.admin-center .muted{color:#8d95a4}@media(max-width:700px){.admin-users article{grid-template-columns:1fr 1fr}.admin-user{grid-column:1/-1}.admin-password>div,.admin-key-row{grid-template-columns:1fr}.admin-center{padding:16px}.admin-center .btn-primary{width:100%}}
* { box-sizing: border-box; }
/* 大屏放大：1080p 原样；2K(≥2000px 视口)整体放大 1.2，2560+ 放大 1.35，4K 放大 1.7。用 zoom 一把梭（全站是 px 尺寸），vh 类高度已全部除以 --ui-zoom 抵消 */
:root { --ui-zoom: 1; }
@media (min-width: 2000px) { :root { --ui-zoom: 1.2; } }
@media (min-width: 2500px) { :root { --ui-zoom: 1.35; } }
@media (min-width: 3300px) { :root { --ui-zoom: 1.7; } }
body { zoom: var(--ui-zoom); }
html, body { height: 100%; }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: "Noto Sans SC", system-ui, sans-serif; -webkit-font-smoothing: antialiased; }
button, input, textarea, select { font-family: inherit; }
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-thumb { background: var(--line); border-radius: 3px; }
@keyframes pulse { 0%, 100% { opacity: 1 } 50% { opacity: .35 } }

#app { display: flex; flex-direction: column; height: calc(100vh / var(--ui-zoom)); min-height: 680px; overflow: hidden; }
.mid { display: flex; flex: 1; min-height: 0; position: relative; }
main.view { flex: 1; min-width: 0; overflow: auto; padding: 26px 30px 34px; }

/* ---------- 折叠导航（悬停展开覆盖） ---------- */
.rail-ph { width: 64px; flex: none; }
.rail { position: absolute; left: 0; top: 0; bottom: 0; width: 64px; background: var(--bg-side); border-right: 1px solid var(--line); z-index: 60; overflow: hidden; transition: width .18s ease; display: flex; flex-direction: column; padding: 16px 10px; gap: 12px; }
.rail:hover { width: 256px; box-shadow: 12px 0 44px rgba(0,0,0,0.15); }
.rail .brand { display: flex; align-items: center; gap: 10px; padding: 2px 4px 14px; }
.rail .brand .logo { width: 34px; height: 34px; flex: none; background: var(--accent); border-radius: 8px; display: grid; place-items: center; color: var(--on-accent); font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 18px; }
.rail .lbl { opacity: 0; transition: opacity .12s ease; white-space: nowrap; }
.rail:hover .lbl { opacity: 1; }
.rail .brand-txt { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 16px; letter-spacing: 1px; }
.rail .nav-mini { display: flex; flex-direction: column; gap: 10px; align-items: center; }
.rail:hover .nav-mini { display: none; }
.rail .nav-big { display: none; flex-direction: column; gap: 14px; }
.rail:hover .nav-big { display: flex; }
.mini-icon { width: 44px; height: 44px; flex: none; border-radius: 12px; display: grid; place-items: center; font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 20px; cursor: pointer; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); }
.mini-icon.on { border-color: var(--accent); background: var(--accent); color: var(--on-accent); }
.bigcard { position: relative; overflow: hidden; width: 100%; height: 220px; border-radius: 16px; padding: 18px 16px; text-align: left; cursor: pointer; color: var(--ink); border: 1px solid var(--line); opacity: .82; }
.bigcard:hover { opacity: 1; }
.bigcard.on { border-color: var(--accent); opacity: 1; box-shadow: 0 0 0 1px rgba(11,103,255,0.24), 0 12px 34px rgba(11,103,255,0.08); }
.bigcard.create { background: linear-gradient(135deg, #eaf2ff, #f3f7ff 46%, #ffffff); }
.bigcard.lib { background: linear-gradient(135deg, #f2f4f7, #f8f9fb 46%, #ffffff); }
.bigcard .glow, .bigcard .pat, .bigcard .wm { position: absolute; pointer-events: none; }
.bigcard .glow { inset: 0; }
.bigcard.create .glow { background: radial-gradient(200px 200px at 88% -6%, rgba(11,103,255,0.45), transparent 70%); }
.bigcard.lib .glow { background: radial-gradient(200px 200px at 88% -6%, rgba(234,242,255,0.36), transparent 70%); }
.bigcard .pat { inset: 0; }
.bigcard.create .pat { background: repeating-linear-gradient(115deg, rgba(16,24,40,0.02) 0 2px, transparent 2px 15px); }
.bigcard.lib .pat { background: repeating-linear-gradient(0deg, rgba(16,24,40,0.02) 0 1px, transparent 1px 18px), repeating-linear-gradient(90deg, rgba(16,24,40,0.02) 0 1px, transparent 1px 18px); }
.bigcard .wm { right: -16px; bottom: -54px; font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 150px; line-height: 1; }
.bigcard.create .wm { color: rgba(11,103,255,0.13); }
.bigcard.lib .wm { color: rgba(23,92,211,0.13); }
.bigcard .inner { position: relative; display: flex; flex-direction: column; height: 100%; }
.bigcard .ttl { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 24px; letter-spacing: 2px; }
.bigcard .sub { font-size: 12px; color: var(--ink-2); margin-top: 7px; line-height: 1.7; }
.bigcard .stat { font-size: 11px; color: var(--ink-3); margin-top: auto; white-space: nowrap; }
.rail .user { display: flex; align-items: center; gap: 10px; padding: 8px 4px; margin-top: auto; }
.rail .user .ava { width: 30px; height: 30px; flex: none; border-radius: 50%; background: #3A5A8C; display: grid; place-items: center; color: #ffffff; font-size: 12px; }
.rail .user .lbl { font-size: 12px; color: var(--ink-3); }

/* ---------- 通用 ---------- */
h1.page { margin: 0; font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 28px; }
.subttl { font-size: 13px; color: var(--ink-3); margin-top: 6px; }
.chip { padding: 6px 12px; border-radius: 999px; font-size: 12px; cursor: pointer; white-space: nowrap; border: 1px solid var(--line); background: none; color: var(--ink-2); }
.chip.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.tab { padding: 7px 16px; border-radius: 999px; font-size: 13px; cursor: pointer; white-space: nowrap; border: 1px solid var(--line); background: none; color: var(--ink-2); }
.tab.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.btn { padding: 8px 14px; border-radius: 999px; font-size: 13px; cursor: pointer; border: 1px solid var(--line); background: none; color: var(--ink); }
.btn:hover { border-color: var(--line-hi); }
.btn-primary { padding: 8px 16px; border-radius: 999px; font-size: 13px; font-weight: 500; cursor: pointer; border: none; background: var(--accent); color: var(--on-accent); }
.btn-primary:hover { background: var(--accent-hi); }
.btn-link { background: none; border: none; color: var(--accent); font-size: 12px; cursor: pointer; padding: 0; }
.pill { font-size: 11px; padding: 3px 9px; border-radius: 999px; white-space: nowrap; }
.panel { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; }
.inp, .ta { background: var(--bg); border: 1px solid var(--line); border-radius: 8px; color: var(--ink); padding: 10px 12px; font-size: 13px; outline: none; width: 100%; }
.ta { resize: vertical; line-height: 1.7; }

/* ---------- 案例墙（整卡 9:16，文字压在卡内底部渐变上） ---------- */
.wall { flex: 1; min-width: 0; }
.wall-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 22px; }
.wall-title { display: flex; align-items: baseline; gap: 12px; }
.wall-title .page { margin: 0; }
.wall-count { font-size: 13px; color: var(--ink-3); }
.wall-tools { display: flex; align-items: center; gap: 10px; }
/* 成片 / 含过程片段：一个分段开关，没有过程片段时整个不显示 */
.wall-seg { display: inline-flex; padding: 3px; border-radius: 999px; background: var(--card-2, #f3f4f6); border: 1px solid var(--line, #e6e8ec); }
.wall-seg button { border: 0; background: none; color: var(--ink-3); font: inherit; font-size: 12.5px; padding: 6px 14px; border-radius: 999px; cursor: pointer; transition: background .15s, color .15s; }
.wall-seg button b { font-weight: 600; margin-left: 2px; }
.wall-seg button.on { background: #fff; color: var(--ink); box-shadow: 0 1px 4px rgba(15,23,42,.12); }
.wall-seg button:not(.on):hover { color: var(--ink); }
.wall-admin-lib { font-size: 12px; }
/* 案例墙透气：列宽 250 不变，缝隙 20→32/36；极简——卡片没有描边、没有投影，就是一张圆角画面 */
/* 顶部横幅：动态视频背景 + 白色半透明蒙版（照 soldy 首屏），整条可点 = 新建视频 */
.wall-hero { position: relative; overflow: hidden; height: 250px; border-radius: 22px; margin-bottom: 34px; cursor: pointer; background: linear-gradient(120deg, #eef2f7, #f7f8fa); isolation: isolate; border: 1px solid #e6e9ef; box-shadow: 0 10px 34px rgba(16,24,40,.07), 0 1px 2px rgba(16,24,40,.04); }
.wall-hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
/* 蒙版左边带一点冷灰蓝，别和白页面糊成一片；右边透出动画 */
.wall-hero-veil { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(238,242,248,.94) 0%, rgba(244,246,250,.8) 45%, rgba(255,255,255,.3) 100%); }
.wall-hero-body { position: relative; z-index: 1; height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 0 48px; }
.wall-hero-eyebrow { display: block; margin: 0 0 12px 24px; font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; font-size: 11.5px; letter-spacing: 2px; text-transform: uppercase; color: var(--accent); }
.wall-hero h2 { margin: 0; padding-left: 20px; border-left: 4px solid var(--accent); font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 32px; line-height: 1.15; letter-spacing: -.01em; color: var(--ink); }
.wall-hero h2 em { display: block; margin-top: 4px; font-style: normal; font-family: Inter, "Helvetica Neue", Arial, sans-serif; font-weight: 800; font-size: 28px; letter-spacing: -.02em; color: var(--accent); }
.wall-hero p { margin: 14px 0 0 24px; font-size: 13.5px; color: var(--ink-2); }
.wall-hero-go small { font-family: Inter, "Helvetica Neue", Arial, sans-serif; font-size: 11px; font-weight: 500; letter-spacing: .6px; text-transform: uppercase; opacity: .75; }
.wall-hero-go { flex: none; display: inline-flex; align-items: center; gap: 10px; padding: 13px 22px; border-radius: 999px; background: var(--accent); color: #fff; font-size: 15px; font-weight: 600; box-shadow: 0 6px 18px rgba(11,103,255,.28); transition: transform .15s ease, box-shadow .15s ease; }
.wall-hero-go svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.wall-hero:hover .wall-hero-go { transform: translateX(3px); box-shadow: 0 10px 26px rgba(11,103,255,.34); }
.wall-hero:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.wall-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 36px 32px; align-content: start; padding-bottom: 24px; }
.case-card { cursor: pointer; position: relative; aspect-ratio: 9/16; border-radius: 16px; overflow: hidden; border: 0; background: var(--surface-hi); padding: 0; }
.case-card:hover { border-color: var(--line-hi); }
.case-card .poster { position: absolute; inset: 0; }
/* 悬停预览：鼠标停在卡上就静音播（src 悬停时才挂上，墙上几十张卡不会一起预加载），淡入盖住封面；移开就停 */
.case-card .hoverpv { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .25s ease; z-index: 1; pointer-events: none; background: #000; }
.case-card.pv-on .hoverpv { opacity: 1; }
.case-card .tpl-mute { left: 12px; bottom: 12px; z-index: 4; }
.case-card .mark { left: 48px; }
.case-card .cap { padding-left: 50px; }
/* 卡面默认只留画面：标题/日期、时长角标、MOCK 标、删除叉全藏着，鼠标停上去才和预览一起浮出来 */
.case-card .cap, .case-card .mocktag, .case-card .adm-del { opacity: 0; transition: opacity .18s ease; }
.case-card:hover .cap, .case-card:hover .mocktag, .case-card:hover .adm-del, .case-card:focus-within .cap { opacity: 1; }
/* 默认态只留一个时长数字在左下角（用户：横线 + DURATION 太复杂）；颜色按封面那一角的明暗自适应（video-player.js 采样后加 on-light / on-dark）；悬停时让位给标题 */
.mark { position: absolute; left: 14px; bottom: 14px; z-index: 2; display: flex; align-items: center; gap: 8px; pointer-events: none; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.35); font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; transition: opacity .18s ease; line-height: 1; }
.mark b { font-size: 12px; font-weight: 500; letter-spacing: .3px; font-variant-numeric: tabular-nums; opacity: .92; }
.mark.on-light { color: #111318; text-shadow: 0 1px 2px rgba(255,255,255,.45); }
.case-card:hover .mark, .case-card:focus-within .mark, .tpl-vcard:hover .mark { opacity: 0; }
/* 角落的「复刻」小图标：悬停才出现，替代原来那层蒙层 + 两个按钮 */
.case-card .same-ic { position: absolute; top: 10px; right: 10px; z-index: 3; width: 32px; height: 32px; padding: 0; border: 1px solid rgba(255,255,255,.35); border-radius: 50%; background: rgba(8,8,10,.55); color: #fff; backdrop-filter: blur(6px); display: grid; place-items: center; cursor: pointer; opacity: 0; transform: translateY(-4px); transition: opacity .16s ease, transform .16s ease, background .16s ease; }
.case-card:hover .same-ic, .case-card:focus-within .same-ic { opacity: 1; transform: none; }
.case-card .same-ic:hover { background: var(--accent); border-color: var(--accent); }
.case-card:has(.same-ic) .dur { right: 50px; }
.case-card .same-ic svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.case-card .dur { position: absolute; top: 10px; right: 10px; font-size: 12px; background: rgba(0, 0, 0, .55); padding: 2px 6px; border-radius: 4px; color: #ffffff; z-index: 2; }
.case-card .mocktag { position: absolute; top: 8px; left: 8px; font-size: 10px; background: rgba(0, 0, 0, .5); border: 1px solid rgba(255,255,255,0.25); padding: 1px 6px; border-radius: 4px; color: rgba(255,255,255,0.75); z-index: 2; }
.case-card .cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 40px 14px 12px; background: linear-gradient(180deg, transparent, rgba(8,8,10,0.55) 40%, rgba(8,8,10,0.88)); z-index: 2; pointer-events: none; }
.case-card .t { font-size: 14.5px; font-weight: 600; color: #ffffff; text-shadow: 0 1px 4px rgba(0,0,0,0.6); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.case-card .s { font-size: 12px; color: rgba(255,255,255,0.62); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* 旧的悬停蒙层（播放 + 做同款两个按钮）已去掉：整张卡可点、角落一个复刻图标 */
/* ---------- 向导 ---------- */
.wiz-head { display: flex; align-items: center; gap: 14px; margin-bottom: 20px; }
.wiz-body { display: flex; flex-wrap: wrap; gap: 24px; align-items: start; }
.wiz-main { flex: 1 1 440px; min-width: 0; display: flex; flex-direction: column; gap: 26px; }
.stephead { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 12px; }
.stephead .l { display: flex; align-items: baseline; gap: 10px; }
.stepno { font-family: "Noto Sans SC", sans-serif; font-weight: 900; color: var(--accent); font-size: 18px; }
.stepname { font-weight: 500; }
.stepnote { font-size: 12px; color: var(--ink-3); }
.pickgrid { display: grid; gap: 10px; }
.pickgrid.fw { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.pickgrid.ac { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
.pickgrid.sc, .pickgrid.pd { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.pick { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: 8px; cursor: pointer; color: inherit; text-align: left; display: flex; flex-direction: column; gap: 6px; }
.pick:hover { border-color: var(--line-hi); }
.pick.on { border-color: var(--accent); }
.pick.fwcard { padding: 14px; gap: 8px; }
.pick.fwcard.on { background: var(--accent-soft); }
.pick .thumb { border-radius: 6px; position: relative; display: grid; place-items: center; }
.pick .thumb.r34 { aspect-ratio: 3/4; font-family: "Noto Sans SC", sans-serif; font-size: 26px; font-weight: 900; color: rgba(16,24,40,0.5); }
.pick .thumb.r169 { aspect-ratio: 16/9; }
.pick .thumb.r11 { aspect-ratio: 1; }
.pick .tick { position: absolute; top: 6px; right: 6px; width: 18px; height: 18px; border-radius: 50%; background: var(--accent); color: var(--on-accent); font-size: 12px; display: grid; place-items: center; font-weight: 700; }
.pick .nm { font-size: 13px; font-weight: 500; }
.pick .rl { font-size: 11px; color: var(--ink-3); }
.optrow { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; }
.optcard { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: 14px; }
.optcard .cap { font-size: 12px; color: var(--ink-3); margin-bottom: 10px; }
.optcard .hint { font-size: 12px; color: var(--ink-3); margin-top: 10px; line-height: 1.6; }
.beat { width: 34px; padding: 6px 0; text-align: center; }
.beat.rec { border-style: dashed; }
.pschips { margin-top: 12px; }
.pschips .cap { font-size: 12px; color: var(--ink-3); margin-bottom: 8px; }
.chiprow { display: flex; flex-wrap: wrap; gap: 6px; }
.summary { flex: 0 1 320px; min-width: 260px; position: sticky; top: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 20px; display: flex; flex-direction: column; gap: 16px; }
.summary .ttl { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 16px; }
.summary .from { font-size: 12px; color: var(--accent); margin-top: -8px; }
.summary .rows { display: flex; flex-direction: column; gap: 10px; font-size: 13px; }
.summary .row { display: flex; justify-content: space-between; gap: 12px; }
.summary .row .k { color: var(--ink-3); }
.summary .row .v { text-align: right; }
.summary hr { border: none; height: 1px; background: var(--line); margin: 0; }
.submitbtn { border: none; border-radius: 10px; padding: 13px; font-size: 14px; font-weight: 500; cursor: pointer; background: var(--accent); color: var(--on-accent); }
.submitbtn:hover { background: var(--accent-hi); }
.submitbtn:disabled { background: var(--line); color: var(--ink-3); cursor: default; }
.submitbtn.done { background: var(--tag-green-bg); color: var(--tag-green); }

/* ---------- 素材库 ---------- */
.libtabs { display: flex; gap: 8px; margin-bottom: 22px; flex-wrap: wrap; }
.libact { display: flex; justify-content: flex-end; gap: 8px; margin-bottom: 14px; align-items: center; }
.grid-actors { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 14px; }
.grid-scenes { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.grid-products { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.asset-card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 10px; }
.asset-card .ph { border-radius: 8px; display: grid; place-items: center; font-family: "Noto Sans SC", sans-serif; font-weight: 900; color: rgba(16,24,40,0.5); }
.asset-card .meta { padding: 10px 4px 4px; }
.asset-card .r1 { display: flex; justify-content: space-between; align-items: baseline; }
.asset-card .r1 .nm { font-weight: 500; }
.asset-card .r1 .xt { font-size: 11px; color: var(--ink-3); }
.asset-card .r2 { font-size: 12px; color: var(--ink-3); margin-top: 2px; }
.asset-card .r3 { font-size: 11px; color: var(--ink-3); margin-top: 8px; display: flex; justify-content: space-between; }
.prod-card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 14px; display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 14px; }
.bottle { width: 38%; height: 62%; background: rgba(16,24,40,0.13); border-radius: 6px 6px 10px 10px; border: 1px solid rgba(16,24,40,0.21); }
.fwrow { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 20px 24px; display: grid; grid-template-columns: 200px minmax(0, 1fr) auto; gap: 24px; align-items: center; }
.fwrow .nm { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 18px; }
.fwrow .au { font-size: 12px; color: var(--ink-3); margin-top: 4px; }
.fwrow .bt { font-size: 13px; color: var(--ink-2); line-height: 1.7; }
.fwrow .pp { font-size: 12px; color: var(--ink-3); margin-top: 6px; font-family: ui-monospace, monospace; white-space: pre-wrap; }
.sec-title { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 19px; }
.sec-title small { font-family: "Noto Sans SC", sans-serif; font-weight: 400; font-size: 12px; color: var(--ink-3); }
.ps-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 24px; align-items: start; }
.ps-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.ps-card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 14px; display: flex; flex-direction: column; gap: 8px; }
.ps-card .r1 { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.ps-card .nm { font-weight: 500; }
.ps-card .fg { font-size: 12px; color: var(--ink-2); line-height: 1.65; }
.ps-card .ft { font-size: 11px; color: var(--ink-3); margin-top: auto; display: flex; justify-content: space-between; }
.aside-form { background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 20px; display: flex; flex-direction: column; gap: 12px; }
.aside-form .ttl { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 16px; }
.aside-form .note { font-size: 12px; color: var(--ink-3); line-height: 1.6; margin-top: -6px; }
.dropbox { border: 1.5px dashed var(--line-hi); border-radius: 10px; padding: 14px 12px; text-align: center; cursor: pointer; display: block; font-size: 12.5px; color: var(--ink-2); line-height: 1.7; }
.dropbox:hover { border-color: var(--accent); color: var(--accent); }
.dropbox small { display: block; font-size: 11px; color: var(--ink-3); }
.ordiv { display: flex; align-items: center; gap: 10px; font-size: 11px; color: var(--ink-3); }
.ordiv::before, .ordiv::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.tk-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 24px; align-items: start; }
.tk-list { display: flex; flex-direction: column; gap: 10px; }
.tk-row { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 16px 20px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 16px; align-items: center; }
.tk-row .ti { font-weight: 500; }
.tk-row .de { font-size: 12px; color: var(--ink-3); margin-top: 3px; }
.tk-row .by { font-size: 11px; color: var(--ink-3); margin-top: 6px; }
.tk-row .rt { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; }
.tk-take { background: none; border: 1px solid var(--line); color: var(--accent); padding: 5px 10px; border-radius: 6px; font-size: 12px; cursor: pointer; }
.tk-take:hover { border-color: var(--accent); }
.tk-types { display: flex; gap: 6px; }
.tk-type { flex: 1; padding: 8px; border-radius: 8px; font-size: 13px; cursor: pointer; border: 1px solid var(--line); background: none; color: var(--ink-2); }
.tk-type.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }

/* ---------- 底部队列 ---------- */
.qdrawer { flex: none; border-top: 1px solid var(--line); background: var(--bg-side); max-height: calc(40vh / var(--ui-zoom)); overflow: auto; padding: 16px 24px; }
.qdrawer .hd { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 12px; }
.qdrawer .hd .t { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 15px; }
.qdrawer .hd .s { font-size: 12px; color: var(--ink-3); }
.q-list { display: flex; flex-direction: column; gap: 8px; }
.q-row { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: 12px 18px; display: grid; grid-template-columns: 32px minmax(0, 1fr) 220px 90px; gap: 18px; align-items: center; }
.q-row .no { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 17px; color: var(--ink-3); }
.q-row .ti { font-weight: 500; font-size: 13.5px; }
.q-row .me { font-size: 12px; color: var(--ink-3); margin-top: 2px; }
.q-row .pg .cap { display: flex; justify-content: space-between; font-size: 11px; color: var(--ink-3); margin-bottom: 5px; }
.q-row .bar { height: 4px; background: var(--line); border-radius: 2px; overflow: hidden; }
.q-row .bar i { display: block; height: 100%; background: var(--accent); }
.q-row .bar i.done { background: var(--tag-green); }
.qbar { flex: none; height: 46px; border-top: 1px solid var(--line); background: var(--surface); display: flex; align-items: center; gap: 14px; padding: 0 20px; }
.qbar .dot { width: 8px; height: 8px; border-radius: 50%; flex: none; background: var(--tag-green); }
.qbar .dot.busy { background: var(--accent); animation: pulse 1.2s infinite; }
.qbar .nm { font-size: 12.5px; color: var(--ink-2); white-space: nowrap; }
.qbar .mode { font-size: 10px; padding: 2px 7px; border-radius: 999px; border: 1px solid var(--tag-amber-bg); background: var(--tag-amber-bg); color: var(--accent); white-space: nowrap; }
.qbar .mode.real { border-color: var(--tag-green-bg); background: var(--tag-green-bg); color: var(--tag-green); }
.qbar .mini { width: 140px; height: 3px; background: var(--line); border-radius: 2px; overflow: hidden; flex: none; }
.qbar .mini i { display: block; height: 100%; background: var(--accent); }
.qbar .line { font-size: 12px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.qbar .sp { flex: 1; }
.qbar .cnt { font-size: 12px; color: var(--ink-3); white-space: nowrap; }
.qbar .toggle { background: none; border: 1px solid var(--line); color: var(--accent); padding: 5px 14px; border-radius: 999px; font-size: 12px; cursor: pointer; white-space: nowrap; }
.qbar .toggle:hover { border-color: var(--accent); }

/* ---------- 播放浮层 ---------- */
.playov { position: fixed; inset: 0; background: rgba(16,24,40,0.55); backdrop-filter: blur(6px); z-index: 90; display: grid; place-items: center; }
/* 播放浮层：固定尺寸——左边视频列固定 360 宽、整个框固定高，右栏自己滚；提示词默认折叠 */
.playbox { position: relative; width: min(1120px, 94vw); height: min(800px, calc(92vh / var(--ui-zoom))); overflow: hidden; background: var(--surface); border: 1px solid var(--line); border-radius: 20px; padding: 24px; display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); gap: 24px; box-shadow: 0 30px 90px rgba(0,0,0,0.17); }
.playbox .playbox-x { position: absolute; top: 14px; right: 14px; width: 34px; height: 34px; padding: 0; border-radius: 50%; display: grid; place-items: center; color: var(--ink-3); z-index: 3; }
.playbox .playbox-x:hover { color: var(--ink); background: var(--surface-hi); }
.playbox .playbox-x svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.playbox .pv { width: 360px; min-height: 0; height: 100%; display: flex; flex-direction: column; border-radius: 14px; overflow: hidden; transition: width .18s ease; }
.playbox .pv .cwp { height: 100%; }
.playbox .pv > video { width: 100%; height: 100%; object-fit: contain; background: #000; display: block; }
.playbox .pcol { min-height: 0; display: flex; flex-direction: column; padding-right: 30px; }
.playbox .pmeta { flex: 1 1 auto; min-height: 0; overflow: auto; padding-right: 8px; }
.playbox .pactions { flex: none; display: flex; justify-content: flex-end; padding-top: 14px; }
.pmeta .sect label .linkbtn { float: right; border: none; background: none; color: var(--accent); font-size: 12px; letter-spacing: 0; cursor: pointer; padding: 0; font-family: inherit; }
.pmeta .pp.clip { max-height: 10.2em; overflow: hidden; position: relative; }
.pmeta .pp.clip::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3.4em; background: linear-gradient(180deg, transparent, var(--bg)); }
.pseg-list { display: flex; flex-direction: column; gap: 10px; }
.pseg { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 12px; align-items: start; background: var(--bg); border: 1px solid var(--line); border-radius: 12px; padding: 10px; }
.pseg-thumb { position: relative; padding: 0; border: none; background: #000; border-radius: 8px; overflow: hidden; aspect-ratio: 9/16; cursor: pointer; }
.pseg-thumb video { width: 100%; height: 100%; object-fit: cover; display: block; }
.pseg-thumb em { position: absolute; left: 6px; bottom: 6px; font-style: normal; font-size: 10.5px; padding: 2px 6px; border-radius: 999px; background: rgba(8,8,10,.7); color: #fff; }
.pseg-body { min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.pseg-body b { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pseg-prompt summary { cursor: pointer; font-size: 12px; color: var(--ink-3); }
.pseg-prompt .pp { margin-top: 6px; max-height: 220px; overflow: auto; }
.pseg-ops { display: flex; gap: 8px; }
.pseg-ops .btn { padding: 5px 12px; font-size: 12px; }
.playbox .pv .poster { width: 100%; height: 100%; border-radius: 12px; display: grid; place-items: center; color: rgba(16,24,40,0.36); font-size: 13px; }
.pmeta .ti { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 20px; }
.pmeta .meta { font-size: 12.5px; color: var(--ink-3); margin-top: 5px; }
.pmeta .meta2 { font-size: 12px; color: var(--ink-3); }
.pmeta .sect { margin-top: 15px; }
.pmeta .sect label { display: block; font-size: 11px; color: var(--ink-3); letter-spacing: 1.5px; margin-bottom: 7px; }
.mchips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.mchip { font-size: 12px; padding: 4px 11px; border-radius: 999px; background: var(--surface-hi); border: 1px solid var(--line); }
.mchip.acc { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }
.pmeta .pp { font-size: 12px; color: var(--ink-2); line-height: 1.7; background: var(--bg); border: 1px solid var(--line); border-radius: 10px; padding: 12px; font-family: ui-monospace, monospace; white-space: pre-wrap; }
.pmeta .mocknote { font-size: 12px; color: var(--accent); background: var(--accent-soft); border: 1px solid var(--tag-amber-bg); border-radius: 10px; padding: 9px 12px; margin-top: 12px; line-height: 1.6; }
.pmeta .srcnote { font-size: 12px; color: var(--tag-blue); background: var(--tag-blue-bg); border: 1px solid rgba(23,92,211,0.25); border-radius: 10px; padding: 9px 12px; margin-top: 12px; line-height: 1.6; }


/* ---------- 示例标识 ---------- */
.demo-note { margin-top: 10px; font-size: 12px; color: var(--accent); background: var(--accent-soft); border: 1px solid var(--tag-amber-bg); border-radius: 8px; padding: 7px 12px; display: inline-block; }
.demo-note b { font-weight: 600; }

/* ---------- 新建卡（案例墙第一张，同为 9:16） ---------- */
.case-card.newcard { border: 1.5px dashed var(--line-hi); background: none; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; color: inherit; text-align: center; padding: 14px 10px; }
.case-card.newcard:hover { border-color: var(--accent); background: var(--accent-soft); }
.case-card.newcard .plus { width: 46px; height: 46px; border-radius: 14px; background: var(--accent); color: var(--on-accent); display: grid; place-items: center; font-size: 26px; font-weight: 300; }
.case-card.newcard .t2 { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 15px; }
.case-card.newcard .s2 { font-size: 11px; color: var(--ink-3); line-height: 1.7; }

/* ---------- SVG 图标体系 ---------- */
.ic { width: 1em; height: 1em; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; display: block; }
.ic-fill { fill: currentColor; stroke: none; }
.rail .brand .logo .ic { font-size: 18px; }
.mini-icon .ic { font-size: 21px; }
.bigcard .wm .ic { width: 150px; height: 150px; stroke-width: 1.1; }
.bigcard .wm { right: -26px; bottom: -28px; font-size: 0; }
.case-ov .play .ic { font-size: 17px; margin-left: 2px; }
.case-ov .play { display: grid; place-items: center; }
.case-card.newcard .plus .ic { font-size: 22px; }
.case-card.newcard .plus { display: grid; place-items: center; }
.qbar .nm { display: flex; align-items: center; gap: 7px; }
.qbar .nm .ic { font-size: 14px; color: var(--ink-3); }

/* ---------- 微交互 · 年轻化细节 ---------- */
.case-card { transition: transform .18s ease, box-shadow .18s ease, border-color .15s ease; }
.case-card:hover { transform: translateY(-2px); }
.case-card.newcard:hover { transform: translateY(-4px); }
.btn, .btn-primary, .chip, .tab, .tk-type, .mini-icon, .qbar .toggle, .case-ov .same, .submitbtn, .tk-take, .pick { transition: all .15s ease; }
.btn-primary:hover, .submitbtn:not(:disabled):hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(11,103,255,0.2); }
.inp:focus, .ta:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(11,103,255,0.1); }
.bigcard { transition: opacity .15s ease, box-shadow .2s ease, transform .18s ease; }
.bigcard:hover { transform: translateY(-2px); }
.pick:hover { transform: translateY(-1px); }
.dropbox { transition: all .15s ease; }

/* ---------- 提示词 AI 扩写 ---------- */
.expand-btn { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); font-weight: 500; }
.expand-btn:hover { background: var(--accent); color: var(--on-accent); }
.expand-btn:disabled { opacity: .6; cursor: default; }
.expand-note { margin-top: 8px; font-size: 12px; color: var(--tag-blue); background: var(--tag-blue-bg); border: 1px solid rgba(23,92,211,0.22); border-radius: 8px; padding: 8px 11px; line-height: 1.6; }

/* ---------- 角色卡（真图 + 音色/人设） ---------- */
.actor-card .ph { position: relative; overflow: hidden; }
.region-tag { position: absolute; top: 8px; left: 8px; font-size: 10px; padding: 2px 7px; border-radius: 999px; background: rgba(8,8,10,0.62); color: #ffffff; }
.actor-voice { font-size: 11px; color: var(--tag-blue); margin-top: 7px; line-height: 1.5; }
.actor-speech { font-size: 11px; color: var(--ink-3); margin-top: 3px; line-height: 1.5; }
.actor-card .r3 { margin-top: 8px; }

/* ---------- 场景卡（真图 + 机位数） ---------- */
.scene-card { cursor: pointer; text-align: left; padding: 10px; }
.scene-card .ph { position: relative; overflow: hidden; }
.scene-count { position: absolute; bottom: 8px; right: 8px; font-size: 10px; padding: 2px 8px; border-radius: 999px; background: rgba(8,8,10,0.6); color: rgba(255,255,255,0.85); }

/* ---------- 场景详情浮层 ---------- */
.scenebox { width: min(920px, 94vw); max-height: calc(88vh / var(--ui-zoom)); overflow: auto; background: var(--surface); border: 1px solid var(--line); border-radius: 18px; padding: 22px; box-shadow: 0 30px 90px rgba(0,0,0,0.17); }
.sb-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.sb-head .ti { font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 19px; }
.sb-head .meta { font-size: 12.5px; color: var(--ink-3); margin-top: 4px; }
.sb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.sb-cell { display: flex; flex-direction: column; gap: 6px; }
.sb-cell .sb-img { aspect-ratio: 16/9; border-radius: 10px; border: 1px solid var(--line); }
.sb-cell.detail .sb-img { aspect-ratio: 4/5; }
.sb-cap { font-size: 11.5px; color: var(--ink-2); }
.sb-cell.detail .sb-cap { color: var(--tag-blue); }

/* ---------- 自由编排器 ---------- */
.free-body { display: flex; gap: 22px; align-items: flex-start; flex-wrap: wrap; }
.free-main { flex: 1 1 460px; min-width: 0; display: flex; flex-direction: column; gap: 26px; }
.free-side { flex: 0 1 300px; min-width: 260px; position: sticky; top: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 18px; display: flex; flex-direction: column; gap: 12px; }
.free-side .ttl { font-weight: 900; font-size: 16px; }
.free-side .fld { display: flex; flex-direction: column; gap: 5px; font-size: 12px; color: var(--ink-3); }
.free-hint { font-size: 12px; color: var(--ink-3); line-height: 1.6; }
.fslot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.fslot-empty { grid-column: 1/-1; border: 1.5px dashed var(--line-hi); border-radius: 12px; padding: 30px; text-align: center; font-size: 13px; color: var(--ink-3); }
.fslot { position: relative; display: flex; gap: 10px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 10px; }
.fslot-no { position: absolute; top: -8px; left: 10px; font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; background: var(--accent); color: var(--on-accent); z-index: 1; }
.fslot-no.base { background: var(--tag-green); }
.fslot.video { border-color: rgba(23,92,211,0.4); }
.fslot-thumb { width: 68px; height: 90px; flex: none; border-radius: 8px; background-size: cover; background-position: center; display: grid; place-items: center; }
.fslot-vtag { font-size: 18px; color: rgba(16,24,40,0.5); }
.fslot-meta { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; padding-top: 6px; }
.fslot-name { font-size: 13px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fslot-from { font-size: 11px; color: var(--ink-3); }
.fslot-ops { display: flex; gap: 4px; margin-top: auto; flex-wrap: wrap; }
.fslot-ops button { border: 1px solid var(--line); background: none; color: var(--ink-2); border-radius: 6px; padding: 3px 7px; font-size: 11px; cursor: pointer; font-family: inherit; }
.fslot-ops button:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
.fslot-ops button:disabled { opacity: .35; cursor: default; }
.fadd-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.free-preview { background: var(--bg); border: 1px solid var(--tag-green-bg); border-radius: 10px; padding: 11px; font-size: 12px; }
.pvhead { color: var(--tag-green); font-weight: 500; margin-bottom: 8px; }
.pvmap { display: flex; flex-direction: column; gap: 5px; }
.pvrow { display: flex; align-items: center; gap: 8px; }
.pvno { font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: var(--accent); color: var(--on-accent); }
.pvnm { font-size: 12px; color: var(--ink-2); }
.pvok { margin-top: 8px; font-size: 11.5px; color: var(--tag-green); }
.pvmiss { margin-top: 6px; font-size: 11.5px; color: var(--accent); }
.case-card.newcard.free .plus { background: none; }
/* 素材选择器 */
.pickbox { width: min(760px, 94vw); max-height: calc(84vh / var(--ui-zoom)); overflow: auto; background: var(--surface); border: 1px solid var(--line); border-radius: 16px; padding: 20px; box-shadow: 0 30px 90px rgba(0,0,0,0.17); }
.pickhead { display: flex; justify-content: space-between; align-items: center; font-weight: 900; font-size: 16px; margin-bottom: 14px; }
.pickgrid2 { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 12px; }
.pickitem { background: var(--bg); border: 1px solid var(--line); border-radius: 10px; padding: 8px; cursor: pointer; color: inherit; font-family: inherit; display: flex; flex-direction: column; gap: 6px; }
.pickitem:hover { border-color: var(--accent); }
.pickitem-img { width: 100%; border-radius: 6px; background-size: cover; background-position: center; }
.pickitem-img.r34 { aspect-ratio: 3/4; }
.pickitem-img.r169 { aspect-ratio: 16/9; }
.pickitem-img.r11 { aspect-ratio: 1; background-color: #fff; background-size: contain; background-repeat: no-repeat; }
.pickitem-nm { font-size: 12px; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---------- 管理员模式 ---------- */
.adm-del { position: absolute; top: 8px; left: 8px; z-index: 5; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; background: #C0392B; color: #ffffff; font-size: 13px; font-weight: 700; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,0.14); }
.adm-del:hover { background: #E74C3C; transform: scale(1.1); }
.adm-del ~ .mocktag { top: 36px; }
.prod-card, .fwrow, .ps-card, .tk-row, .asset-card { position: relative; }
.adm-bar { position: fixed; top: 10px; left: 50%; transform: translateX(-50%); z-index: 200; display: flex; align-items: center; gap: 10px; background: #fef3f2; border: 1px solid #fecdca; color: #b42318; font-size: 12.5px; padding: 7px 14px; border-radius: 999px; box-shadow: 0 8px 30px rgba(0,0,0,0.14); }
.adm-exit { border: 1px solid #fecdca; background: none; color: #b42318; border-radius: 999px; padding: 2px 10px; font-size: 12px; cursor: pointer; font-family: inherit; }
.adm-exit:hover { background: #C0392B; color: #ffffff; }
.adm-box { width: min(380px, 92vw); background: var(--surface); border: 1px solid var(--line); border-radius: 16px; padding: 22px; display: flex; flex-direction: column; gap: 12px; box-shadow: 0 30px 90px rgba(0,0,0,0.17); }
.adm-box .ttl { font-weight: 900; font-size: 17px; }
.adm-box .sub { font-size: 12px; color: var(--ink-3); line-height: 1.6; }
.adm-box .row { display: flex; gap: 8px; }
.adm-msg { font-size: 12px; color: #b42318; }

/* 新建卡合并：一张卡两个入口 */
.newcard .new-opt { width: 100%; text-align: left; display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); cursor: pointer; font-family: inherit; }
.newcard .new-opt:hover { border-color: var(--accent); background: var(--accent-soft); }
.newcard .new-opt b { font-size: 13.5px; font-weight: 700; }
.newcard .new-opt span { font-size: 11px; color: var(--ink-3); line-height: 1.5; }
.newcard .new-opt:hover span { color: var(--ink-2); }
/* 合并后的新建卡：整卡不再是按钮，只有两个入口可点 */
.case-card.newcard { cursor: default; }
.case-card.newcard:hover { transform: none; background: none; border-color: var(--line-hi); }

/* ---------- 新建卡 v2：上下两个发光区块，对齐左侧大卡视觉 ---------- */
.case-card.newcard2 { display: flex; flex-direction: column; padding: 0; border: 1px solid rgba(11,103,255,0.28); background: var(--surface); overflow: hidden; }
.case-card.newcard2:hover { border-color: rgba(11,103,255,0.55); }
.nc-half { position: relative; flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 14px 12px; border: none; background: none; color: var(--ink); cursor: pointer; font-family: inherit; overflow: hidden; }
.nc-half + .nc-half { border-top: 1px solid var(--line); }
.nc-half .glow { position: absolute; inset: 0; pointer-events: none; opacity: .5; transition: opacity .18s ease; }
.nc-half.free { background: linear-gradient(150deg, #eaf2ff, #eaf2ff); }
.nc-half.free .glow { background: radial-gradient(150px 150px at 85% -8%, rgba(11,103,255,0.38), transparent 70%); }
.nc-half.wiz { background: linear-gradient(150deg, #eaf2ff, #eaf2ff); }
.nc-half.wiz .glow { background: radial-gradient(150px 150px at 85% -8%, rgba(234,242,255,0.3), transparent 70%); }
.nc-half:hover .glow { opacity: 1; }
.nc-half .ic { position: relative; width: 42px; height: 42px; border-radius: 13px; display: grid; place-items: center; transition: transform .18s ease; }
.nc-half.free .ic { background: var(--accent); color: var(--on-accent); }
.nc-half.wiz .ic { background: none; border: 1.5px solid var(--tag-blue); color: var(--tag-blue); }
.nc-half:hover .ic { transform: translateY(-3px) scale(1.06); }
.nc-half .ic svg { width: 22px; height: 22px; }
.nc-half .t { position: relative; font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 15px; letter-spacing: 1px; }
.nc-half.wiz .t { color: var(--ink-2); }
.nc-half:hover .t { color: var(--accent); }
.nc-half.wiz:hover .t { color: var(--tag-blue); }
.nc-half .s { position: relative; font-size: 10.5px; color: var(--ink-3); line-height: 1.6; }

/* ---------- 新建视频选择页 ---------- */
.choose-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 380px)); gap: 20px; margin-top: 26px; }
.choose-card { position: relative; overflow: hidden; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 26px 24px; min-height: 230px; border-radius: 18px; border: 1px solid var(--line); color: var(--ink); cursor: pointer; font-family: inherit; text-align: left; transition: transform .18s ease, border-color .18s ease; }
.choose-card:hover { transform: translateY(-4px); }
.choose-card .glow { position: absolute; inset: 0; pointer-events: none; opacity: .55; transition: opacity .18s ease; }
.choose-card:hover .glow { opacity: 1; }
.choose-card.free { background: linear-gradient(140deg, #eaf2ff, #eaf2ff 70%); }
.choose-card.free .glow { background: radial-gradient(240px 240px at 88% -10%, rgba(11,103,255,0.4), transparent 70%); }
.choose-card.free:hover { border-color: rgba(11,103,255,0.6); }
.choose-card.wiz { background: linear-gradient(140deg, #eaf2ff, #eaf2ff 70%); }
.choose-card.wiz .glow { background: radial-gradient(240px 240px at 88% -10%, rgba(234,242,255,0.32), transparent 70%); }
.choose-card.wiz:hover { border-color: rgba(23,92,211,0.55); }
.choose-card .ic { position: relative; width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center; }
.choose-card.free .ic { background: var(--accent); color: var(--on-accent); }
.choose-card.wiz .ic { border: 1.5px solid var(--tag-blue); color: var(--tag-blue); }
.choose-card .ic svg { width: 24px; height: 24px; }
.choose-card .t { position: relative; font-family: "Noto Sans SC", sans-serif; font-weight: 900; font-size: 20px; letter-spacing: 1px; margin-top: 4px; }
.choose-card .s { position: relative; font-size: 12.5px; color: var(--ink-2); line-height: 1.8; }
.choose-card .tag { position: relative; margin-top: auto; font-size: 11px; padding: 4px 10px; border-radius: 999px; }
.choose-card.free .tag { background: var(--tag-amber-bg); color: var(--accent); }
.choose-card.wiz .tag { background: var(--tag-blue-bg); color: var(--tag-blue); }

/* ---------- 右上角模式切换 ---------- */
.wiz-head { position: relative; }
.mode-tabs { margin-left: auto; display: flex; gap: 0; background: var(--bg); border: 1px solid var(--line); border-radius: 999px; padding: 3px; }
.mode-tab { display: flex; align-items: center; gap: 6px; padding: 7px 15px; border-radius: 999px; border: none; background: none; color: var(--ink-3); font-size: 12.5px; cursor: pointer; font-family: inherit; white-space: nowrap; transition: color .15s ease; }
.mode-tab svg { width: 15px; height: 15px; }
.mode-tab:hover { color: var(--ink); }
.mode-tab.on { background: var(--accent); color: var(--on-accent); font-weight: 500; }

/* ---------- 模式切换器：扫光 + 金色呼吸，提示这里能切 ---------- */
.mode-tabs { position: relative; overflow: hidden; border-color: rgba(11,103,255,0.38); animation: tabsGlow 3.8s ease-in-out infinite; }
@keyframes tabsGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(11,103,255,0); }
  50% { box-shadow: 0 0 16px 1px rgba(11,103,255,0.18); }
}
.mode-tabs::after { content: ''; position: absolute; top: -4px; bottom: -4px; left: 0; width: 46%;
  background: linear-gradient(105deg, transparent 8%, rgba(16,24,40,0.06) 42%, rgba(11,103,255,0.22) 58%, transparent 92%);
  transform: translateX(-130%) skewX(-18deg); pointer-events: none;
  animation: tabsSweep 3.8s ease-in-out infinite; }
@keyframes tabsSweep {
  0% { transform: translateX(-130%) skewX(-18deg); }
  46%, 100% { transform: translateX(340%) skewX(-18deg); }
}
/* 用户手已经放上来了就别再闪 */
.mode-tabs:hover { animation: none; box-shadow: 0 0 14px 1px rgba(11,103,255,0.14); }
.mode-tabs:hover::after { animation: none; opacity: 0; }

/* 模型说明（dev2 运营写的人话介绍） */
.model-note { font-size: 11px; color: var(--ink-3); line-height: 1.65; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; max-height: 96px; overflow: auto; }

/* ---------- 我的工程（主页横幅下面一排卡片；套版页工程条展开也是它） ---------- */
.wall-projects { margin: 0 0 36px; }
.wall-projects-h { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 14px; }
.wall-projects-h h2 { margin: 0; font-size: 18px; font-weight: 800; display: flex; align-items: baseline; gap: 10px; }
.wall-projects-h h2 small { font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace; font-size: 11.5px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--ink-3); font-weight: 500; }
.proj-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 22px 20px; }
.proj-card { cursor: pointer; min-width: 0; }
.proj-card:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 16px; }
.proj-media { position: relative; aspect-ratio: 3/4; border-radius: 14px; overflow: hidden; background: var(--surface-hi); transition: transform .18s ease; }
.proj-card:hover .proj-media { transform: translateY(-2px); }
.proj-card.on .proj-media { box-shadow: 0 0 0 2px var(--accent); }
.proj-media .poster { position: absolute; inset: 0; }
.proj-media .hoverpv { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .25s ease; background: #000; pointer-events: none; }
.proj-card.pv-on .hoverpv { opacity: 1; }
.proj-media.empty { background: #fff; border: 1px dashed var(--line-hi); }
.proj-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; font-size: 12.5px; color: var(--ink-3); }
.proj-empty i { width: 34px; height: 34px; border-radius: 10px; border: 1.5px dashed var(--line-hi); }
.proj-media .qp-pill { position: absolute; left: 10px; top: 10px; z-index: 2; backdrop-filter: blur(4px); }
.proj-full { position: absolute; right: 10px; bottom: 10px; z-index: 2; font-style: normal; font-size: 10.5px; padding: 2px 7px; border-radius: 999px; background: rgba(8,8,10,.62); color: #fff; }
.proj-media .tpl-proj-del { position: absolute; right: 8px; top: 8px; z-index: 3; width: 26px; height: 26px; padding: 0; border-radius: 50%; border: 0; background: rgba(8,8,10,.55); color: #fff; font-size: 15px; line-height: 1; cursor: pointer; opacity: 0; transition: opacity .15s; }
.proj-card:hover .tpl-proj-del { opacity: 1; }
.proj-media .tpl-proj-del:hover { background: #b42318; }
.proj-card > b { display: block; margin-top: 10px; font-size: 13.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.proj-card > small { display: block; margin-top: 3px; font-size: 11.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 工程页：大一点的卡，视频直接在卡上 5 秒循环 */
.proj-cards.proj-page { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 26px 22px; max-width: 1240px; margin: 0 auto; }
.proj-media video.loopv { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.proj-new .proj-media.empty { border: 1.5px dashed var(--accent); background: var(--accent-soft); }
.proj-new .proj-empty { color: var(--accent); font-weight: 600; }
.proj-new .proj-empty i.plus { border: 0; background: var(--accent); color: #fff; font-style: normal; font-size: 22px; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; }
.proj-new:hover .proj-media.empty { background: #dfe9ff; }

/* 管理员批量管理：卡片勾选框（挨着红 ✕ 右边） */
.adm-pick { position: absolute; top: 8px; left: 38px; z-index: 5; width: 24px; height: 24px; border-radius: 6px; border: 2px solid #ffffff; background: rgba(0,0,0,0.45); color: #ffffff; display: grid; place-items: center; font-size: 14px; font-weight: 700; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,0.2); }
.adm-pick.on { background: #0b67ff; border-color: #0b67ff; }
.case-card .adm-pick { opacity: 0; transition: opacity .18s ease; }
.case-card:hover .adm-pick, .case-card .adm-pick.on { opacity: 1; }
.case-card:has(.adm-pick.on), .asset-card:has(.adm-pick.on), .prod-card:has(.adm-pick.on) { outline: 2px solid #0b67ff; outline-offset: 2px; }
.adm-exit.danger { background: #C0392B; color: #ffffff; border-color: #C0392B; }
.adm-exit:disabled { opacity: .5; cursor: default; }

/* 道具库网格 */
.grid-props { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 14px; }
.prop-card .ph { border-radius: 8px; }

/* 首页两条入口：脚本生视频 / 视频生视频 */
/* 一左一右并排（用户定）：窄屏时才上下叠 */
.wall-hero-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}
.wall-hero-pair .wall-hero{margin:0;height:270px}
.wall-hero-pair .wall-hero-body{flex-direction:column;align-items:flex-start;justify-content:center;gap:18px;padding:0 34px}
.wall-hero-pair .wall-hero h2{font-size:26px}
.wall-hero-pair .wall-hero h2 em{font-size:21px}
.wall-hero-pair .wall-hero p{font-size:12.5px;line-height:1.5}
.wall-hero-pair .wall-hero-go{margin-left:24px}
@media (max-width:1100px){.wall-hero-pair{grid-template-columns:1fr}}
.wall-hero.v2v{background:linear-gradient(120deg,#0f172a 0%,#1e3a8a 55%,#2563eb 100%);color:#fff}
.wall-hero.v2v .wall-hero-veil{background:linear-gradient(90deg,rgba(15,23,42,.82) 0%,rgba(23,37,84,.55) 55%,rgba(37,99,235,.18) 100%)}
.wall-hero.v2v .wall-hero-eyebrow,.wall-hero.v2v h2,.wall-hero.v2v h2 em,.wall-hero.v2v p{color:#fff}
.wall-hero.v2v h2 em{color:#bfdbfe}
.wall-hero.v2v .wall-hero-go{background:#fff;color:#1d4ed8}

/* 左栏「工程」入口（2026-09-22 用户定：新建直接出片，历史工程挪到这里单独一格） */
.bigcard.proj { background: linear-gradient(135deg, #fdf3e9, #fdf8f2 46%, #ffffff); }
.bigcard.proj .glow { background: radial-gradient(200px 200px at 88% -6%, rgba(234,150,60,0.22), transparent 70%); }
.bigcard.proj .pat { background: repeating-linear-gradient(115deg, rgba(16,24,40,0.02) 0 2px, transparent 2px 15px); }
.bigcard.proj .wm { color: rgba(200,120,40,0.13); }
