/* ═══════════════════════════════════════════════
   铁头工作台 v1167 · 三区域（剧本分镜/视频输出/资产输出）
   深蓝海军风 · 原生 CSS 无 CDN
   ═══════════════════════════════════════════════ */
:root{
  --bg:#0a1424; --panel:#0f1d33; --panel2:#13253f; --card:#12233d;
  --border:#1e3a5f; --border2:#2a4a78;
  --text:#e9f1fb; --muted:#8fa8c7; --dim:#5d7699;
  --blue:#2f7bff; --blue2:#5a9bff; --green:#2fd28a; --amber:#ffb020; --red:#ff5a6a; --cyan:#35d0e8;
  --grad:linear-gradient(135deg,#2f7bff,#5a9bff);
  --r:10px;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;overflow:hidden}
body{background:var(--bg);color:var(--text);font-family:"Microsoft YaHei UI","PingFang SC",system-ui,sans-serif;font-size:13.5px}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font-family:inherit;color:var(--text);background:#0b1830;border:1px solid var(--border);border-radius:8px;outline:none}
input:focus,textarea:focus,select:focus{border-color:var(--blue)}
input:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#1e3a5f;border-radius:4px}
::-webkit-scrollbar-track{background:transparent}
.hidden{display:none!important}

/* ── 更新横幅 ── */
#update-banner{position:fixed;top:0;left:0;right:0;z-index:900}
.ub-bar{display:flex;align-items:center;gap:12px;padding:10px 20px;background:linear-gradient(90deg,#1e3a8a,#3b5bdb);font-weight:600}
.ub-progress-wrap{display:flex;align-items:center;gap:8px;flex:1}
.ub-progress-track{flex:1;max-width:280px;height:8px;background:rgba(0,0,0,.4);border-radius:4px;overflow:hidden}
.ub-progress-bar{height:100%;width:0;background:#a5c8ff;border-radius:4px;transition:width .3s}
.ub-progress-text{font-size:12px}
.ub-btn{background:#fff;color:#1e3a8a;border-radius:8px;padding:6px 14px;font-weight:700}
.ub-close{color:#c7d9ff;font-size:16px;padding:4px 8px}

/* ── 顶栏 ── */
#top-bar{height:52px;display:flex;align-items:center;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}
.tb-left{display:flex;align-items:center;gap:9px;min-width:190px}
.brand-logo{font-size:20px}
.brand-name{font-size:16.5px;font-weight:800;letter-spacing:.5px}
.tb-nav{flex:1;display:flex;justify-content:center;gap:34px}
.mod-btn{padding:15px 2px 13px;font-size:14px;font-weight:600;color:var(--muted);border-bottom:2.5px solid transparent;transition:.15s}
.mod-btn:hover{color:var(--text)}
.mod-btn.active{color:#fff;border-bottom-color:var(--blue);text-shadow:0 0 12px rgba(47,123,255,.5)}
.tb-right{display:flex;align-items:center;gap:12px;min-width:190px;justify-content:flex-end}
.save-badge{font-size:12px;color:var(--green);display:flex;align-items:center;gap:5px}
.save-badge i{font-style:normal;width:15px;height:15px;border-radius:50%;background:rgba(47,210,138,.15);display:inline-flex;align-items:center;justify-content:center;font-size:9px}
.tb-icon-btn{width:32px;height:32px;border-radius:8px;font-size:15px;background:var(--panel2);border:1px solid var(--border)}
.tb-icon-btn:hover{border-color:var(--blue);background:#16305a}

/* ── 主区 ── */
#ws-main{height:calc(100vh - 52px)}
.ws-module{height:100%;animation:fadeIn .2s}
/* ═══ v1376: Gemini工作区——三个锁定SKILL窗口（SetParent 子窗口覆盖 gem-dock-area）═══
   头部/内边距与剧本分镜工作台完全一致（#module-script 同款 padding+gap）；背景色统一用 --panel */
#module-gemini{display:flex;flex-direction:column;padding:10px 14px 12px;gap:10px}
#module-gemini.gem-off{display:none}
.gem-dock-btns{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.gem-dock-btns #btn-gem-reload{margin-left:auto}
.gem-dock-btns .ghost-btn.on{background:linear-gradient(135deg,#1668dc,#3b82f6);color:#fff;border-color:transparent;box-shadow:0 4px 14px rgba(22,104,220,.35)}
#gem-dock-area{position:relative;flex:1;min-height:0;border:none;border-radius:0;overflow:hidden;background:var(--panel)}
#gem-dock-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
#gem-dock-fallback.hidden{display:none}
.gem-fb-card{max-width:560px;text-align:center;padding:28px 32px;border-radius:14px;background:var(--panel2);border:1px solid var(--border)}
.gem-fb-t{font-size:20px;font-weight:700;color:#e5e9f2;margin-bottom:10px}
.gem-fb-p{font-size:13px;line-height:1.9;color:#8b93a5;margin:0}
.gem-fb-err{font-size:12px;color:#f59e0b;margin:10px 0 0}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ═══ 区域一：剧本分镜（两栏可拖拽） ═══ */
#module-script{display:flex}
.script-wrap{flex:1;display:flex;padding:12px;gap:0;min-width:0}
.script-col{flex:1;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;min-width:0}
.pane-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}
.pane-title{font-size:15px;font-weight:700}
.pane-btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;row-gap:4px}
.ghost-btn{font-size:12px;padding:5px 12px;border-radius:7px;border:1px solid var(--border2);color:var(--muted);white-space:nowrap}
/* v1334: 回收站「删除全部」危险按钮（与还原全部同尺寸同字体，红色警示文字）+ 二次确认卡片 */
.trash-danger-btn{color:#f87171;border-color:rgba(248,113,113,.35)}
.trash-danger-btn:hover{color:#fca5a5;border-color:rgba(248,113,113,.6);background:rgba(248,113,113,.08)}
.trash-clear-box{width:min(400px,90vw);padding:26px 26px 22px;text-align:center;position:relative}
.trash-clear-box .mv-close{position:absolute;top:10px;right:10px;z-index:2}
.tc-ico{font-size:34px;line-height:1;margin-bottom:12px}
.tc-title{font-size:16px;font-weight:700;color:#fff;margin-bottom:10px}
.tc-text{font-size:13px;color:var(--muted);line-height:1.7;margin-bottom:18px}
.tc-text b{color:#f87171}
.tc-btns{display:flex;gap:10px;justify-content:center}
.tc-ok-btn{font-size:12px;padding:5px 18px;border-radius:7px;border:1px solid rgba(248,113,113,.45);color:#fff;background:linear-gradient(135deg,rgba(220,38,38,.85),rgba(185,28,28,.85));cursor:pointer;white-space:nowrap;transition:all .15s}
.tc-ok-btn:hover{background:linear-gradient(135deg,rgba(239,68,68,.95),rgba(220,38,38,.95));box-shadow:0 0 12px rgba(239,68,68,.35)}
.ghost-btn:hover{color:#fff;border-color:var(--blue)}
.pane-textarea{flex:1;resize:none;border:none;border-radius:0;background:transparent;padding:16px 18px;font-size:14px;line-height:2;min-height:0}
.magic-btn{margin:12px 14px;padding:12px;border-radius:24px;background:var(--grad);color:#fff;font-size:14.5px;font-weight:700;box-shadow:0 4px 18px rgba(47,123,255,.35)}
.magic-btn:hover{filter:brightness(1.15)}
.magic-btn:disabled{opacity:.55;cursor:not-allowed}
#script-splitter,#asset-splitter{width:5px;cursor:col-resize;background:transparent;position:relative;flex-shrink:0}
#script-splitter:hover::after,#script-splitter.active::after,#asset-splitter:hover::after,#asset-splitter.active::after{content:'';position:absolute;inset:40% 1px;border-radius:2px;background:var(--blue)}

/* ═══ 视频输出 / 资产输出 共用三栏 ═══ */
.video-grid,.asset-grid{height:100%;display:grid;grid-template-columns:280px 1fr 330px;gap:12px;padding:12px}
.col-left,.col-right,.col-mid{min-height:0}
.col-left{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);display:flex;flex-direction:column}
.col-right{display:flex;flex-direction:column;gap:12px;min-width:0}
.col-mid{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);display:flex;flex-direction:column;padding:14px 16px;gap:10px;overflow-y:auto}
.col-head{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;border-bottom:1px solid var(--border)}
.col-title{font-size:14px;font-weight:700;display:flex;align-items:center;gap:7px}
.cnt-badge{font-size:11px;padding:1px 8px;border-radius:9px;background:var(--panel2);color:var(--blue2);font-weight:700}
.add-btn,.up-btn{font-size:12px;padding:6px 12px;border-radius:8px;background:var(--grad);color:#fff;font-weight:600;white-space:nowrap}
.add-btn:hover,.up-btn:hover{filter:brightness(1.15)}
.col-foot{padding:8px 13px;font-size:11px;color:var(--dim);border-top:1px solid var(--border)}

/* ── 列表卡（视频/资产 共用） ── */
.v-list{flex:1;min-height:0;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:10px}
.v-empty{margin:auto;text-align:center;color:var(--dim);font-size:12px;line-height:2;padding:20px 10px}
.v-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:9px;cursor:pointer;transition:.15s}
.v-card.current{border-color:var(--blue);box-shadow:0 0 0 1px rgba(47,123,255,.45)}
.v-card-top{display:flex;align-items:center;gap:7px;margin-bottom:7px}
.v-no{font-weight:800;font-size:13px}
.st-badge{font-size:10.5px;padding:1px 8px;border-radius:8px;font-weight:600}
.st-badge.done{color:var(--green);background:rgba(47,210,138,.12)}
.st-badge.idle{color:var(--muted);background:rgba(143,168,199,.12)}
.st-badge.running{color:var(--amber);background:rgba(255,176,32,.14)}
.st-badge.failed{color:var(--red);background:rgba(255,90,106,.14)}
.v-del{margin-left:auto;width:20px;height:20px;border-radius:6px;background:rgba(255,90,106,.12);color:var(--red);font-size:11px;display:flex;align-items:center;justify-content:center;opacity:0;transition:.15s;border:1px solid rgba(255,90,106,.35)}
.v-card:hover .v-del{opacity:1}
.v-del:hover{background:var(--red);color:#fff}
.v-thumb{width:100%;height:150px;border-radius:8px;object-fit:cover;background:#0a1220;display:block}
.v-placeholder{width:100%;height:150px;border-radius:8px;background:#0c1830;border:1px dashed var(--border2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--dim);font-size:12px}
.v-placeholder .ph-icon{font-size:26px;opacity:.55}
/* 生成中动效：旋转光环 + 渐变流光进度条（深蓝海军风） */
.gen-run{gap:7px;position:relative;overflow:hidden}
.gen-run::after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(47,123,255,.08) 50%,transparent 70%);animation:gen-sweep 1.8s linear infinite}
.gen-ring{width:34px;height:34px;border-radius:50%;border:3px solid rgba(47,123,255,.15);border-top-color:var(--blue);border-right-color:var(--blue2);animation:gen-spin .9s linear infinite}
.gen-pct{font-size:17px;font-weight:700;color:var(--blue2);letter-spacing:.5px;text-shadow:0 0 12px rgba(47,123,255,.55)}
.gen-bar{width:78%;height:5px;border-radius:3px;background:rgba(47,123,255,.14);overflow:hidden;position:relative}
.gen-fill{height:100%;border-radius:3px;background:var(--grad);position:relative;transition:width .5s ease}
.gen-fill::after{content:'';position:absolute;top:0;bottom:0;right:0;width:34px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55));animation:gen-shimmer 1.1s linear infinite}
.gen-txt{font-size:10.5px;color:var(--muted);max-width:92%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;animation:gen-pulse 1.6s ease-in-out infinite}
@keyframes gen-spin{to{transform:rotate(360deg)}}
@keyframes gen-shimmer{from{transform:translateX(34px)}to{transform:translateX(-34px)}}
@keyframes gen-sweep{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes gen-pulse{0%,100%{opacity:.65}50%{opacity:1}}
/* v1191: 视频卡内嵌底部透明悬浮控制条（播放/快退快进/拖拽进度/音量/全屏/下载） */
.v-vwrap{position:relative;border-radius:8px;overflow:hidden;background:#050b16}
.v-vwrap .v-thumb{border-radius:8px}
.v-ctrls{position:absolute;left:0;right:0;bottom:0;padding:26px 8px 7px;background:linear-gradient(transparent,rgba(3,8,18,.88));opacity:0;transition:opacity .18s;pointer-events:none}
.v-vwrap:hover .v-ctrls,.v-vwrap.playing .v-ctrls,.v-vwrap:fullscreen .v-ctrls{opacity:1;pointer-events:auto}
.v-trow{display:flex;justify-content:flex-end;margin-bottom:3px}
.v-time{font-size:10.5px;color:#d7e4ff;font-family:Consolas,monospace;text-shadow:0 1px 3px rgba(0,0,0,.85)}
.v-crow{display:flex;align-items:center;gap:5px}
.v-btn{width:22px;height:22px;border-radius:50%;background:rgba(10,20,36,.55);border:1px solid rgba(90,155,255,.4);color:#cfe0ff;font-size:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:.13s}
.v-btn:hover{background:var(--blue);border-color:var(--blue);color:#fff}
.v-btn.v-play{width:26px;height:26px;background:var(--grad);border:none;color:#fff;font-size:10px}
.v-seek{flex:1;height:16px;position:relative;display:flex;align-items:center;cursor:pointer;touch-action:none;min-width:40px}
.v-seek-track{width:100%;height:4px;border-radius:2px;background:rgba(255,255,255,.28);overflow:hidden}
.v-seek-fill{height:100%;width:0;background:linear-gradient(90deg,#3f7dff,#8fb8ff);border-radius:2px}
.v-seek-thumb{position:absolute;top:50%;left:0;width:11px;height:11px;border-radius:50%;background:#fff;box-shadow:0 0 5px rgba(0,0,0,.6);transform:translate(-50%,-50%);pointer-events:none;opacity:0;transition:opacity .15s}
.v-seek:hover .v-seek-thumb,.v-seek.scrub .v-seek-thumb{opacity:1}
.v-vwrap:fullscreen{border-radius:0;background:#000;display:flex;align-items:center;justify-content:center}
.v-vwrap:fullscreen .v-thumb{width:100%;height:100%;max-height:100vh;object-fit:contain;border-radius:0}
.v-vwrap:fullscreen .v-ctrls{padding:30px 16px 12px}
.v-vwrap:fullscreen .v-btn{width:30px;height:30px;font-size:12px}
.v-vwrap:fullscreen .v-btn.v-play{width:36px;height:36px;font-size:14px}
.v-vwrap:fullscreen .v-time{font-size:13px}
.v-fail{margin-top:6px;font-size:11px;color:var(--red);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.v-thumb{width:100%;height:150px;border-radius:8px;object-fit:cover;background:#0a1220;display:block}
/* v1169: 生成列表操作按钮 → 悬浮图片底部三个透明圆图标 */
.v-media{position:relative;border-radius:8px;overflow:hidden}
.v-media .v-thumb{border-radius:8px}
.v-hacts{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:center;gap:9px;padding:16px 0 8px;opacity:0;transition:opacity .15s;background:linear-gradient(transparent,rgba(3,8,18,.82));pointer-events:none}
.v-media:hover .v-hacts{opacity:1;pointer-events:auto}
/* v1408: 悬停操作图标捼熟——圆形扁平 → 圆角方暗玻璃徽章（白光顶膜，亮而不刺） */
.v-aic{width:30px;height:30px;border-radius:9px;color:#d5e3ff;font-size:13px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s;
  background:linear-gradient(180deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,.03) 46%,rgba(88,140,255,.10) 100%),rgba(13,24,48,.72);
  border:1px solid rgba(150,185,245,.34);box-shadow:0 3px 10px rgba(0,0,0,.32),inset 0 1px 0 rgba(255,255,255,.10)}
.v-aic:hover{background:linear-gradient(180deg,rgba(255,255,255,.20) 0%,rgba(255,255,255,.05) 46%,rgba(96,150,255,.22) 100%),rgba(30,58,110,.85);
  border-color:rgba(180,208,255,.55);color:#fff;transform:translateY(-2px)}
.v-aic.save{color:var(--green);border-color:rgba(47,210,138,.55)}
.v-aic.save:hover{background:var(--green);border-color:var(--green)}

/* ── 中栏：提示词 + 参数 ── */
.pm-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.pm-title{font-size:16px;font-weight:800;display:flex;align-items:center;gap:9px}
.no-badge{font-size:12px;padding:2px 10px;border-radius:8px;background:var(--blue);color:#fff;font-weight:800}
.pm-sub{font-size:11.5px;color:var(--dim)}
.pm-textarea{width:100%;flex:1;min-height:170px;resize:none;padding:14px;font-size:13.5px;line-height:1.9;border-radius:10px}
.pm-count{text-align:right;font-size:11px;color:var(--dim)}

/* v1188→v1283: 提示词引用条——纯头像圆角小图钉（名字收进tooltip），条体定高不变形、超出横向滚动
   v1372: 全部尺寸 em 相对化——引用条 font-size 由 JS 随主提示词框 Ctrl+滚轮同步设置，头像/胶囊/角标/删除钮随字号实时等比缩放 */
.pc-bar{display:flex;align-items:center;gap:.52em;flex-wrap:nowrap;padding:.52em .15em 0}
.pc-bar.hidden{display:none}
.pc-label{font-size:.81em;color:var(--dim);flex:none}
.pc-chip{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:2.22em;height:2.22em;padding:0;border-radius:.67em;background:rgba(38,66,104,.55);border:1px solid rgba(88,160,255,.28);overflow:visible;transition:border-color .12s,background .12s,transform .12s}
.pc-chip:hover{border-color:rgba(120,200,255,.65);background:rgba(48,84,132,.6);transform:translateY(-1px)}
.pc-chip.uncited{opacity:.65}
.pc-ava{width:2.22em;height:2.22em;border-radius:.67em;object-fit:cover;flex:0 0 auto;display:block;background:rgba(120,170,255,.12);border:none}
.pc-ava.au{display:inline-flex;align-items:center;justify-content:center;font-size:1.04em;background:rgba(47,124,255,.16);border:1px solid rgba(120,170,255,.3)}
.pc-chip i{position:absolute;right:-.56em;bottom:-.44em;font-style:normal;font-size:.67em;min-width:1.56em;height:1.56em;line-height:1.56em;text-align:center;border-radius:999px;background:linear-gradient(135deg,#2f7cff,#31c8ff);color:#fff;z-index:2;box-shadow:0 1px 3px rgba(0,0,0,.45)}
/* v1283: 红白圆形X——头像右上角悬浮，白色圆底红边红叉，悬停填红（em 相对自身 .67em 字号换算） */
.pc-x{position:absolute;top:-.67em;right:-.67em;width:1.78em;height:1.78em;border-radius:50%;background:#fff;border:.22em solid #ef4444;color:#ef4444;font-size:.67em;font-weight:700;line-height:1.22em;text-align:center;cursor:pointer;padding:0;box-shadow:0 2px 5px rgba(0,0,0,.5);transition:transform .12s,background .12s,color .12s;z-index:2}
.pc-x:hover{background:#ef4444;color:#fff;transform:scale(1.18)}
.pc-add{display:inline-flex;align-items:center;justify-content:center;width:2.22em;height:2.22em;border-radius:.67em;border:.11em dashed rgba(140,180,255,.5);background:transparent;color:#9fc0ff;font-size:1.26em;line-height:1;cursor:pointer;flex:0 0 auto;transition:all .12s}
.pc-add:hover{border-color:#2f7cff;color:#fff;background:rgba(47,124,255,.2)}
#ref-hover-preview{position:fixed;z-index:3200;pointer-events:none;opacity:0;transition:opacity .13s;background:rgba(9,17,31,.97);border:1px solid rgba(120,170,255,.4);border-radius:10px;padding:6px;box-shadow:0 10px 32px rgba(0,0,0,.55)}
#ref-hover-preview img{display:block;width:188px;max-height:150px;object-fit:contain;border-radius:6px}
#ref-hover-preview.show{opacity:1}

/* v1189: 行内引用编辑器（contenteditable）——参考图胶囊嵌入提示词名字前
   v1372: 胶囊尺寸 em 相对化——随所在提示词框 Ctrl+滚轮字号实时等比缩放 */
.pm-editor{overflow-y:auto;outline:none;white-space:pre-wrap;word-break:break-word;cursor:text}
.pm-editor:empty::before{content:attr(data-placeholder);color:var(--dim);pointer-events:none}
.pm-editor:focus{border-color:rgba(88,160,255,.45)}
.pi-cite{display:inline-flex;align-items:center;gap:.33em;padding:0 .67em 0 .17em;margin:0 .33em;vertical-align:-.5em;border-radius:999px;background:rgba(48,84,132,.55);border:1px solid rgba(88,160,255,.3);font-size:.89em;color:#cfe6ff;font-weight:600;cursor:default;user-select:none}
.pi-cite img{width:1.65em;height:1.65em;border-radius:50%;object-fit:cover;border:1px solid rgba(120,190,255,.5)}
.pm-count.over{color:#ff6b6b;font-weight:700}
.param-panel{background:var(--panel2);border:1px solid var(--border);border-radius:var(--r);padding:13px 15px;display:flex;flex-direction:column;gap:11px}
.param-title{font-size:13.5px;font-weight:700}
.param-row{display:flex;gap:12px;flex-wrap:wrap}
.param-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.param-field.grow{flex:1}
.param-field label{font-size:11.5px;color:var(--muted)}
.param-field select,.param-field input{padding:8px 11px;font-size:12.5px;min-width:0}
.seg-group{display:flex;gap:0;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.seg-btn{padding:8px 13px;font-size:12px;color:var(--muted);background:#0b1830;border-right:1px solid var(--border)}
.seg-btn:last-child{border-right:none}
.seg-btn.active{background:var(--blue);color:#fff;font-weight:700}
.stepper{display:flex;align-items:center;gap:0;background:#0b1830;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.stepper input{width:44px;border:none;background:transparent;text-align:center;padding:8px 0;font-size:13px;-moz-appearance:textfield}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none}
.step-unit{font-size:11.5px;color:var(--muted);padding-right:6px}
.step-btns{display:flex;flex-direction:column;border-left:1px solid var(--border)}
.step-btn{font-size:8px;padding:3px 7px;color:var(--muted);line-height:1}
.step-btn:hover{color:#fff;background:var(--panel2)}
.step-btn.up{border-bottom:1px solid var(--border)}
.param-hint{font-size:11px;color:var(--dim);text-align:right}
.gen-btn{margin-top:auto;padding:13px;border-radius:10px;background:var(--grad);color:#fff;font-size:14.5px;font-weight:800;box-shadow:0 4px 18px rgba(47,123,255,.3)}
.gen-btn:hover{filter:brightness(1.15)}
.gen-btn:disabled{opacity:.55;cursor:not-allowed}
.gen-btn.slim{margin-top:0;padding:9px 18px;font-size:13px}
.an-row{display:flex;gap:12px}

/* ── 右栏：参考区 + 资产库 ── */
.ref-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);display:flex;flex-direction:column;flex:1.25;min-height:0}
/* 参考区 ⇅ 资产库 纵向拖拽分隔条 */
#ref-lib-splitter{height:7px;border-radius:4px;background:rgba(42,74,120,.35);cursor:row-resize;flex-shrink:0;position:relative;transition:background .15s}
#ref-lib-splitter::after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:2px;border-radius:1px;background:var(--border2)}
#ref-lib-splitter:hover{background:rgba(47,123,255,.4)}
#ref-lib-splitter:hover::after{background:var(--blue2)}
#ref-lib-splitter.dragging{background:rgba(47,123,255,.55);box-shadow:0 0 10px rgba(47,123,255,.45)}
#ref-lib-splitter.dragging::after{background:#fff;height:3px;width:60px}
.ref-sub{padding:7px 13px;font-size:11.5px;color:var(--muted)}
.ref-grid{flex:1;min-height:0;overflow-y:auto;padding:4px 13px;display:grid;grid-template-columns:repeat(3,1fr);gap:9px;align-content:start}
.ref-card{position:relative;border-radius:9px;overflow:hidden;border:1px solid var(--border);background:var(--card)}
.ref-card img{width:100%;height:74px;object-fit:cover;display:block}
.ref-card .rc-name{position:absolute;left:0;right:0;bottom:0;padding:3px 6px;font-size:10px;background:linear-gradient(transparent,rgba(5,12,24,.92));color:#cfe1f8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ref-card .rc-del{position:absolute;top:4px;right:4px;width:18px;height:18px;border-radius:5px;background:rgba(5,12,24,.8);color:var(--red);font-size:10px;display:flex;align-items:center;justify-content:center;opacity:0;transition:.15s}
.ref-card:hover .rc-del{opacity:1}
.ref-card.audio{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px 6px;min-height:74px}
.ref-card.audio .ra-ic{font-size:16px}
.ref-card.audio .ra-name{font-size:10px;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ref-card.audio .ra-dur{font-size:9.5px;color:var(--dim);font-family:Consolas,monospace}
.ref-card.tbd{border-style:dashed;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--dim);font-size:10.5px;min-height:74px;cursor:pointer}
.ref-card.tbd:hover{color:var(--muted);border-color:var(--border2)}
.ref-add-row{padding:9px 13px}
.ref-add-btn{width:100%;padding:9px;border-radius:9px;border:1.5px dashed var(--border2);color:var(--muted);font-size:12.5px}
.ref-add-btn:hover{color:var(--blue2);border-color:var(--blue)}
.ref-foot{padding:8px 13px;font-size:11px;color:var(--dim);border-top:1px solid var(--border)}
.lib-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);display:flex;flex-direction:column;flex:1;min-height:0}
.lib-panel.full{flex:1}
.lib-search{margin:10px 13px 0;padding:8px 12px;font-size:12px}
.lib-tabs{display:flex;gap:6px;padding:10px 13px 8px}
.lib-tab{font-size:12px;padding:5px 14px;border-radius:8px;background:var(--panel2);color:var(--muted);border:1px solid var(--border)}
.lib-tab.active{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.lib-grid{flex:1;min-height:0;overflow-y:auto;padding:4px 13px 12px;display:grid;grid-template-columns:repeat(2,1fr);gap:10px;align-content:start}
.lib-grid::-webkit-scrollbar,.ref-grid::-webkit-scrollbar,.v-list::-webkit-scrollbar{width:8px}
.lib-grid::-webkit-scrollbar-thumb,.ref-grid::-webkit-scrollbar-thumb,.v-list::-webkit-scrollbar-thumb{background:rgba(47,123,255,.35);border-radius:4px}
.lib-grid::-webkit-scrollbar-thumb:hover,.ref-grid::-webkit-scrollbar-thumb:hover,.v-list::-webkit-scrollbar-thumb:hover{background:rgba(47,123,255,.65)}
.lib-grid::-webkit-scrollbar-track,.ref-grid::-webkit-scrollbar-track,.v-list::-webkit-scrollbar-track{background:transparent}
/* 资产库垂直滚动条统一加宽（v1197 视频区 → v1212 扩展至资产输出区 #lib2-grid 与资产选择器弹窗 #ap-grid）：
   14px 宽可见轨道 + 高亮滑块，鼠标可拖拽滑块、滚轮/触摸滑动直接滚；内容超出可视高度时滚动条常显 */
#lib-grid::-webkit-scrollbar,#lib2-grid::-webkit-scrollbar,#ap-grid::-webkit-scrollbar{width:14px}
#lib-grid::-webkit-scrollbar-thumb,#lib2-grid::-webkit-scrollbar-thumb,#ap-grid::-webkit-scrollbar-thumb{background:rgba(47,123,255,.55);border-radius:7px;border:3px solid transparent;background-clip:padding-box}
#lib-grid::-webkit-scrollbar-thumb:hover,#lib2-grid::-webkit-scrollbar-thumb:hover,#ap-grid::-webkit-scrollbar-thumb:hover{background:rgba(47,123,255,.95);border-color:transparent}
#lib-grid::-webkit-scrollbar-track,#lib2-grid::-webkit-scrollbar-track,#ap-grid::-webkit-scrollbar-track{background:rgba(42,74,120,.22);border-radius:7px}
/* v1214: 滚动条强制常显兜底——WebView2（Edge 内核）跟随 Windows「自动隐藏滚动条」设置时会完全忽略
   ::-webkit-scrollbar 自定义（用户实测啥都看不见）；标准属性 scrollbar-color 不受该设置影响、必定渲染。
   scrollbar-width 必须写具体值（v1213 的 auto 无效，Edge 系内核下 auto 仍保留自动隐藏行为），
   非 auto 值强制禁用 overlay → 滑块常驻显示。亮蓝滑块不透明 / 深蓝轨道，任何系统设置下肉眼可见 */
#lib-grid,#lib2-grid,#ap-grid{scrollbar-width:14px;scrollbar-color:#3d7bff #14243d}
.lib-grid.tall{grid-template-columns:repeat(2,1fr)}
.lib-empty{grid-column:1/-1;text-align:center;color:var(--dim);font-size:11.5px;line-height:2;padding:24px 0}
.lib-card{position:relative;border-radius:10px;overflow:hidden;border:1px solid var(--border);cursor:pointer;background:var(--card);transition:transform .15s,border-color .15s,box-shadow .15s}
.lib-card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.4)}
.lib-card img{width:100%;height:132px;object-fit:cover;display:block;background:#0a1220}
.lib-card .lc-name{position:absolute;left:0;right:0;bottom:0;padding:4px 8px;font-size:11.5px;background:linear-gradient(transparent,rgba(5,12,24,.92));color:#cfe1f8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 资产卡悬停操作（命名/删除） */
.lib-card .lc-ops{position:absolute;top:5px;right:5px;display:flex;gap:4px;opacity:0;transition:.15s}
.lib-card:hover .lc-ops{opacity:1}
.lc-btn{width:20px;height:20px;border-radius:6px;background:rgba(5,12,24,.85);color:var(--blue2);font-size:10.5px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(90,155,255,.4)}
.lc-btn:hover{background:var(--blue);color:#fff}
.lc-btn.danger{color:var(--red);border-color:rgba(255,90,106,.45)}
.lc-btn.danger:hover{background:var(--red);color:#fff}
.lc-btn.import{color:var(--green);border-color:rgba(47,210,138,.45)}
.lc-btn.import:hover{background:var(--green);color:#fff}
.lc-rename{width:100%;padding:3px 6px;font-size:11.5px;background:rgba(5,12,24,.9);border:1px solid var(--blue);border-radius:6px;color:#fff;outline:none}
/* 音频资产卡 */
.lc-aud{width:100%;height:100%;min-height:86px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:linear-gradient(135deg,#132a4a,#0e1f38);font-size:26px}
.lc-aud i{font-style:normal;font-size:11px;color:var(--muted);max-width:90%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lc-audtag{position:absolute;left:5px;top:5px;padding:2px 6px;border-radius:5px;background:rgba(53,208,232,.18);color:var(--cyan);font-size:10px;border:1px solid rgba(53,208,232,.4)}

/* ═══ 中央资产库选择器（多选打钩导入参考区） ═══ */
.ap-mask{position:fixed;inset:0;z-index:1300;background:rgba(3,8,18,.72);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}
.ap-mask.hidden{display:none}
.ap-box{width:1120px;max-width:94vw;height:82vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border2);border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.55);overflow:hidden}
.ap-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);background:linear-gradient(135deg,rgba(47,123,255,.12),transparent)}
.ap-title{font-size:15px;font-weight:700;color:var(--text)}
.ap-x{width:30px;height:30px;border-radius:8px;border:1px solid var(--border2);background:var(--card);color:var(--muted);font-size:13px}
.ap-x:hover{background:var(--red);color:#fff;border-color:var(--red)}
.ap-tabs{display:flex;gap:7px;padding:11px 18px;border-bottom:1px solid var(--border)}
.ap-grid{flex:1;overflow-y:auto;padding:14px 18px;display:grid;grid-template-columns:repeat(6,1fr);gap:12px;align-content:start}
.ap-card{position:relative;border-radius:10px;overflow:hidden;border:2px solid var(--border);background:var(--card);cursor:pointer;transition:.13s;aspect-ratio:1/.82}
.ap-card:hover{border-color:var(--blue2);transform:translateY(-2px)}
.ap-card img{width:100%;height:100%;object-fit:cover;display:block}
.ap-card.sel{border-color:var(--green);box-shadow:0 0 0 2px rgba(47,210,138,.35),0 0 16px rgba(47,210,138,.2)}
.ap-card.inref{opacity:.55;cursor:default}
.ap-check{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;background:rgba(5,12,24,.8);border:1.5px solid var(--border2);color:transparent;font-size:12px;display:flex;align-items:center;justify-content:center}
.ap-card.sel .ap-check{background:var(--green);border-color:var(--green);color:#fff}
.ap-kind{position:absolute;left:6px;top:6px;padding:2px 7px;border-radius:5px;background:rgba(5,12,24,.75);color:var(--blue2);font-size:10px;border:1px solid rgba(90,155,255,.35)}
.ap-inref{position:absolute;left:0;right:0;top:38%;text-align:center;font-size:11px;color:var(--amber)}
.ap-name{position:absolute;left:0;right:0;bottom:0;padding:14px 8px 6px;font-size:11.5px;color:#fff;background:linear-gradient(transparent,rgba(3,8,18,.88));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ap-aud{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:linear-gradient(135deg,#132a4a,#0e1f38);font-size:30px}
.ap-aud-name{font-size:11px;color:var(--muted);max-width:88%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ap-foot{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-top:1px solid var(--border);background:var(--panel2)}
.ap-count{font-size:12.5px;color:var(--muted)}
.ap-count b{color:var(--green);font-size:15px;margin:0 2px}
.ap-btns{display:flex;gap:9px}
/* 参考卡命名按钮 */
.ref-card .rc-edit{position:absolute;top:4px;right:26px;width:18px;height:18px;border-radius:5px;background:rgba(5,12,24,.8);color:var(--blue2);font-size:10px;display:flex;align-items:center;justify-content:center;opacity:0;transition:.15s;border:1px solid rgba(90,155,255,.4)}
.ref-card:hover .rc-edit{opacity:1}
.ref-card .rc-edit:hover{background:var(--blue);color:#fff}

/* ── 媒体预览弹窗 ── */
.mv-mask{position:fixed;inset:0;z-index:800;background:rgba(4,10,20,.88);display:flex;align-items:center;justify-content:center}
.mv-box{width:min(960px,92vw);background:var(--panel);border:1px solid var(--border2);border-radius:14px;overflow:hidden}
.mv-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border)}
.mv-title{font-weight:700;font-size:14px}
.mv-btns{display:flex;gap:8px;margin-left:auto}
.mv-close{font-size:15px;color:var(--muted);padding:4px 8px}
.mv-close:hover{color:#fff}
.mv-body{padding:16px;display:flex;align-items:center;justify-content:center}
.mv-body video{width:100%;max-height:66vh;background:#000;border-radius:8px}
.mv-body img{max-width:100%;max-height:66vh;border-radius:8px}

/* ═══════════ 模态通用 ═══ */
.modal-backdrop{position:fixed;inset:0;z-index:1000;background:rgba(2,6,14,.72);display:flex;align-items:center;justify-content:center}
#modal{position:fixed;inset:0;z-index:1000;background:rgba(2,6,14,.72);display:flex;align-items:center;justify-content:center}
.modal-box{width:440px;max-height:86vh;overflow-y:auto;background:var(--panel);border:1px solid var(--border2);border-radius:14px;padding:20px}
.modal-box h3{font-size:16px;margin-bottom:14px}
.field{margin-bottom:10px}
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}
.field input,.field select{width:100%;padding:9px 11px;font-size:13px}
.actions{display:flex;gap:10px;margin-top:14px}
.actions button{flex:1;padding:10px;border-radius:9px;border:1px solid var(--border2);font-size:13.5px;font-weight:600}
.actions .primary{background:var(--grad);border:none;color:#fff}
.mini-btn{padding:6px 12px;border-radius:8px;font-size:12px;font-weight:600;border:1px solid var(--border2);background:var(--panel2);white-space:nowrap}
.mini-btn.primary{background:var(--grad);border:none;color:#fff}
.mini-btn.danger{border-color:rgba(255,90,106,.5);color:var(--red)}
.mini-btn:disabled{opacity:.45;cursor:not-allowed}
.mini-btn:hover:not(:disabled){filter:brightness(1.2)}

/* ── 设置侧板 ── */
#settings-panel{position:fixed;top:52px;right:0;bottom:0;width:560px;z-index:950;background:var(--panel);border-left:1px solid var(--border2);box-shadow:-16px 0 40px rgba(0,0,0,.5);display:flex;flex-direction:column}
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}
.panel-head-text h3{font-size:15.5px}
.panel-head-sub{font-size:11.5px;color:var(--muted)}
.panel-head .close{font-size:16px;color:var(--muted);padding:4px 8px}
.panel-head .close:hover{color:#fff}
.panel-body{flex:1;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:16px}
.cfg-section{background:var(--panel2);border:1px solid var(--border);border-radius:12px;padding:14px}
.cfg-sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cfg-sec-title{display:block;font-weight:700;font-size:13.5px}
.cfg-sec-sub{display:block;font-size:11px;color:var(--dim);margin-top:3px}
.ch-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ch-input{padding:8px 10px;font-size:12.5px}
#ch-select{flex:1;min-width:130px}
.ch-form{margin-top:12px;padding:12px;background:var(--panel);border-radius:10px;display:flex;flex-direction:column;gap:10px}
.ch-form-row{display:flex;gap:10px}
.ch-field{display:flex;flex-direction:column;gap:5px}
.ch-field.ch-grow{flex:1}
.ch-label{font-size:11.5px;color:var(--muted)}
.ch-tip{font-style:normal;font-size:10.5px;color:var(--dim);margin-left:4px}
.ch-key-wrap{display:flex;gap:6px}
.ch-key{flex:1}
.ch-eye{padding:0 10px;border:1px solid var(--border);border-radius:8px;font-size:13px}
.ch-form-acts{display:flex;gap:8px;flex-wrap:wrap}
.ch-preset-btn{border-color:var(--amber);color:var(--amber)}
.ch-row-msg{font-size:12px;padding:7px 10px;border-radius:8px;background:var(--panel)}
.ch-row-msg.err{color:var(--red)}
.ch-row-msg.ok{color:var(--green)}
.fetch-status{font-size:12px;color:var(--muted);margin:8px 0}
.fetch-list{margin-top:8px;max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.import-btn{margin-top:10px;width:100%}
.fl-item{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--panel);border:1px solid var(--border);border-radius:8px;font-size:12px}
.fl-item input{width:15px;height:15px}
.fl-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fl-kind{font-size:10px;color:var(--dim);flex-shrink:0}
.model-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--panel);border:1px solid var(--border);border-radius:10px;margin-bottom:8px}
.mi-info{flex:1;min-width:0}
.mi-name{font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mi-meta{font-size:11px;color:var(--dim);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mi-kind{font-size:10px;padding:2px 7px;border-radius:5px;font-weight:700;flex-shrink:0}
.mi-kind.video{background:rgba(47,123,255,.16);color:#8cb8ff}
.mi-kind.image{background:rgba(47,210,138,.16);color:#7fe9bd}
.mi-kind.text{background:rgba(255,176,32,.16);color:#ffcf7a}
.mi-kind.other{background:rgba(143,168,199,.16);color:var(--muted)}
.model-group-title{font-size:11.5px;color:var(--dim);margin:10px 0 6px;font-weight:700}
.fetch-field .fetch-btn{width:100%;padding:9px;border-radius:8px;border:1px dashed var(--border2);color:var(--blue2);font-size:12.5px}

/* ── 用户中心 ── */
#user-profile-modal,#cloud-config-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;/* v1264: 补 flex 居中（auth-modal 同款），修复弹窗内容钉在左上角 */}
/* v1294: 普通用户中心改横屏宽框——480px 窄框压内容竖排，改 860px 自适应居中 */
.user-modal-box{position:relative;z-index:1002; /* v1262: 压过 .modal-backdrop(1000)，修复黑影+点哪都关 */ width:min(860px,94vw);max-height:88vh;overflow-y:auto;background:var(--panel);border:1px solid var(--border2);border-radius:16px;box-shadow:0 18px 60px rgba(0,0,0,.45)}
.user-modal-header{padding:18px 22px 10px}
.title-wrap{display:flex;gap:12px;align-items:center}
.modal-icon{font-size:22px}
.title-wrap h3{font-size:17px}
.sub-hint{font-size:11.5px;color:var(--muted);margin-top:2px}
.user-modal-body{padding:8px 22px 16px;display:flex;flex-direction:column;gap:14px}
.user-avatar-row{display:flex;gap:16px;align-items:center}
.avatar-preview-wrap{position:relative}
.big-avatar{width:64px;height:64px;border-radius:50%;background:var(--grad);display:flex;align-items:center;justify-content:center;font-size:28px}
.avatar-edit-tag{position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);font-size:9.5px;padding:2px 8px;border-radius:6px;background:var(--panel2);border:1px solid var(--border2);white-space:nowrap;color:var(--muted)}
.avatar-edit-tag:hover{color:#fff}
.avatar-meta{flex:1;display:flex;flex-direction:column;gap:8px}
.user-name-input{padding:8px 12px;font-size:13.5px;font-weight:700;width:100%}
.activation-status-badge{display:flex;align-items:center;gap:7px;font-size:12px;padding:6px 12px;border-radius:8px;background:rgba(47,210,138,.1);color:#7fe9bd;border:1px solid rgba(47,210,138,.3)}
.activation-status-badge .dot{width:8px;height:8px;border-radius:50%;background:var(--green)}
.activation-status-badge.inactive{background:rgba(255,90,106,.08);color:#ffaab4;border-color:rgba(255,90,106,.3)}
.activation-status-badge.inactive .dot{background:var(--red)}
.activation-card{background:var(--panel2);border:1px solid var(--border);border-radius:12px;padding:14px}
.activation-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.act-title{font-weight:700;font-size:13px}
.act-state-tag{font-size:11px;padding:2px 10px;border-radius:6px;background:rgba(47,210,138,.12);color:#7fe9bd;font-weight:600}
.act-state-tag.no{background:rgba(255,90,106,.12);color:#ffaab4}
.act-code-box{max-height:110px;overflow-y:auto;background:var(--panel);border-radius:9px;padding:8px;margin-bottom:10px}
.act-codes-list{display:flex;flex-direction:column;gap:5px}
.act-code-item{font-size:11.5px;padding:6px 9px;background:var(--panel2);border-radius:7px;font-family:Consolas,monospace;color:var(--muted);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.act-code-item:hover{color:#fff}
.act-code-empty{font-size:11.5px;color:var(--dim);text-align:center;padding:8px}
.act-input-group{display:flex;gap:8px}
.act-code-input{flex:1;padding:9px 12px;font-size:12.5px}
.act-submit-btn{padding:9px 18px;border-radius:8px;background:var(--grad);color:#fff;font-weight:700;font-size:12.5px}
.act-hint-msg{margin-top:8px;font-size:12px;color:var(--red)}
.act-hint-msg.ok{color:var(--green)}
#admin-panel{border-top:1px dashed var(--border2);padding-top:12px;display:flex;flex-direction:column;gap:8px}
.ap-head{display:flex;align-items:center;justify-content:space-between}
.ap-title{font-weight:800;font-size:13.5px;color:var(--amber)}
.ap-mini-btn{font-size:11px;padding:4px 10px;border-radius:7px;border:1px solid var(--border2);color:var(--muted)}
.ap-mini-btn:hover{color:#fff;border-color:var(--blue)}
.ap-mini-btn.danger{color:var(--red);border-color:rgba(255,90,106,.4)}
.ap-copy-btn:hover{border-color:var(--green);color:#7fe9bd}
.ap-cloud-cfg-btn:hover{border-color:var(--cyan);color:#7be3f2}
.ap-publish-btn{background:var(--grad);border:none;color:#fff;font-weight:700;padding:7px 14px}
.ap-machine-line,.ap-cloud-line{font-size:11.5px;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ap-machine-line code{font-size:11px;color:var(--text)}
.ap-cloud-local{color:var(--amber)}
.ap-cloud-on{color:var(--green)}
.ap-sec-title{font-size:12px;font-weight:700;margin-top:6px}
.ap-ban-hint{font-size:10.5px;color:var(--dim);margin-bottom:2px}
.ap-machine-ban{display:flex;gap:6px;margin:4px 0 6px}
.ap-machine-ban input{flex:1;padding:7px 10px;font-size:11.5px;min-width:0}
.ap-version-status{margin-top:6px;font-size:11.5px;color:var(--muted);line-height:1.6}
.user-modal-footer{padding:12px 22px;border-top:1px solid var(--border)}
.full-btn{width:100%;padding:11px;border-radius:10px;background:var(--grad);color:#fff;font-weight:700;font-size:13.5px;border:none}

/* 云配置 */
.cloud-config-box{position:relative;z-index:1002;/* v1264: 压过 .modal-backdrop(1000)，修复云端配置弹窗黑屏点不动 */width:460px;background:var(--panel);border:1px solid var(--border2);border-radius:14px}
.cc-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border)}
.cc-title{font-weight:800;font-size:14.5px}
.cc-close{color:var(--muted);font-size:15px}
.cc-body{padding:16px 18px;display:flex;flex-direction:column;gap:10px}
.cc-field{display:flex;flex-direction:column;gap:5px}
.cc-field label{font-size:12px;color:var(--muted)}
.cc-field input{padding:9px 11px;font-size:12.5px}
#cl-sync-status{font-size:11.5px;color:var(--muted);min-height:16px}
.cc-steps{background:var(--panel2);border-radius:10px;padding:12px;font-size:11.5px;color:var(--muted);line-height:1.9}
.cc-steps-title{font-weight:700;color:var(--text);margin-bottom:4px}
.cc-footer{display:flex;gap:10px;padding:12px 18px;border-top:1px solid var(--border)}
.cc-footer .ap-mini-btn{flex:1;padding:9px}
.cc-save-btn{flex:1;border-radius:9px;background:var(--grad);border:none;color:#fff;font-weight:700;font-size:12.5px}

/* 封禁遮罩 */
#ban-overlay{position:fixed;inset:0;z-index:2000;background:rgba(3,8,16,.97);display:flex;align-items:center;justify-content:center}
.ban-box{text-align:center;padding:50px}
.ban-icon{font-size:64px;margin-bottom:16px}
.ban-title{font-size:26px;font-weight:900;color:var(--red);margin-bottom:10px}
.ban-reason{font-size:14px;color:var(--text);margin-bottom:8px}
.ban-tip{font-size:12px;color:var(--dim)}

/* Toast */
/* v1331: toast 跑马灯隐形限制框——六区同点位（JS 锚定），背景完全融入工作台（透明无边框无投影），
   「看不出有个框」但内容严格裁剪在框内不越界；白字从左往右 3.5s 横移，
   右端吞字效果：mask 渐隐带让文字一个字一个字逐渐消失，不是突然消失 */
#toast-wrap{position:fixed;top:40px;left:30%;width:41%;min-width:320px;max-width:680px;height:20px;z-index:3000;display:flex;align-items:center;padding:0 8px;background:transparent;border:none;box-shadow:none;overflow:hidden;pointer-events:none}
.tm-row{position:relative;flex:1;height:12px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000 0%,#000 74%,transparent 97%);mask-image:linear-gradient(90deg,#000 0%,#000 74%,transparent 97%)}
.tm-msg{position:absolute;left:0;top:0;transform:translateX(-100%);white-space:nowrap;color:#fff;font-size:12px;line-height:12px;text-shadow:0 1px 2px rgba(0,0,0,.65);animation:tmScroll 3.5s linear forwards}
@keyframes tmScroll{from{left:0}to{left:100%}}

/* ⊕ 参考添加弹出菜单 */
.ref-menu{position:fixed;z-index:1200;min-width:158px;background:var(--panel2);border:1px solid var(--border2);border-radius:10px;padding:6px;box-shadow:0 10px 30px rgba(0,0,0,.55);display:flex;flex-direction:column;gap:2px}
.ref-menu button{text-align:left;padding:8px 12px;border-radius:7px;font-size:12.5px;color:var(--text);background:transparent;border:none;white-space:nowrap}
.ref-menu button:hover{background:rgba(47,123,255,.16);color:#fff}

/* ═══════════ 区域四：工作台设置（全屏三栏） ═══ */
.set-grid{height:100%;display:grid;grid-template-columns:360px 1fr 380px;gap:12px;padding:12px}  /* v1398: 左栏拉宽 300→360，激活用户管理信息更完整 */
.st-col{min-height:0;display:flex}
.st-panel{flex:1;min-height:0;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:9px}
.st-title{font-size:15.5px;font-weight:800}
.st-title.sm{font-size:13.5px}
.st-title-row{display:flex;align-items:center;gap:8px}
.st-title-row .st-title{flex:1}
.st-add-btn{font-size:12px;padding:6px 12px;border-radius:8px;background:var(--panel2);border:1px solid var(--border2);color:var(--muted);white-space:nowrap}
.st-add-btn:hover{color:#fff;border-color:var(--blue)}
.st-add-btn.danger:hover{color:var(--red);border-color:rgba(255,90,106,.5)}
.st-add-btn:disabled{opacity:.4;cursor:not-allowed}
.st-label{font-size:12px;color:var(--muted);margin-top:2px}
.st-tip{font-style:normal;font-size:10.5px;color:var(--dim);margin-left:4px}
.st-input{width:100%;padding:9px 11px;font-size:12.5px;background:var(--card);border:1px solid var(--border);border-radius:9px;color:var(--text)}
.st-input:focus{outline:none;border-color:var(--blue)}
/* v1216: 设置面板 textarea 防压缩——.st-panel 是纵向 flex 容器，子项默认 flex-shrink:1，
   窗口高度不足时 textarea（最软子项）被压成一条线（rows 属性失效），且滚动无法恢复（布局层压缩）。
   flex-shrink:0 + 最小高度双保险：内置 150px / 自定义 110px，内容多时面板整体滚动（st-panel 本身 overflow-y:auto） */
textarea.st-input{resize:vertical;line-height:1.6;font-family:inherit;flex-shrink:0}
#skb-content{min-height:150px}
#sk-content{min-height:110px}
.st-tabs{display:flex;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:4px;gap:4px}
.st-tab{flex:1;padding:8px 0;border-radius:8px;font-size:13px;color:var(--muted);text-align:center}
.st-tab.active{background:var(--grad);color:#fff;font-weight:700}
.st-tab:hover:not(.active){color:#fff}

/* 左：用户激活 */
.su-row{display:flex;align-items:center;gap:12px;margin:4px 0 6px}
.su-avatar{width:52px;height:52px;border-radius:50%;background:var(--panel2);border:1px solid var(--border2);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0;overflow:hidden}
.su-meta{flex:1}
.su-label{font-size:11px;color:var(--dim)}
.su-name{font-size:15px;font-weight:700;margin-top:2px}
.su-badge{font-size:11px;padding:4px 10px;border-radius:9px;white-space:nowrap}
.su-badge.yes{background:rgba(47,210,138,.12);color:#7fe9bd;border:1px solid rgba(47,210,138,.3)}
.su-badge.no{background:rgba(255,176,32,.1);color:var(--amber);border:1px solid rgba(255,176,32,.3)}
.su-code-row{display:flex;gap:6px}
.su-code-row input{flex:1;padding:9px 11px;font-size:12.5px;background:var(--card);border:1px solid var(--border);border-radius:9px;color:var(--text)}
.su-code-row input:focus{outline:none;border-color:var(--blue)}
.su-code-row button{padding:0 11px;border:1px solid var(--border);border-radius:9px;font-size:13px}
.su-btn{margin-top:2px;padding:11px;border-radius:10px;background:var(--grad);color:#fff;font-size:14px;font-weight:800;box-shadow:0 4px 16px rgba(47,123,255,.3)}
.su-btn:hover{filter:brightness(1.15)}
.su-btn:disabled{opacity:.55;cursor:not-allowed}
.su-info-rows{margin-top:6px;border-top:1px dashed var(--border);padding-top:12px;display:flex;flex-direction:column;gap:11px}
.su-info{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600}
.si-ic{font-size:15px}
.si-k{color:var(--muted);width:76px;flex-shrink:0;font-size:14.5px;font-weight:700}
.si-v{color:var(--text);font-weight:700}
.si-v.mono{font-family:Consolas,monospace;font-size:13px;letter-spacing:.3px;word-break:break-all}
.su-admin-tools{margin-top:12px;border-top:1px dashed var(--border);padding-top:12px}
.sat-title{font-size:14px;font-weight:800;color:var(--blue2)}
.sat-label{font-size:12.5px;color:var(--text);font-weight:700;margin-top:11px}
.sat-label i{font-style:normal;font-size:11px;color:var(--dim);font-weight:400;margin-left:4px}
.sat-row{display:flex;gap:6px;margin-top:6px}
.sat-row input{flex:1;min-width:0;padding:8px 10px;border-radius:9px;border:1px solid var(--border);background:var(--panel2);color:var(--text);font-size:12px}
.sat-ic{width:38px;height:34px;flex-shrink:0;border:1px solid var(--border);border-radius:9px;background:var(--panel2);font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}
.sat-ic:hover{border-color:var(--blue);background:rgba(47,123,255,.12);transform:translateY(-1px)}
.sat-ic.danger:hover{border-color:#ff5d6c;background:rgba(255,93,108,.14)}
.sat-hint{font-size:10.5px;color:var(--dim);margin-top:9px;line-height:1.6}
.su-tip-card{margin-top:auto;background:rgba(47,123,255,.07);border:1px solid rgba(47,123,255,.25);border-radius:10px;padding:11px 13px}
.suc-head{font-size:12px;font-weight:700;color:var(--blue2)}
.suc-body{font-size:11px;color:var(--muted);line-height:1.7;margin-top:5px}

/* 中：API 渠道配置 */
.sa-msg{font-size:12px;padding:8px 11px;border-radius:8px;background:var(--card)}
.sa-msg.err{color:var(--red);border:1px solid rgba(255,90,106,.4)}
.sa-fetch-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sa-fetch-btn{padding:8px 14px;border-radius:9px;border:1.5px solid var(--blue);color:var(--blue2);font-size:12.5px;font-weight:600}
.sa-fetch-btn:hover{background:rgba(47,123,255,.12)}
.sa-fetch-btn:disabled{opacity:.4;cursor:not-allowed}
/* v1202: 固定渠道三窗口（文本/视频/图片 · 选择下拉 + 模型列表 + 独立保存） */
.fx-sec{margin-top:6px;padding-top:10px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:7px}
.fx-sec-head{font-size:12.5px;font-weight:700;color:var(--blue2)}
.fx-cnt{color:var(--muted);font-weight:400;font-size:11px}
.fx-list{min-height:34px}
.fx-empty{padding:9px 12px;font-size:11.5px;color:var(--dim)}
.fx-def-tag{margin-left:8px;flex-shrink:0;font-size:10px;line-height:16px;color:var(--green);border:1px solid rgba(80,200,120,.4);border-radius:5px;padding:0 5px}
.fx-save{align-self:flex-start}
.sa-test-btn{padding:8px 14px;border-radius:9px;border:1px solid var(--border2);color:var(--muted);font-size:12.5px}
.sa-test-btn:hover{color:#fff;border-color:var(--blue)}
.sa-test-btn.danger:hover{color:var(--red);border-color:rgba(255,90,106,.5)}
.sa-fetch-msg{font-size:11.5px}
.sa-fetch-msg.ok{color:var(--green)}
.sa-fetch-msg.err{color:var(--red)}
.sa-model-list{border:1px solid var(--border);border-radius:10px;background:var(--card);max-height:180px;overflow-y:auto;display:flex;flex-direction:column}
/* v1201: 模型列表头（标题 + 清空本类按钮） */
.sa-ml-head{display:flex;align-items:center;justify-content:space-between;margin-top:2px}
.sa-clear-btn{border:1px solid rgba(255,92,92,.45);background:rgba(255,92,92,.10);color:#ff8a8a;border-radius:7px;padding:3px 10px;font-size:11px;cursor:pointer;transition:background .15s,color .15s}
.sa-clear-btn:hover{background:rgba(255,92,92,.22);color:#ffb3b3}
.sa-clear-btn:disabled{opacity:.35;cursor:not-allowed}
/* v1201: 模型行内删除按钮 */
.sar-del{margin-left:auto;flex-shrink:0;width:20px;height:20px;line-height:18px;text-align:center;border:none;border-radius:6px;background:transparent;color:var(--dim);font-size:12px;cursor:pointer;transition:background .15s,color .15s;padding:0}
.sar-del:hover{background:rgba(255,92,92,.18);color:#ff8a8a}
.sa-empty{padding:14px;font-size:11.5px;color:var(--dim);text-align:center}
.sa-radio{display:flex;align-items:center;gap:9px;padding:9px 12px;border-bottom:1px solid var(--border);cursor:pointer;font-size:12.5px}
.sa-radio:last-child{border-bottom:none}
.sa-radio:hover{background:rgba(47,123,255,.08)}
.sa-radio.on{background:rgba(47,123,255,.14)}
.sa-radio.on .sar-name{color:var(--blue2);font-weight:700}
.sa-radio input{width:14px;height:14px;accent-color:var(--blue)}
.sar-name{flex-shrink:0;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sar-meta{color:var(--dim);font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sa-hint{font-size:11px;color:var(--dim)}
.sa-foot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:6px}
.sa-save-btn{margin-left:auto;padding:10px 22px;border-radius:10px;background:var(--grad);border:none;color:#fff;font-size:13px;font-weight:800}
.sa-save-btn:hover{filter:brightness(1.15)}
.sa-saved-dot{font-size:11px;color:var(--dim);margin-left:10px}
.sa-saved-dot.saved{color:var(--green)}
.sa-saved-dot.dirty{color:var(--amber)}

/* 右：Skill 指令设置 */
.sk-task-row{display:flex;align-items:center;gap:9px}
.sk-task-k{font-size:12.5px;color:var(--muted);width:56px;flex-shrink:0}
/* v1308: 默认分镜版本单选（2.0/2.5 二选一） */
.sk-ver-radios{display:flex;gap:14px;flex:1}
.sk-ver-opt{display:flex;align-items:center;gap:5px;font-size:12.5px;color:#e6efff;cursor:pointer;user-select:none}
.sk-ver-opt input{accent-color:#3b82f6;width:14px;height:14px;cursor:pointer}
.sk-ver-opt:hover{color:#fff}
.sk-builtin-card{background:var(--panel2);border:1px solid var(--border2);border-radius:11px;padding:12px 13px}
.skb-head{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:700}
.skb-tag{font-size:10px;padding:3px 8px;border-radius:6px;background:rgba(47,123,255,.14);color:var(--blue2);font-weight:600}
.skb-body{font-size:11px;color:var(--dim);margin-top:6px}
.skb-admin{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}
.skb-btns{display:flex;gap:8px;margin-top:8px}
.skb-btns .sa-test-btn,.skb-btns .sa-save-btn{flex:1;padding:8px 0;font-size:12px}
.skb-admin .st-label{margin-top:6px}
.sk-newtag{font-size:11px;padding:3px 12px;border-radius:7px;border:1.5px solid var(--blue);color:var(--blue2);font-weight:600}
.sk-newtag:hover{background:rgba(47,123,255,.12)}

/* 中：官方渠道配置（四大平台） */
.of-mode-tabs{display:flex;gap:8px}
.of-mode{flex:1;padding:11px;border-radius:10px;background:var(--card);border:1px solid var(--border);color:var(--muted);font-size:13.5px;font-weight:700;text-align:center;cursor:pointer}
.of-mode.active{background:var(--grad);color:#fff;border-color:transparent}
.of-mode:hover:not(.active){color:#fff;border-color:var(--blue)}
/* v1335: 渠道选择区——6 渠道卡片网格（UpDream/即梦AI/LibTV/NeoWow/小云雀AI/API渠道），
   选中卡片亮蓝描边高亮；星空/Lwaigc 并入 API渠道子页签；未选中显示空态引导 */
.sa-chan-zone{display:flex;flex-direction:column;gap:8px}
.sa-chan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.sa-chan{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--card);cursor:pointer;transition:all .15s;text-align:left}
.sa-chan:hover{border-color:var(--blue);color:#fff}
.sa-chan.active{border-color:var(--blue);background:rgba(37,99,235,.16);box-shadow:0 0 10px rgba(59,130,246,.22)}
.sa-chan-ico{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;flex:0 0 44px;overflow:hidden}
/* v1336: 品牌图标 PNG 铺满图块 + API SVG 代码符 */
.sa-chan-ico img{width:100%;height:100%;object-fit:cover;display:block}
.sa-chan-ico svg{width:58%;height:58%}
.i-updream{background:radial-gradient(circle at 35% 35%,#c084fc,#a855f7 55%,#ec4899)}
.i-jimeng{background:radial-gradient(circle at 35% 35%,#22d3ee,#0ea5e9 60%,#2563eb);color:#fff}
.i-libtv{background:linear-gradient(135deg,#1e3a8a,#0c1f4d);color:#e0e7ff}
.i-neowow{background:linear-gradient(135deg,#f1f5f9,#cbd5e1);color:#0f172a}
.i-xyl{background:linear-gradient(135deg,#f8fafc,#e2e8f0);color:#111827}
.i-api{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff}
.sa-chan-name{flex:1;font-size:13px;font-weight:600;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sa-chan-arr{font-size:16px;color:var(--muted)}
.sa-chan.active .sa-chan-arr{color:#60a5fa}
/* v1335: 未选渠道空态 */
.sa-chan-empty{padding:34px 10px 30px;text-align:center;color:var(--muted)}
.sace-ico{font-size:30px;opacity:.5;margin-bottom:10px}
.sace-t1{font-size:13px;color:#94a3b8;margin-bottom:6px}
.sace-t2{font-size:12px;opacity:.75}
/* v1335: API渠道子页签（API 自定义 / 星空 / Lwaigc） */
.sa-sub-tabs{display:flex;gap:8px;margin:10px 0 0}
.sa-sub{font-size:12px;padding:6px 14px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;transition:all .15s}
.sa-sub:hover{color:#cbd5e1;border-color:var(--blue)}
.sa-sub.active{color:#fff;background:rgba(37,99,235,.28);border-color:#3b82f6}
/* v1335: 即梦/LibTV/NeoWow 占位卡 */
.of-soon-card{opacity:.85;border-style:dashed}
/* ── v1337: 即梦渠道面板——CLI 本机登录态工具条 + 状态条 + 配置卡 ── */
.jm-cli-head{display:flex;align-items:center;gap:8px;margin:2px 0 8px}
.jm-cli-title{font-size:14px;font-weight:600;color:var(--tx,#e8eef7);letter-spacing:.5px}
.jm-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.jm-state{padding:8px 12px;border-radius:10px;font-size:12.5px;line-height:1.5;
  border:1px solid transparent;margin-bottom:8px}
.jm-state.ok{background:rgba(46,204,113,.12);border-color:rgba(46,204,113,.45);color:#7ee2a8}
.jm-state.warn{background:rgba(243,156,18,.12);border-color:rgba(243,156,18,.5);color:#ffcf8b}
.jm-state.err{background:rgba(231,76,60,.12);border-color:rgba(231,76,60,.5);color:#ff9d94}
.jm-state.run{background:rgba(52,152,219,.12);border-color:rgba(52,152,219,.5);color:#9ecffb}
.jm-badge{font-size:11px;padding:2px 10px;border-radius:999px;background:linear-gradient(135deg,#4f7cff,#8a5cff);color:#fff;letter-spacing:1px}
.jm-cookie-hint{font-size:11.5px;color:var(--tx-dim,#8fa3bf);line-height:1.6;margin-top:6px}
.jm-card .of-acts{display:flex;gap:8px;margin-top:10px}
/* v1342: LibTV 面板——红色登录态徽章（已登录醒目标识）+ 批量并发步进器 */
.jm-state.lv-ok-red{background:rgba(231,76,60,.2);border-color:rgba(231,76,60,.75);color:#ffb3ab;font-weight:600}
.lv-step-row{display:flex;align-items:center;gap:6px;margin-top:2px}
.lv-step-btn{width:34px;height:32px;border-radius:8px;border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);color:var(--tx,#e8eef7);font-size:16px;line-height:1;cursor:pointer;flex:none}
.lv-step-btn:hover{background:rgba(255,255,255,.12)}
.lv-step-btn:disabled{opacity:.4;cursor:not-allowed}
.lv-step-num{width:72px;height:32px;text-align:center;border-radius:8px;font-size:13px;font-weight:600;
  border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.25);color:var(--tx,#e8eef7)}
.lv-step-num::-webkit-outer-spin-button,.lv-step-num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
/* v1344: LibTV 已登录——「退出账号」按钮红色醒目脉冲动效；未登录禁用灰 */
.sa-fetch-btn.lv-logout-hot{background:rgba(231,76,60,.85);border-color:#e74c3c;color:#fff;font-weight:700;
  animation:lv-logout-pulse 1.6s ease-in-out infinite}
@keyframes lv-logout-pulse{0%,100%{box-shadow:0 0 0 0 rgba(231,76,60,.55)}
  50%{box-shadow:0 0 0 7px rgba(231,76,60,0)}}
/* v1344: 弹窗内模型行可点击设默认（悬浮提示态） */
.km-list .sa-radio{cursor:pointer}
.km-list .sa-radio:hover{background:rgba(120,170,255,.12);border-color:rgba(120,170,255,.45)}
.kind-box .kb-cnt .kb-def{color:#8ab4ff}
/* v1343: 类别模型三框（点击拉起弹窗卡片）+ 类别模型弹窗 */
.kind-box{display:flex;align-items:center;gap:10px;padding:12px 14px;margin-top:8px;cursor:pointer;
  border:1px solid rgba(255,255,255,.1);border-radius:10px;background:rgba(255,255,255,.04);transition:.15s}
.kind-box:hover{border-color:rgba(120,170,255,.55);background:rgba(120,170,255,.08)}
.kind-box:hover .kb-arr{transform:translateX(3px);color:#8ab4ff}
.kind-box .kb-name{font-size:13px;font-weight:600;color:var(--tx,#e8eef7)}
.kind-box .kb-cnt{margin-left:auto;font-size:12px;color:rgba(232,238,247,.55)}
.kind-box .kb-arr{font-size:16px;color:rgba(232,238,247,.4);transition:.15s}
.kind-mask{position:fixed;inset:0;z-index:2900;background:rgba(0,0,0,.55);backdrop-filter:blur(2px);
  display:flex;align-items:center;justify-content:center;padding:24px}
.kind-mask.hidden{display:none}
.km-card{width:min(560px,92vw);max-height:78vh;display:flex;flex-direction:column;border-radius:14px;
  background:#1a2130;border:1px solid rgba(255,255,255,.12);box-shadow:0 18px 48px rgba(0,0,0,.5);overflow:hidden}
.km-head{display:flex;align-items:center;gap:8px;padding:14px 16px 8px}
.km-head .km-title{font-size:15px;font-weight:700;color:var(--tx,#e8eef7)}
.km-close{margin-left:auto;width:28px;height:28px;border-radius:8px;border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);color:var(--tx,#e8eef7);cursor:pointer;font-size:13px;flex:none}
.km-close:hover{background:rgba(255,255,255,.14)}
.km-sub{display:flex;align-items:center;gap:8px;padding:0 16px 10px;font-size:12px;color:rgba(232,238,247,.55)}
.km-sub .sa-clear-btn{margin-left:auto}
.km-list{flex:1;overflow-y:auto;padding:4px 12px 14px;border-top:1px solid rgba(255,255,255,.07)}
/* v1338: 即梦 OAuth 两段式授权引导区（jm-state 之后动态插入） */
.jm-auth{display:flex;flex-direction:column;gap:7px;margin:-2px 0 8px;padding:10px 12px;
  border:1px solid rgba(52,152,219,.4);border-radius:10px;background:rgba(52,152,219,.07)}
.jm-auth.hidden{display:none}
.jm-auth-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tx,#e8eef7);flex-wrap:wrap}
.jm-auth-link{color:#7db8e8;text-decoration:underline;word-break:break-all;font-weight:600}
.jm-auth-link:hover{color:#a5d2f5}
.jm-auth-code{font-family:Consolas,Monaco,monospace;font-size:13px;padding:2px 10px;border-radius:6px;
  background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);color:#ffd479;letter-spacing:1px}
.of-pane{display:flex;flex-direction:column;gap:9px;min-height:0}
.of-hint{font-size:11px;color:var(--dim);line-height:1.6}
.of-card{background:var(--panel2);border:1px solid var(--border);border-radius:12px;padding:13px;display:flex;flex-direction:column;gap:7px}
.of-head{display:flex;align-items:center;justify-content:space-between}
.of-name{font-size:13.5px;font-weight:800}
.of-site{font-size:11px;font-weight:600;color:var(--blue2);text-decoration:none;margin-left:6px}
.of-site:hover{text-decoration:underline}
.of-state{font-size:11px;color:var(--dim);flex-shrink:0}
.of-state.ok{color:var(--green)}
.of-desc{font-size:11px;color:var(--muted);line-height:1.7;background:rgba(47,123,255,.06);border:1px dashed rgba(47,123,255,.3);border-radius:8px;padding:8px 10px}
.of-acts{display:flex;gap:8px;align-items:center;margin-top:4px}
.sa-save-btn.slim{margin-left:0;padding:8px 14px;font-size:12.5px;font-weight:700}

/* 设置模式顶栏切换 */
body.settings-mode #module-nav,body.settings-mode .save-badge,body.settings-mode #user-profile-btn{display:none!important}
/* v1333: 返回工作台按钮增强——更明显（亮蓝渐变+呼吸光晕），箭头常态往返滑动动效，位置尺寸适配工作台 */
body.settings-mode #btn-back-ws{display:inline-flex!important;align-items:center;gap:7px;font-size:13px;font-weight:600;padding:8px 18px;border-radius:20px;border:1px solid rgba(96,165,250,.55);color:#dbeafe;background:linear-gradient(135deg,rgba(37,99,235,.28),rgba(59,130,246,.16));box-shadow:0 0 12px rgba(59,130,246,.28),inset 0 0 8px rgba(59,130,246,.10);animation:bkGlow 2.4s ease-in-out infinite;transition:all .15s}
body.settings-mode #btn-back-ws:hover{color:#fff;border-color:#93c5fd;background:linear-gradient(135deg,rgba(37,99,235,.45),rgba(59,130,246,.28));box-shadow:0 0 18px rgba(59,130,246,.45),inset 0 0 10px rgba(59,130,246,.16);animation:none}
body.settings-mode #btn-back-ws .bk-arr{display:inline-block;font-weight:700;animation:bkArr 1.6s ease-in-out infinite}
@keyframes bkArr{0%,100%{transform:translateX(-3px)}50%{transform:translateX(3px)}}
@keyframes bkGlow{0%,100%{box-shadow:0 0 10px rgba(59,130,246,.22),inset 0 0 8px rgba(59,130,246,.10)}50%{box-shadow:0 0 18px rgba(59,130,246,.42),inset 0 0 10px rgba(59,130,246,.16)}}

/* v1164 保留：锁死页面缩放由 JS 实现 */

/* ═════════ v1192: 启动动效页（纯代码动画·零图片·全尺寸自适应） ═════════ */
#splash{position:fixed;inset:0;z-index:9999;overflow:hidden;cursor:pointer;background:
 radial-gradient(clamp(560px,60vw,1100px) clamp(380px,50vh,720px) at 18% -10%,rgba(47,123,255,.20),transparent 62%),
 radial-gradient(clamp(520px,56vw,1000px) clamp(360px,48vh,700px) at 106% 112%,rgba(20,90,200,.22),transparent 62%),
 linear-gradient(150deg,#030b18 0%,#071a30 48%,#04101f 100%);
 transition:opacity .5s cubic-bezier(.33,0,.2,1),transform .5s cubic-bezier(.33,0,.2,1);will-change:opacity,transform}
#splash.bye{opacity:0;transform:scale(1.05);pointer-events:none}
/* 极光光晕：缓慢漂移呼吸 */
.sp-aurora{position:absolute;border-radius:50%;filter:blur(90px);pointer-events:none;opacity:.55;animation:sp-drift 14s ease-in-out infinite alternate}
.sp-au1{width:clamp(320px,42vw,640px);height:clamp(320px,42vw,640px);left:-8%;top:-14%;background:radial-gradient(circle,rgba(47,123,255,.34),transparent 70%)}
.sp-au2{width:clamp(360px,48vw,720px);height:clamp(360px,48vw,720px);right:-12%;bottom:-20%;background:radial-gradient(circle,rgba(18,88,205,.30),transparent 70%);animation-delay:-5s}
.sp-au3{width:clamp(240px,30vw,460px);height:clamp(240px,30vw,460px);left:56%;top:-16%;background:radial-gradient(circle,rgba(56,199,255,.17),transparent 70%);animation-delay:-9s}
@keyframes sp-drift{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(4vw,3vh,0) scale(1.12)}}
/* 星尘：错峰闪烁上浮 */
.sp-stars i{position:absolute;width:4px;height:4px;border-radius:50%;background:rgba(140,190,255,.75);box-shadow:0 0 8px rgba(120,180,255,.9);opacity:0;animation:sp-tw 4.5s ease-in-out infinite}
.sp-stars i:nth-child(1){left:12%;top:22%;animation-delay:.2s}
.sp-stars i:nth-child(2){left:22%;top:64%;animation-delay:1.4s;animation-duration:5.2s}
.sp-stars i:nth-child(3){left:31%;top:18%;animation-delay:2.6s}
.sp-stars i:nth-child(4){left:44%;top:74%;animation-delay:.8s;animation-duration:5.6s}
.sp-stars i:nth-child(5){left:57%;top:26%;animation-delay:3.1s}
.sp-stars i:nth-child(6){left:68%;top:58%;animation-delay:1.9s;animation-duration:5s}
.sp-stars i:nth-child(7){left:78%;top:20%;animation-delay:.5s}
.sp-stars i:nth-child(8){left:86%;top:44%;animation-delay:2.2s;animation-duration:6s}
.sp-stars i:nth-child(9){left:9%;top:44%;animation-delay:3.6s}
.sp-stars i:nth-child(10){left:50%;top:12%;animation-delay:1.1s;animation-duration:5.4s}
.sp-stars i:nth-child(11){left:92%;top:70%;animation-delay:2.9s}
.sp-stars i:nth-child(12){left:37%;top:40%;animation-delay:4s;animation-duration:6.2s}
@keyframes sp-tw{0%,100%{opacity:0;transform:translateY(0) scale(.6)}30%{opacity:.9}55%{opacity:.3;transform:translateY(-2.4vh) scale(1)}}
/* 主舞台：纵向居中，全部尺寸随窗口 clamp 缩放 */
.sp-stage{position:relative;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(12px,2.4vh,24px);padding:0 6vw;text-align:center;box-sizing:border-box}
/* v1193: Logo 换猫咪头像——用户原图内嵌 cat.jpg，圆润四角圆角裁切，保留光环/弹入动效 */
.sp-logo{position:relative;width:clamp(60px,9vh,86px);height:clamp(60px,9vh,86px);border-radius:26%;overflow:hidden;box-shadow:0 10px 34px rgba(47,123,255,.5);animation:sp-pop .7s cubic-bezier(.2,1.4,.4,1) both}
.sp-logo img{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit;border:2px solid rgba(140,200,255,.4);box-sizing:border-box;user-select:none;-webkit-user-drag:none}
.sp-ring{position:absolute;inset:-9px;border-radius:30%;border:2px solid rgba(56,199,255,.55);animation:sp-ring 2.6s ease-out infinite}
@keyframes sp-ring{0%{transform:scale(.92);opacity:.9}70%{transform:scale(1.3);opacity:0}100%{transform:scale(1.3);opacity:0}}
@keyframes sp-pop{from{transform:scale(.3);opacity:0}to{transform:scale(1);opacity:1}}
.sp-brand{font-size:clamp(12px,1.9vh,16px);letter-spacing:clamp(4px,.7vw,9px);text-indent:clamp(4px,.7vw,9px);color:rgba(170,205,245,.85);animation:sp-rise .7s .12s both}
.sp-title{margin:0;font-size:clamp(30px,7vh,62px);line-height:1.22;color:#fff;font-weight:800;letter-spacing:2px;animation:sp-rise .8s .22s both}
.sp-title em{font-style:normal;background:linear-gradient(100deg,#38c7ff 0%,#8fc0ff 25%,#38c7ff 50%,#8fc0ff 75%,#38c7ff 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:sp-shine 3.2s linear infinite}
@keyframes sp-shine{to{background-position:-220% 0}}
@keyframes sp-rise{from{opacity:0;transform:translateY(3.2vh)}to{opacity:1;transform:translateY(0)}}
.sp-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(10px,1.6vw,18px)}
.sp-chip{display:flex;align-items:center;gap:9px;font-size:clamp(13px,2vh,16px);color:#dbe9ff;background:rgba(14,32,56,.66);border:1px solid rgba(90,150,230,.30);border-radius:999px;padding:clamp(8px,1.4vh,12px) clamp(16px,2vw,26px);animation:sp-rise .7s both;transition:transform .18s,border-color .18s}
.sp-chip:nth-child(1){animation-delay:.38s}
.sp-chip:nth-child(2){animation-delay:.5s}
.sp-chip:nth-child(3){animation-delay:.62s}
.sp-chip b{font-weight:400;font-size:1.15em;filter:drop-shadow(0 0 6px rgba(56,160,255,.6))}
.sp-chip:hover{border-color:rgba(56,160,255,.6);transform:translateY(-2px)}
/* 进入按钮：流光扫过 */
#sp-enter{position:relative;overflow:hidden;margin-top:clamp(2px,1vh,10px);font-size:clamp(15px,2.4vh,19px);font-weight:600;color:#fff;background:linear-gradient(92deg,#2f7bff,#4a9bff);border:none;border-radius:999px;padding:clamp(12px,2vh,17px) clamp(34px,4.5vw,58px);cursor:pointer;box-shadow:0 10px 30px rgba(47,123,255,.45);transition:transform .15s,filter .15s,box-shadow .15s;animation:sp-rise .8s .74s both}
#sp-enter::after{content:'';position:absolute;top:0;bottom:0;width:34%;left:-45%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.42),transparent);transform:skewX(-18deg);animation:sp-sweep 2.8s ease-in-out 1.6s infinite}
@keyframes sp-sweep{0%{left:-45%}55%,100%{left:118%}}
#sp-enter:hover{transform:translateY(-2px);filter:brightness(1.12);box-shadow:0 14px 38px rgba(47,123,255,.6)}
#sp-enter b{font-weight:700;margin-left:6px}
.sp-hint{font-size:clamp(11px,1.6vh,13px);color:rgba(130,165,210,.6);letter-spacing:3px;animation:sp-rise .8s .9s both,sp-blink 2.4s ease-in-out 1.9s infinite}
@keyframes sp-blink{0%,100%{opacity:.55}50%{opacity:.2}}
.sp-footer{position:absolute;left:0;right:0;bottom:clamp(10px,2vh,18px);text-align:center;font-size:11px;letter-spacing:4px;color:rgba(110,145,195,.4);animation:sp-rise 1s 1.05s both}

/* ═══════════ v1217: JS 自绘滚动条（终极方案）═══════════
   背景：::-webkit-scrollbar 自定义在 WebView2+Windows「自动隐藏滚动条」下被整体忽略；
   scrollbar-width 只接受 auto/thin/none（v1214 误写 14px 为非法值被浏览器丢弃）。
   方案：原生滚动条彻底隐藏（scrollbar-width:none 合法值），JS 画一根假滑块挂在容器上——
   亮蓝粗滑块常显、可鼠标拖拽、可点轨道翻页、滚轮照常，任何内核/系统设置都管不着；
   v1226：轨道纵向位置/高度改由 JS 按 scrollTop 实时钉在可视区——absolute 轨道挂在本容器内会随内容滚走 */
.has-csb{position:relative;scrollbar-width:none}
.has-csb::-webkit-scrollbar{display:none}
/* v1227: 滑块颜色与中间提示词面板原生滚动条统一（原生 thumb #1e3a5f / 轨道透明） */
.csb-track{position:absolute;right:2px;width:12px;border-radius:7px;background:transparent;opacity:0;pointer-events:none;transition:opacity .15s;z-index:60}
.csb-track.csb-on{opacity:1;pointer-events:auto}
.csb-thumb{position:absolute;left:2px;right:2px;height:44px;border-radius:6px;background:#1e3a5f;cursor:grab;transition:background .12s}
.csb-thumb:hover{background:#2a4a78}
.csb-thumb:active{cursor:grabbing;background:#35659f}

/* ═══════════ v1217: 历史记录入口按钮 + 弹窗 + 查看器 ═══════════ */
/* v1218: 入口按钮直接复用 .add-btn（与新增视频/新增图片完全一致），旧 hist-entry-btn 样式废弃删除 */
.hist-overlay{position:fixed;inset:0;background:rgba(2,6,16,.72);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:200}
.hist-modal{width:min(1080px,92vw);height:min(720px,86vh);background:var(--panel);border:1px solid var(--border2);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.6)}
.hist-head{display:flex;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--border)}
.hist-title{font-size:16px;font-weight:700}
.hist-stat{flex:1;font-size:12px;color:var(--muted)}
.hist-close{font-size:15px;padding:5px 12px;border-radius:8px;border:1px solid var(--border2);color:var(--muted)}
.hist-close:hover{color:#fff;border-color:var(--blue);background:rgba(47,123,255,.15)}
.hist-tools{display:flex;align-items:center;gap:16px;padding:9px 18px;border-bottom:1px solid var(--border)}
.hist-selall{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text);cursor:pointer}
.hist-selall input{width:15px;height:15px;accent-color:#2f7bff;cursor:pointer}
.hist-dl-sel-btn{font-size:12.5px;padding:6px 14px;border-radius:8px;background:var(--grad);color:#fff;font-weight:700}
.hist-dl-sel-btn:hover{filter:brightness(1.15)}
.hist-scroll{flex:1;min-height:0;overflow-y:auto;padding:14px 18px}
.hist-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.hist-card{position:relative;border:1px solid var(--border);border-radius:11px;background:var(--card);overflow:hidden;transition:border-color .15s,transform .15s}
.hist-card:hover{border-color:var(--blue);transform:translateY(-2px)}
.hist-card.chk{border-color:var(--blue);box-shadow:0 0 0 1.5px rgba(47,123,255,.45)}
.hist-check{position:absolute;right:8px;top:8px;z-index:5;width:19px;height:19px;accent-color:#2f7bff;cursor:pointer;background:rgba(3,8,18,.55);border-radius:4px}
/* v1218: 缩略图容器加定位，编号徽章挂左上角、下载按钮挂右下角（均在图片/视频框内） */
.hist-thumb{position:relative;height:138px;background:#0a1220;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden}
.hist-thumb video,.hist-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.hist-thumb .hist-fail-ph{color:#7a8aa8;font-size:12px;text-align:center;line-height:1.9;padding:0 14px}
.hist-thumb .hist-fail-ph b{color:#ff8d8d;font-size:15px;display:block}
.hist-no{position:absolute;left:8px;top:8px;z-index:5;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:7px;color:#eaf2ff;background:rgba(3,8,18,.55);border:1px solid rgba(143,184,255,.35);backdrop-filter:blur(2px);pointer-events:none}
.hist-meta{padding:9px 11px 10px;display:flex;flex-direction:column;gap:4px}
.hist-row1{display:flex;align-items:center;gap:8px;min-width:0}
.hist-label{flex:1;min-width:0;font-size:13.5px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hist-badge{font-size:10.5px;font-weight:700;padding:1.5px 8px;border-radius:9px}
.hist-badge.ok{background:rgba(46,204,113,.16);color:#4ade80}
.hist-badge.fail{background:rgba(255,80,80,.15);color:#ff8d8d}
.hist-time{font-size:11px;color:var(--muted)}
.hist-err{font-size:11px;color:#ff8d8d;line-height:1.5;max-height:48px;overflow:hidden}
/* v1218: 下载按钮挪进缩略图框内右下角，透明底悬浮（与视频控制条同风格） */
.hist-dl-btn{position:absolute;right:8px;bottom:8px;z-index:5;font-size:11px;padding:4px 10px;border-radius:7px;background:rgba(3,8,18,.35);border:1px solid rgba(143,184,255,.4);color:#cfe0ff;backdrop-filter:blur(2px)}
.hist-dl-btn:hover{background:var(--grad);color:#fff;border-color:transparent}
.hist-empty{grid-column:1/-1;text-align:center;color:var(--dim);padding:60px 0;font-size:13px;line-height:2.2}
.hist-viewer{position:fixed;inset:0;background:rgba(1,3,9,.9);display:flex;align-items:center;justify-content:center;z-index:210}
.hist-viewer-box{position:relative;max-width:92vw;max-height:88vh;display:flex;align-items:center;justify-content:center}
.hist-viewer video{max-width:92vw;max-height:88vh;border-radius:10px;outline:none;background:#000}
.hist-viewer img{max-width:92vw;max-height:88vh;border-radius:10px;object-fit:contain;cursor:zoom-out}
.hist-viewer-close{position:fixed;right:26px;top:22px;font-size:14px;padding:8px 18px;border-radius:9px;background:rgba(47,123,255,.2);border:1px solid rgba(143,184,255,.45);color:#fff}
.hist-viewer-close:hover{background:rgba(47,123,255,.4)}

/* v1221: 三栏 grid 行高锁死为容器高度——隐式 auto 行会被内容撑高，列内滚动区永远不溢出、滑块永远不亮 */
.video-grid,.asset-grid{grid-template-rows:minmax(0,1fr)}
.col-left,.col-right,.col-mid{min-height:0}

/* v1225: 卡片网格行高修复——.lib-card/.ref-card/.ap-card/.hist-card 自带 overflow:hidden，
   对 auto 行的最小高度贡献归零，行在定高容器内被均分压缩成细条（实测 6 行精确均分 452px、
   scrollHeight==clientHeight 永不滚动）。max-content 强制行按内容撑开，容器恢复 overflow-y 滚动 */
.ref-grid,.lib-grid,.ap-grid,.hist-grid{grid-auto-rows:max-content}

/* ═══ v1228: 项目管理（顶栏入口 + 弹窗，复用 hist-overlay 系样式） ═══ */
.proj-btn{display:flex;align-items:center;gap:7px;padding:7px 13px;border-radius:9px;background:var(--panel2);border:1px solid var(--border2);font-size:13.5px;font-weight:700;max-width:230px}
.proj-btn:hover{border-color:var(--blue);background:#16305a}
.proj-btn b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}
.proj-caret{font-style:normal;font-size:10px;color:var(--muted)}
/* v1289: 左上角项目切换下拉——全部项目 + 当前高亮 + 新建入口，一键切回原项目 */
#proj-menu{position:fixed;z-index:1500;width:240px;background:#101c31;border:1px solid #2a3f63;border-radius:12px;box-shadow:0 14px 40px rgba(0,0,0,.5);padding:8px;animation:pmIn .14s ease}
@keyframes pmIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
#proj-menu .pm-title{font-size:11.5px;color:#7f97b8;padding:2px 8px 8px;letter-spacing:1px}
#proj-menu .pm-list{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}
#proj-menu .pm-item{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:9px;cursor:pointer;color:#d7e6ff;font-size:13px;font-weight:600}
#proj-menu .pm-item:hover{background:#1a2c4c}
#proj-menu .pm-item.cur{background:#16305a;border:1px solid #2f5aa0}
#proj-menu .pm-ic{font-size:13px;width:16px;text-align:center;flex:0 0 16px}
#proj-menu .pm-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#proj-menu .pm-cur{font-size:10.5px;color:#4da3ff;background:rgba(45,110,220,.18);border:1px solid rgba(77,163,255,.35);border-radius:6px;padding:2px 7px;flex:0 0 auto}
#proj-menu .pm-loading,#proj-menu .pm-empty{font-size:12px;color:#7f97b8;padding:10px;text-align:center}
#proj-menu .pm-new{margin-top:6px;padding:9px 10px;border-radius:9px;border:1px dashed #33507e;color:#7fb3ff;font-size:12.5px;font-weight:700;text-align:center;cursor:pointer}
#proj-menu .pm-new:hover{background:#16305a;border-color:var(--blue)}
/* v1290: 项目删除——菜单项删除按钮 + 二次确认弹窗 */
#proj-menu .pm-del{flex:0 0 auto;font-size:13px;line-height:1;padding:4px 5px;border-radius:6px;color:#8ba0bf;opacity:.5;cursor:pointer}
#proj-menu .pm-del:hover{color:#ff6b6b;background:rgba(255,80,80,.14);opacity:1}
/* v1291: 项目重命名——菜单按钮 + 重命名弹窗 */
#proj-menu .pm-ren{flex:0 0 auto;font-size:12px;line-height:1;padding:4px 5px;border-radius:6px;color:#8ba0bf;opacity:.5;cursor:pointer}
#proj-menu .pm-ren:hover{color:#7fb3ff;background:rgba(77,163,255,.14);opacity:1}
/* v1293: 工程舱并行——后台项目任务实时生成徽标（⚡N） */
#proj-menu .pm-run{flex:0 0 auto;font-size:10.5px;line-height:1;color:#ffb84d;background:rgba(255,150,40,.14);border:1px solid rgba(255,170,60,.4);border-radius:6px;padding:3px 7px;animation:pmRunGlow 1.6s ease-in-out infinite}
@keyframes pmRunGlow{0%,100%{opacity:.72}50%{opacity:1}}
#proj-ren-mask{position:fixed;inset:0;z-index:1600;background:rgba(4,10,22,.68);display:flex;align-items:center;justify-content:center;animation:pmIn .15s ease}
.pren-box{width:min(380px,90vw);background:#101c31;border:1px solid #2a3f63;border-radius:14px;padding:22px 24px;box-shadow:0 18px 50px rgba(0,0,0,.55)}
.pren-head{font-size:15.5px;font-weight:800;color:#9ecbff;margin-bottom:10px}
.pren-body{font-size:12.5px;color:#8ba3c7;margin-bottom:12px}
.pren-input{width:100%;box-sizing:border-box;padding:11px 14px;border-radius:10px;border:1px solid #33507e;background:#0b1526;color:#eaf3ff;font-size:14px;font-weight:600;outline:none}
.pren-input:focus{border-color:var(--blue);box-shadow:0 0 0 2px rgba(45,110,220,.25)}
.pren-btns{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.pren-cancel{padding:8px 18px;border-radius:9px;border:1px solid #33507e;background:#16233c;color:#c7d8f2;font-size:13px;font-weight:700;cursor:pointer}
.pren-cancel:hover{background:#1c2d4c}
.pren-ok{padding:8px 18px;border-radius:9px;border:1px solid #2f6bc4;background:#1f5db3;color:#fff;font-size:13px;font-weight:800;cursor:pointer}
.pren-ok:hover{background:#2a6dcd}
#proj-del-mask{position:fixed;inset:0;z-index:1600;background:rgba(4,10,22,.68);display:flex;align-items:center;justify-content:center;animation:pmIn .15s ease}
#slot-del-mask{position:fixed;inset:0;z-index:1600;background:rgba(4,10,22,.68);display:flex;align-items:center;justify-content:center;animation:pmIn .15s ease} /* v1350: 生成中编号删除确认遮罩（v1348 漏样式致弹窗渲染视口外=点击无反应） */
.pdel-box{width:min(430px,90vw);background:#101c31;border:1px solid #2a3f63;border-radius:14px;padding:22px 24px;box-shadow:0 18px 50px rgba(0,0,0,.55)}
.pdel-head{font-size:16px;font-weight:800;color:#ffd28a;margin-bottom:12px}
.pdel-body{font-size:13.5px;color:#d7e6ff;line-height:1.6;margin-bottom:12px}
.pdel-body b{color:#fff}
.pdel-warn{font-size:12.5px;line-height:1.7;color:#ffb0b0;background:rgba(255,80,80,.08);border:1px solid rgba(255,80,80,.28);border-radius:9px;padding:10px 13px;margin-bottom:18px}
.pdel-warn b{color:#ff6b6b}
.pdel-btns{display:flex;justify-content:flex-end;gap:10px}
.pdel-cancel{padding:8px 18px;border-radius:9px;border:1px solid #33507e;background:#16233c;color:#c7d8f2;font-size:13px;font-weight:700;cursor:pointer}
.pdel-cancel:hover{background:#1c2d4c}
.pdel-ok{padding:8px 18px;border-radius:9px;border:1px solid #d05454;background:#c73e3e;color:#fff;font-size:13px;font-weight:800;cursor:pointer}
.pdel-ok:hover{background:#d94a4a}
.proj-modal{width:min(680px,92vw);height:auto;max-height:min(700px,86vh)}
.proj-warn{margin:12px 18px 0;padding:8px 13px;border-radius:8px;background:rgba(255,176,32,.09);border:1px solid rgba(255,176,32,.3);color:var(--amber);font-size:12px;line-height:1.7}
.proj-list{flex:1;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:10px}
.proj-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:12px 14px;display:flex;align-items:center;gap:12px}
.proj-card.current{border-color:var(--blue);box-shadow:0 0 0 1px rgba(47,123,255,.45)}
.proj-card.editing{border-color:var(--border2);background:var(--panel2)}
.proj-ico{font-size:20px;flex-shrink:0}
.proj-info{flex:1;min-width:0}
.proj-nm{font-size:14.5px;font-weight:800;display:flex;align-items:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.proj-meta{font-size:11.5px;color:var(--muted);margin-top:3px}
.proj-cur{font-style:normal;font-size:10.5px;padding:1px 8px;border-radius:8px;background:rgba(47,210,138,.12);color:var(--green);font-weight:700;flex-shrink:0}
.proj-acts{display:flex;align-items:center;gap:7px;flex-shrink:0}
.proj-del{width:27px;height:27px;border-radius:7px;background:rgba(255,90,106,.12);color:var(--red);font-size:12px;border:1px solid rgba(255,90,106,.35);display:flex;align-items:center;justify-content:center}
.proj-del:hover{background:var(--red);color:#fff}
.proj-del.danger{background:var(--red);color:#fff;font-size:11.5px;width:auto;padding:0 10px}
.proj-confirm-txt{font-size:11.5px;color:var(--amber);max-width:180px;line-height:1.4}
.proj-edit-row{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.proj-edit-row input{flex:1;min-width:0;padding:6px 10px;font-size:13px}
.proj-empty{text-align:center;color:var(--dim);font-size:12.5px;line-height:2;padding:40px 0}

/* ═══ v1237: 资产回收站 ═══ */
.trash-list{display:flex;flex-direction:column;gap:8px;overflow-y:auto;min-height:120px}
/* v1355: 回收站横屏大框修复——mv-box 无 max-height + trash-list 继承 mv-body 的 align-items:center，
   内容多时弹窗被撑成通天窄条（截图实锤）：加宽+高度上限+弹窗内部弹性滚动，条目占满宽度 */
.trash-box{width:min(880px,92vw);max-height:82vh;display:flex;flex-direction:column}
.trash-box .mv-body.trash-list{flex:1;min-height:120px;align-items:stretch;justify-content:flex-start;padding:12px 14px}
.trash-list.tds-dragging{cursor:grabbing;user-select:none}
.trash-list.tds-grab{cursor:grab}
.trash-list.tds-grab .trash-restore-btn{cursor:pointer}
.trash-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02)}
.trash-item img{width:44px;height:44px;object-fit:cover;border-radius:8px;background:rgba(255,255,255,.06);flex-shrink:0}
.trash-info{flex:1;min-width:0}
.trash-name{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trash-meta{font-size:11px;color:var(--dim);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trash-empty{text-align:center;color:var(--dim);font-size:12.5px;padding:36px 0;line-height:2}
.trash-restore-btn{padding:6px 14px;border-radius:8px;border:1px solid var(--accent);background:rgba(64,158,255,.12);color:var(--accent);font-size:12px;flex-shrink:0}
.trash-restore-btn:hover{background:var(--accent);color:#fff}


/* ═══ v1239: 槽位多版本 keycap（1️⃣ 2️⃣ 3️⃣ 编号旁小按钮组） ═══ */
.v-vers{display:inline-flex;align-items:center;gap:3px;margin-left:6px;flex-shrink:0}
.v-ver-btn{
  font-size:11.5px;line-height:1;padding:3px 6px;min-width:24px;
  border-radius:7px;border:1px solid var(--border2);background:rgba(255,255,255,.04);
  color:var(--text);cursor:pointer;font-weight:700;letter-spacing:.5px;
  transition:all .15s ease;
}
.v-ver-btn:hover{border-color:var(--accent);background:rgba(64,158,255,.14);color:var(--accent)}
.v-ver-btn.active{
  background:linear-gradient(135deg,var(--accent),#0e7adc);
  border-color:var(--accent);color:#fff;
  box-shadow:0 0 0 1px rgba(64,158,255,.4),0 2px 6px rgba(64,158,255,.35);
}

/* ═══ v1239: 生成按钮三态（默认 / 正在生成（动效）/ 重新生成） ═══ */
.gen-btn.is-running{position:relative;background:linear-gradient(135deg,#1c3a6e,#0e2244)!important;border-color:#1e3f7a!important;color:#cfdcff!important;cursor:wait!important;opacity:1!important}
.gen-btn.is-running .btn-spin{display:inline-block;width:13px;height:13px;border:2px solid rgba(255,255,255,.25);border-top-color:#7fb6ff;border-radius:50%;margin-right:8px;vertical-align:-2px;animation:btn-spin-rot .8s linear infinite}
@keyframes btn-spin-rot{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.gen-btn.is-retry{
  background:linear-gradient(135deg,#b86a18,#7d3d09)!important;border-color:#c87a2a!important;color:#fff5e0!important;
  box-shadow:0 0 0 1px rgba(255,176,32,.35),0 2px 8px rgba(255,120,40,.3);
  animation:retry-pulse 1.6s ease-in-out infinite;
}
.gen-btn.is-retry:hover{filter:brightness(1.12)}
@keyframes retry-pulse{0%,100%{box-shadow:0 0 0 1px rgba(255,176,32,.35),0 2px 8px rgba(255,120,40,.3)}50%{box-shadow:0 0 0 1px rgba(255,176,32,.6),0 4px 14px rgba(255,120,40,.55)}}

/* ═══ v1239: 版本选择弹窗（复用 hist-modal 风格） ═══ */
.ver-modal{width:min(880px,96vw);height:auto;max-height:min(80vh,720px)}
.ver-card{position:relative}
.ver-thumb{position:relative;background:#000;display:flex;align-items:center;justify-content:center;min-height:160px}
.ver-thumb video,.ver-thumb img{max-width:100%;max-height:280px;display:block;object-fit:contain}
.ver-cur-tag{position:absolute;top:8px;right:8px;background:linear-gradient(135deg,#2fd28a,#1e9d62);color:#fff;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:7px;box-shadow:0 2px 6px rgba(46,210,138,.45)}
.ver-card.is-cur{border-color:var(--accent);box-shadow:0 0 0 1px rgba(64,158,255,.4)}
.ver-card.is-focus{outline:2px solid var(--accent)}
.ver-act-bar{display:flex;gap:6px;padding:8px 10px;flex-wrap:wrap;justify-content:center}
.ver-use-btn,.ver-full-btn,.ver-dl-btn{
  font-size:12px;font-weight:700;padding:5px 10px;border-radius:7px;cursor:pointer;
  border:1px solid var(--border2);background:rgba(255,255,255,.04);color:var(--text);
  transition:all .15s ease;
}
.ver-use-btn:hover{border-color:var(--accent);background:rgba(64,158,255,.14);color:var(--accent)}
.ver-use-btn.active{background:linear-gradient(135deg,#2fd28a,#1e9d62);border-color:#2fd28a;color:#fff}
.ver-full-btn:hover{border-color:#a060ff;background:rgba(160,96,255,.14);color:#cba6ff}
.ver-dl-btn:hover{border-color:var(--amber);background:rgba(255,176,32,.14);color:var(--amber)}
/* ═══ v1240: 登录/注册弹窗 + 档期卡 + 管理员三档生码与用户管理 ═══ */
#auth-modal{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center}
#auth-modal.hidden{display:none!important}
.auth-modal-box{
  position:relative;z-index:1002; /* v1262: 压过 .modal-backdrop(1000)，修复黑影+点哪都关 */
  width:min(440px,92vw);
  overflow:hidden;
  background:linear-gradient(168deg,#26355c 0%,#1d2b50 48%,#182242 100%); /* v1268: 亮版深蓝 */
  border:1px solid rgba(96,182,255,.5);border-radius:16px;padding:20px 22px 24px;
  box-shadow:0 0 0 1px rgba(64,158,255,.16),0 24px 70px rgba(0,30,80,.55),0 0 52px rgba(64,158,255,.25);
}
.auth-modal-box::before{content:'';position:absolute;left:0;top:0;right:0;height:3px;
  background:linear-gradient(90deg,transparent,#40d8ff 30%,#409eff 62%,transparent)}
.auth-tabs{display:flex;align-items:center;gap:6px;margin-bottom:14px;border-bottom:1px solid var(--border2);padding-bottom:10px}
.auth-tab{
  font-size:13.5px;font-weight:700;padding:6px 16px;border-radius:8px;cursor:pointer;
  border:1px solid transparent;background:transparent;color:var(--dim);transition:all .15s ease;
}
.auth-tab.active{background:rgba(64,158,255,.15);border-color:var(--accent);color:var(--accent)}
.auth-tabs .mv-close{margin-left:auto}
.auth-pane{display:flex;flex-direction:column;gap:10px}
.auth-pane.hidden{display:none!important}
/* v1306: 登录/注册弹窗测试版本提示条 */
.auth-test-tip{
  margin:0 0 10px;padding:8px 10px;border-radius:8px;text-align:center;
  font-size:12px;line-height:1.5;color:#ffd98a;
  border:1px solid rgba(255,196,92,.35);background:rgba(255,196,92,.10);
}
.auth-hint{font-size:12px;color:var(--dim);line-height:1.5}
.auth-row{display:flex;gap:8px;align-items:center}
.auth-row .act-code-input{flex:1}
.auth-mini-btn{
  padding:8px 12px;border-radius:8px;border:1px solid var(--accent);
  background:rgba(64,158,255,.12);color:var(--accent);font-size:12px;font-weight:700;
  white-space:nowrap;cursor:pointer;flex-shrink:0;
}
.auth-mini-btn:hover{background:var(--accent);color:#fff}
.auth-mini-btn:disabled{opacity:.5;cursor:not-allowed}
.auth-submit-btn{margin-top:4px;padding:10px;border-radius:9px;font-size:13.5px;font-weight:700;cursor:pointer}
.auth-remember{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--dim);cursor:pointer;user-select:none}
.auth-msg{font-size:12px;padding:6px 10px;border-radius:7px}
.auth-msg.err{background:rgba(255,80,80,.12);color:#ff8080;border:1px solid rgba(255,80,80,.3)}
.auth-msg.ok{background:rgba(46,210,138,.12);color:#2fd28a;border:1px solid rgba(46,210,138,.3)}
/* ═══ v1268: 登录窗亮版增强 + 密码眼睛 + 版本折叠浮层 + 库存音频卡 ═══ */
.auth-modal-box .auth-tab{color:#9fb6dd}
.auth-modal-box .auth-tab.active{background:rgba(64,210,255,.18);border-color:#40d8ff;color:#7fe0ff}
.auth-modal-box .auth-hint{color:#a8bce0}
.auth-modal-box .act-code-input{
  background:rgba(255,255,255,.09);border:1px solid rgba(140,190,255,.32);color:#eaf3ff;
  font-size:14px;padding:11px 13px;border-radius:10px;transition:all .15s ease;
}
.auth-modal-box .act-code-input::placeholder{color:#7e93bd}
.auth-modal-box .act-code-input:focus{background:rgba(255,255,255,.13);border-color:#40d8ff;box-shadow:0 0 0 3px rgba(64,216,255,.16);outline:none}
.auth-pw-wrap{position:relative;display:flex}
.auth-pw-wrap .act-code-input{width:100%;padding-right:48px}
.auth-eye{
  position:absolute;right:6px;top:50%;transform:translateY(-50%);
  width:32px;height:32px;border-radius:8px;border:1px solid rgba(140,200,255,.4);
  background:rgba(64,158,255,.18);color:#8fd4ff;font-size:16px;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;
}
.auth-eye:hover{background:#409eff;color:#fff;box-shadow:0 0 10px rgba(64,158,255,.5)}
.auth-eye.on{background:rgba(64,216,255,.3);border-color:#40d8ff;color:#c9f2ff}
.auth-modal-box .auth-submit-btn{
  margin-top:6px;padding:11px;border-radius:10px;font-size:14.5px;
  background:linear-gradient(135deg,#3ec6ff,#2f7bff);color:#fff;border:none;
  box-shadow:0 6px 18px rgba(47,123,255,.4);
}
.auth-modal-box .auth-submit-btn:hover{filter:brightness(1.12);box-shadow:0 6px 22px rgba(64,200,255,.55)}
.auth-modal-box .auth-remember{color:#a8bce0}
.auth-remember input{accent-color:#40d8ff;width:15px;height:15px;cursor:pointer}
/* v1268: 同编号多版本折叠图标 + 浮层 */
.v-ver-stack{
  display:inline-flex;align-items:center;gap:5px;padding:2px 8px 2px 5px;border-radius:9px;
  border:1px solid rgba(64,216,255,.55);background:linear-gradient(135deg,rgba(64,216,255,.16),rgba(47,123,255,.2));
  cursor:pointer;transition:all .15s ease;flex-shrink:0;
}
.v-ver-stack:hover{border-color:#40d8ff;box-shadow:0 0 10px rgba(64,216,255,.4);transform:translateY(-1px)}
.v-ver-stack .vvs-ico{position:relative;width:14px;height:13px;display:inline-block;flex-shrink:0}
.v-ver-stack .vvs-ico i{position:absolute;left:1px;width:12px;height:3.5px;border-radius:1.5px;background:#7fe0ff}
.v-ver-stack .vvs-ico i:nth-child(1){top:1px;opacity:.4}
.v-ver-stack .vvs-ico i:nth-child(2){top:4.8px;opacity:.7}
.v-ver-stack .vvs-ico i:nth-child(3){top:8.6px}
.v-ver-stack b{font-size:11.5px;font-weight:800;color:#c9f2ff;line-height:1}
.ver-pop{
  position:fixed;z-index:1300;width:242px;max-height:340px;overflow:auto;
  background:linear-gradient(168deg,#22304f,#1a2440);border:1px solid rgba(96,182,255,.5);border-radius:12px;
  box-shadow:0 16px 48px rgba(0,20,60,.6),0 0 30px rgba(64,158,255,.2);padding:8px;
}
.ver-pop-head{font-size:11.5px;color:#8fa9d6;padding:2px 4px 8px;font-weight:600}
.ver-pop-item{display:flex;align-items:center;gap:9px;width:100%;padding:6px;border-radius:9px;border:1px solid transparent;background:transparent;cursor:pointer;transition:all .15s ease;text-align:left}
.ver-pop-item:hover{background:rgba(64,158,255,.14);border-color:rgba(64,216,255,.35)}
.ver-pop-item.is-cur{border-color:rgba(64,216,255,.45);background:rgba(64,216,255,.1)}
.vpi-thumb{width:52px;height:32px;border-radius:6px;overflow:hidden;background:#0d1428;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.vpi-thumb img,.vpi-thumb video{width:100%;height:100%;object-fit:cover}
.vpi-txt{font-size:12.5px;color:#d8e6ff;font-weight:600;display:flex;flex-direction:column;gap:2px;align-items:flex-start}
.vpi-txt em{font-style:normal;font-size:10.5px;color:#7fe0ff;font-weight:700}
/* v1268: 库存音频卡 */
.stock-audio{display:flex;align-items:center;gap:10px;width:100%;height:100%;padding:8px}
.stock-audio .sa-ico{font-size:30px;flex-shrink:0;filter:drop-shadow(0 0 8px rgba(64,216,255,.45))}
.stock-audio .sa-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.stock-audio .sa-name{font-size:12px;color:#d8e6ff;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stock-audio audio{width:100%;height:30px}

.u-auth-row{display:flex;align-items:center;gap:10px;padding:8px 0 2px;flex-wrap:wrap}
.u-auth-info{flex:1;font-size:13px;color:var(--text)}
.u-card-meta{display:flex;flex-direction:column;gap:6px;padding-top:6px}
.u-card-line{display:flex;align-items:center;gap:8px;font-size:12.5px}
.u-card-line .si-k{color:var(--dim);min-width:68px}
.u-card-line .si-v{color:var(--text);font-weight:600}

.ap-mini-select{
  padding:6px 10px;border-radius:7px;border:1px solid var(--border2);
  background:rgba(0,0,0,.35);color:var(--text);font-size:12px;
}
.ap-gen-result{
  width:100%;min-height:76px;max-height:150px;margin-top:6px;padding:8px 10px;
  border-radius:8px;border:1px solid var(--border2);background:rgba(0,0,0,.35);
  color:#a8e6cf;font-family:monospace;font-size:12px;resize:vertical;
}
.ap-users-list{
  margin-top:6px;border:1px solid var(--border2);border-radius:8px;
  background:rgba(0,0,0,.28);max-height:240px;overflow-y:auto;font-size:12px;
}
.ap-users-empty{text-align:center;color:var(--dim);padding:18px 0}
.ap-cloud-sub{margin:10px 0 6px;padding:6px 10px;font-size:12px;color:#7fd3ff;border-left:3px solid #2b8fd8;background:rgba(43,143,216,.08);border-radius:4px} /* v1351: 云端激活记录小节标题 */
.ap-cloud-sub.warn{color:#ffb46e;border-left-color:#d88a2b;background:rgba(216,138,43,.08)}
.ap-user-row{
  display:grid;grid-template-columns:1.5fr 0.9fr 1.25fr 1.15fr;
  gap:6px;align-items:center;padding:7px 10px;border-bottom:1px solid rgba(255,255,255,.05);
}
.ap-user-row:last-child{border-bottom:none}
.ap-user-head{background:rgba(255,255,255,.04);font-weight:700;color:var(--dim)}
.ap-user-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ap-user-sub{opacity:.72;font-size:11px;margin-top:2px;color:var(--dim)} /* v1353: 云端码行第二行（到期/永久）弱化显示 */
.ap-user-code{font-family:monospace;font-size:11px;color:#8fb8d8}
.ap-user-at{font-size:11px;color:#9ab}
.ap-user-act{display:flex;gap:4px;flex-wrap:wrap}
.ap-user-tag{display:inline-block;padding:1px 6px;border-radius:5px;font-size:11px;font-weight:700}
.ap-user-tag.ok{background:rgba(46,210,138,.15);color:#2fd28a}
.ap-user-tag.warn{background:rgba(255,176,32,.15);color:#ffb020}
.ap-user-tag.ban{background:rgba(255,80,80,.18);color:#ff7070}
.ap-user-tag.admin{background:rgba(160,96,255,.2);color:#cba6ff}
/* v1329: 刷新用户列表按钮重做——SVG 循环箭头图标 + 悬停旋转 + 刷新中持续旋转动效 */
.ap-refresh-users{display:inline-flex;align-items:center;gap:6px;justify-content:center}
.ap-ref-ico{flex:0 0 auto;transition:transform .45s cubic-bezier(.35,.9,.35,1)}
.ap-refresh-users:hover .ap-ref-ico{transform:rotate(180deg)}
.ap-refresh-users.spinning .ap-ref-ico{animation:apRefSpin .8s linear infinite}
@keyframes apRefSpin{to{transform:rotate(360deg)}}


/* ═══════ v1322: 设置中心左栏管理员工具整编（用户中心四功能移居 + 自绘纵向滑块）═══════ */
.st-col-user .st-panel{position:relative}
/* 生码/用户管理/版本发布行——窄栏纵排 */
.sat-gen-row{flex-wrap:wrap;gap:6px}
.sat-gen-row .ap-mini-select,.sat-gen-row input[type=number],.sat-gen-row input[type=text],.sat-gen-row input[type=file]{
  flex:1 1 100%;min-width:0;width:100%;
}
.sat-gen-row input[type=file]{font-size:11px;color:var(--dim)}
.sat-gen-row button{flex:1 1 auto}
.st-col-user .ap-gen-result{height:88px;min-height:64px;max-height:120px;font-size:11.5px}
.st-col-user .ap-users-list{max-height:190px;overflow-y:auto}
/* 用户行窄栏两列折行布局（原 6 列在 300px 栏里挤不下） */
.st-col-user .ap-user-row{grid-template-columns:1fr 1fr;gap:3px 8px;padding:7px 8px}
.st-col-user .ap-user-cell{white-space:normal;word-break:break-all}
.st-col-user .ap-user-act{justify-content:flex-end}
/* 左栏激活码脱敏行 */
.st-col-user .si-v.mono{word-break:break-all;text-align:right}


/* ═══════ v1242: 版本徽章改版（工作台色调 · 带边框 · 不用 emoji）═══════ */
.v-ver-btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:26px;height:24px;padding:0 7px;
  font-size:11.5px;font-weight:700;border-radius:6px;
  background:linear-gradient(135deg,#0d2247,#152d5c);
  color:#a8c5ff;border:1.5px solid #2a4a78;
  cursor:pointer;transition:all .15s ease;
  font-feature-settings:"tnum";letter-spacing:.5px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
.v-ver-btn:hover{
  border-color:var(--blue);color:#fff;
  background:linear-gradient(135deg,#1a3672,#214c9a);
  transform:translateY(-1px);
}
.v-ver-btn.active{
  border-color:#5a9bff;color:#fff;
  background:linear-gradient(135deg,#2f7bff,#4a8cf0);
  box-shadow:0 0 8px rgba(90,155,255,.4),inset 0 1px 0 rgba(255,255,255,.15);
}
.v-ver-btn.active::before{
  content:"●";margin-right:3px;font-size:8px;color:#fff;
  animation:ver-pulse 1.6s ease-in-out infinite;
}
@keyframes ver-pulse{50%{opacity:.4}}
.v-ver-btn.active:hover{filter:brightness(1.1)}

/* ═══════ v1242: 视频/资产列表改九宫格 ═══════ */
#video-list,#asset-list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  padding:6px 0;
}
@media (max-width:1400px){
  #video-list,#asset-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:880px){
  #video-list,#asset-list{grid-template-columns:1fr}
}
.v-card{
  /* v1242: 九宫格下需要固定比例，单卡 16:9 缩略图 */
  min-width:0;
}
.v-card .v-thumb,.v-card video.v-thumb{
  width:100%;aspect-ratio:16/9;
  height:auto!important;object-fit:cover;border-radius:6px;
}
.v-card .v-placeholder{aspect-ratio:16/9}

/* ═══════ v1242: 文本生成三按钮（剧本/分镜/资产）动效 ═══════ */
.btn-text-gen{
  position:relative;overflow:hidden;
}
.btn-text-gen.is-running{
  cursor:not-allowed;pointer-events:none;
  background:linear-gradient(135deg,#2f7bff,#5a9bff)!important;
  color:#fff!important;
}
.btn-text-gen.is-running .btn-spin{
  display:inline-block;width:14px;height:14px;
  border:2px solid rgba(255,255,255,.3);border-top-color:#fff;
  border-radius:50%;animation:btn-spin 0.8s linear infinite;
  vertical-align:-2px;margin-right:6px;
}
@keyframes btn-spin{to{transform:rotate(360deg)}}
.btn-text-gen.is-running::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.15) 50%,transparent 70%);
  animation:gen-shine 1.4s linear infinite;
}
@keyframes gen-shine{to{transform:translateX(100%)}}
.btn-text-gen.is-failed{
  background:linear-gradient(135deg,#ff5a6a,#e63d4d)!important;
  color:#fff!important;
}

/* ═══════ v1242: 挂机输出区域（顶栏新 tab）═══════ */
#module-automate,#module-history{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg)}
.auto-pane{flex:1;overflow:auto;padding:14px 18px}
.auto-header{display:flex;align-items:center;gap:14px;padding:14px 18px;background:var(--panel);border-bottom:1px solid var(--border)}
.auto-header h2{font-size:16px;font-weight:700;flex:1}
.auto-pipeline{display:flex;gap:8px;overflow-x:auto;padding:14px 0;flex-shrink:0}
.auto-node{flex:0 0 auto;background:var(--card);border:1.5px solid var(--border);border-radius:10px;padding:14px 16px;min-width:160px;text-align:center;position:relative}
.auto-node.active{border-color:var(--blue);box-shadow:0 0 12px rgba(47,123,255,.3)}
.auto-node.done{border-color:var(--green)}
.auto-node.err{border-color:var(--red)}
.auto-node h3{font-size:13px;font-weight:700;margin-bottom:6px}
.auto-node .auto-node-state{font-size:11px;color:var(--muted)}
.auto-node.active .auto-node-state{color:var(--blue)}
.auto-node.done .auto-node-state{color:var(--green)}
.auto-node.err .auto-node-state{color:var(--red)}
.auto-arrow{flex:0 0 auto;align-self:center;color:var(--muted);font-size:18px}
.auto-progress{height:6px;background:var(--panel2);border-radius:3px;overflow:hidden;margin:4px 0 0;border:1px solid var(--border)}
.auto-progress-fill{height:100%;background:linear-gradient(90deg,var(--blue),#5a9bff);transition:width .3s}
.auto-body{display:flex;gap:14px;height:calc(100% - 200px);min-height:300px}
.auto-tasks{flex:1;overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--card)}
.auto-tasks table{width:100%;border-collapse:collapse;font-size:12.5px}
.auto-tasks th{background:var(--panel2);padding:9px 10px;text-align:left;font-weight:700;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1}
.auto-tasks td{padding:9px 10px;border-bottom:1px solid rgba(30,58,95,.4)}
.auto-tasks tr:hover{background:rgba(47,123,255,.06)}
.auto-tasks .st-mini{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:700}
.auto-tasks .st-ok{background:rgba(47,210,138,.15);color:var(--green)}
.auto-tasks .st-run{background:rgba(47,123,255,.15);color:var(--blue)}
.auto-tasks .st-err{background:rgba(255,90,106,.15);color:var(--red)}
.auto-tasks .st-wait{background:rgba(143,168,199,.15);color:var(--muted)}
.auto-detail{width:340px;overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--card);padding:14px}
.auto-detail h3{font-size:13.5px;font-weight:700;margin-bottom:10px;color:var(--blue)}
.auto-detail .ad-row{margin-bottom:8px;font-size:12.5px}
.auto-detail .ad-row b{color:var(--muted);margin-right:5px}
.auto-detail .ad-log{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px;font-family:monospace;font-size:11.5px;max-height:160px;overflow:auto;margin-top:4px}
.auto-detail .ad-log div{padding:2px 0;border-bottom:1px dashed rgba(143,168,199,.15)}
.auto-actions{display:flex;gap:8px;margin-top:14px}
.auto-btn{padding:9px 16px;border-radius:8px;font-weight:700;font-size:13px;border:1px solid var(--border);background:var(--panel2);color:var(--text);cursor:pointer;transition:.15s}
.auto-btn:hover{border-color:var(--blue);background:#16305a}
.auto-btn.danger{color:var(--red);border-color:#5d2940}
.auto-btn.danger:hover{background:rgba(255,90,106,.1)}
.auto-btn.primary{background:var(--grad);color:#fff;border-color:transparent}
.auto-empty{padding:60px 20px;text-align:center;color:var(--muted)}

/* ═══════ v1242: 历史输出区域 ═══════ */
.hist-tabs{display:flex;gap:0;background:var(--panel);border-bottom:1px solid var(--border)}
.hist-tab{padding:13px 24px;font-size:13.5px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:2.5px solid transparent;transition:.15s}
.hist-tab:hover{color:var(--text)}
.hist-tab.active{color:#fff;border-bottom-color:var(--blue);text-shadow:0 0 10px rgba(47,123,255,.4)}
.hist-pane{flex:1;overflow:auto;padding:14px 18px}
.hist-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.hist-toolbar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--panel);border-bottom:1px solid var(--border);font-size:12.5px}

/* ═══════ v1242: 铁头 Agent 聊天窗口 ═══════ */
#agent-dock{position:fixed;bottom:0;right:0;width:380px;height:520px;background:var(--panel);border:1px solid var(--border);border-radius:12px 12px 0 0;box-shadow:0 -4px 24px rgba(0,0,0,.5);display:none;flex-direction:column;z-index:80}
#agent-dock.open{display:flex}
.agent-head{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--border);background:var(--panel2);border-radius:12px 12px 0 0}
.agent-head b{flex:1;font-size:13.5px}
.agent-head .agent-close{cursor:pointer;color:var(--muted);font-size:18px}
.agent-head .agent-close:hover{color:#fff}
.agent-body{flex:1;overflow-y:auto;padding:12px 14px;font-size:12.5px;line-height:1.55}
.agent-msg{margin-bottom:10px;padding:9px 12px;border-radius:9px;max-width:88%}
.agent-msg.user{background:rgba(47,123,255,.15);color:var(--text);margin-left:auto;border:1px solid rgba(90,155,255,.3)}
.agent-msg.bot{background:var(--card);border:1px solid var(--border);color:var(--text)}
.agent-msg.tool{background:rgba(47,210,138,.08);color:var(--green);font-family:monospace;font-size:11.5px;border:1px solid rgba(47,210,138,.3)}
.agent-msg.err{background:rgba(255,90,106,.1);color:var(--red);border:1px solid rgba(255,90,106,.3)}
.agent-input{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--border);background:var(--panel2)}
.agent-input textarea{flex:1;min-height:36px;max-height:120px;resize:none;padding:8px 10px;font-size:12.5px;background:var(--bg);border:1px solid var(--border);border-radius:8px}
.agent-input button{padding:8px 14px;background:var(--grad);color:#fff;border-radius:8px;font-weight:700;font-size:12.5px}
.agent-toggle{position:fixed;bottom:14px;right:14px;z-index:79;width:48px;height:48px;border-radius:50%;background:var(--grad);box-shadow:0 4px 14px rgba(47,123,255,.4);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:22px;transition:.15s}
.agent-toggle:hover{transform:scale(1.05)}
.agent-quick{padding:6px 12px;border:1px solid var(--border);border-radius:14px;font-size:11.5px;color:var(--muted);cursor:pointer;background:var(--card);transition:.15s}
.agent-quick:hover{border-color:var(--blue);color:#fff}

/* ═══════ v1242: 剧本区顶部推理模型栏 + 三按钮动效与取消暂停 ═══════ */
#module-script{display:flex;flex-direction:column;height:100%;overflow:hidden}
#module-script.hidden,#module-automate.hidden,#module-history.hidden{display:none!important}
.script-top-bar{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}
.stb-label{font-size:12.5px;font-weight:700;color:var(--text)}
.stb-select{width:280px;max-width:50vw;height:30px;padding:0 10px;font-size:12px;border-radius:6px;background:var(--bg);border:1px solid var(--border);color:var(--text)}
.stb-hint{font-size:11.5px;color:var(--muted);flex:1;min-width:180px}
.stb-agent-btn{background:linear-gradient(135deg,#1d4ed8,#3b82f6)!important;color:#fff!important;border-color:#60a5fa!important;padding:5px 12px!important;font-weight:700!important}
.gen-btn-row{display:flex;gap:8px;align-items: stretch;margin-top:8px}
.gen-btn-row .magic-btn{flex:1;margin-top:0!important;font-size:13px!important;padding:9px 12px!important}
.cancel-gen-btn{padding:0 14px;border-radius:8px;font-size:12.5px;font-weight:700;background:rgba(255,90,106,.16);color:#ff6b7a;border:1px solid rgba(255,90,106,.45);cursor:pointer;transition:.15s;white-space:nowrap}
.cancel-gen-btn:hover{background:rgba(255,90,106,.28);color:#fff}
.mh-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media (max-width:1300px){.mh-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:820px){.mh-grid{grid-template-columns:1fr}}

/* ============================================================
   v1243 视频输出区域（严格按参考图1：左九宫格 + 右提示词+参数+全宽生成按钮）
   ============================================================ */
.v1243-video-wrap{
  display:grid; grid-template-columns:minmax(400px,1fr) minmax(520px,1fr); gap:16px;
  padding:20px; height:calc(100% - 14px); box-sizing:border-box;
  background:linear-gradient(180deg,#1a2542 0%,#151f38 55%,#121a30 100%);
  border-radius:14px; margin:0 14px 14px; width:calc(100% - 28px);
}
.v1243-video-left{display:flex; flex-direction:column; min-height:0; gap:12px}
.v1243-left-head{display:flex; align-items:center; justify-content:space-between; padding:8px 4px}
.v1243-left-title{display:flex; align-items:center; gap:10px; color:#e6efff; font-weight:700; font-size:15px}
.v1243-add-btn{background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%); color:#fff; border:none; padding:9px 18px; border-radius:10px; font-weight:600; font-size:13px; cursor:pointer; box-shadow:0 4px 14px rgba(59,130,246,.35); transition:transform .15s,box-shadow .2s}
.v1243-add-btn:hover{transform:translateY(-1px); box-shadow:0 6px 20px rgba(59,130,246,.5)}
.v1243-9grid{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; overflow-y:auto; padding:6px 4px 14px; flex:1 1 auto; min-height:0}
.v1243-9grid::-webkit-scrollbar{width:8px}
.v1243-9grid::-webkit-scrollbar-thumb{background:rgba(125,158,255,.25); border-radius:4px}
.v1243-card{position:relative; background:linear-gradient(180deg,#1a2440 0%,#131c34 100%); border:1.5px solid #2a3658; border-radius:12px; overflow:hidden; cursor:pointer; transition:all .2s; aspect-ratio:16/9; min-height:140px; display:flex; align-items:center; justify-content:center}
.v1243-card:hover{border-color:#3b82f6; transform:translateY(-2px); box-shadow:0 8px 24px rgba(59,130,246,.25)}
.v1243-card.active{border-color:#3b82f6; box-shadow:0 0 0 2px rgba(59,130,246,.4) inset, 0 8px 24px rgba(59,130,246,.25)}
.v1243-card-thumb{position:absolute; inset:0; background-size:cover; background-position:center; background-color:#1c2742}
.v1243-card-thumb img{width:100%; height:100%; object-fit:cover; display:block}
.v1243-card-play{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:42px; height:42px; border-radius:50%; background:rgba(8,15,32,.55); display:flex; align-items:center; justify-content:center; font-size:18px; color:#fff; pointer-events:none}
.v1243-card-status{position:absolute; top:8px; right:8px; padding:3px 8px; border-radius:6px; font-size:11px; font-weight:600; backdrop-filter:blur(6px); display:flex; align-items:center; gap:4px}
.v1243-card-status.done{background:rgba(34,197,94,.85); color:#fff}
.v1243-card-status.gen{background:rgba(59,130,246,.85); color:#fff}
.v1243-card-status.wait{background:rgba(148,163,184,.55); color:#fff}
.v1243-card-status.err{background:rgba(239,68,68,.85); color:#fff}
.v1243-card-title{position:absolute; bottom:8px; left:8px; right:8px; padding:4px 8px; border-radius:6px; background:linear-gradient(180deg,transparent,rgba(8,15,32,.85)); font-size:11px; color:#c7d2fe; display:flex; justify-content:space-between; align-items:center; gap:6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.v1243-card-badges{position:absolute; bottom:30px; left:8px; display:flex; gap:4px; font-size:10px}
.v1243-card-badge{background:rgba(8,15,32,.65); padding:2px 6px; border-radius:4px; color:#cbd5e1}
.v1243-card-name{position:absolute; top:8px; left:8px; background:rgba(8,15,32,.7); padding:3px 8px; border-radius:6px; font-size:12px; font-weight:700; color:#fff}
.v1243-left-foot{padding:8px 4px; font-size:12px; color:#94a3b8; border-top:1px solid rgba(125,158,255,.12); text-align:right}

/* 右栏：提示词 + 参数 + 生成 */
.v1243-video-right{display:flex; flex-direction:column; gap:14px; min-height:0; position:relative; overflow:hidden; flex:1 1 auto}
.v1243-pm-head{display:flex; align-items:center; justify-content:space-between; padding:4px}
.v1243-pm-title{display:flex; align-items:center; gap:10px; color:#e6efff; font-weight:700; font-size:15px}
.v1243-pm-btns{display:flex; gap:8px; flex-wrap:wrap}
/* v1364: 视频区 4 个功能按钮在窄面板被 flex 挤压→文字折行显小；锁定单行+禁收缩，与图片区按钮完全一致（放不下自动换行不再压缩按钮） */
.v1243-pm-btns .v1243-ghost-btn{white-space:nowrap; flex-shrink:0}
.v1243-ghost-btn{background:rgba(59,130,246,.12); color:#93c5fd; border:1px solid rgba(59,130,246,.25); padding:7px 14px; border-radius:8px; font-size:12px; font-weight:500; cursor:pointer; display:flex; align-items:center; gap:5px; transition:all .15s}
.v1243-ghost-btn:hover{background:rgba(59,130,246,.2); color:#bfdbfe; border-color:rgba(59,130,246,.4)}
.v1243-ico{font-style:normal; display:inline-block}

.v1243-pm-card{background:linear-gradient(180deg,#1a2440 0%,#131c34 100%); border:1.5px solid #2a3658; border-radius:12px; padding:12px 14px; display:flex; flex-direction:column; gap:6px; min-height:0; flex:1 1 auto; overflow:visible}
.v1243-pm-actions{display:flex; align-items:center; gap:8px; padding-bottom:6px; border-bottom:1px dashed rgba(125,158,255,.12)}
.v1243-pm-label{font-size:12px; color:#94a3b8; font-weight:500}
.v1243-pm-spacer{flex:1}
.v1243-link-btn{background:transparent; border:none; color:#93c5fd; font-size:12px; cursor:pointer; display:flex; align-items:center; gap:4px; padding:4px 6px; border-radius:4px; transition:background .15s}
.v1243-link-btn:hover{background:rgba(59,130,246,.12)}
.v1243-pm-textarea{flex:1 1 auto; min-height:140px; width:100%; background:#0e1830; border:1.5px solid #2a3658; border-radius:8px; padding:12px 16px 12px 14px; color:#e6efff; font-size:13.5px; line-height:1.7; outline:none; overflow-y:auto; resize:none; transition:border-color .15s; box-sizing:border-box}
.v1243-pm-textarea::-webkit-scrollbar{width:8px}
.v1243-pm-textarea::-webkit-scrollbar-thumb{background:rgba(125,158,255,.3); border-radius:4px}
.v1243-pm-textarea::-webkit-scrollbar-track{background:transparent}
.v1243-pm-textarea:focus{border-color:#3b82f6; box-shadow:0 0 0 3px rgba(59,130,246,.15)}
.v1243-pm-textarea:empty::before{content:attr(data-placeholder); color:#5b6b8e; pointer-events:none}
.v1243-pm-foot{display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:48px; flex-wrap:wrap}
/* v1285: 引用条=文本框正下方独立整行——头像一个挨一个自然展开、放不下自动换行、全部可见绝不裁剪，➕紧跟最后一张头像 */
.v1243-cite-bar{display:flex; align-items:center; gap:.59em; padding:.44em .74em .15em; flex:0 0 auto; height:auto; min-width:0; flex-wrap:wrap; overflow:visible; font-size:13.5px}
.v1243-pm-foot{display:flex; align-items:center; gap:10px}
.v1243-cite-bar.hidden{display:none}
.v1243-cite-item{position:relative; width:54px; height:54px; border-radius:8px; overflow:hidden; background:#1a2440; border:1.5px solid #2a3658; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:transform .15s}
.v1243-cite-item:hover{transform:scale(1.06); border-color:#3b82f6}
.v1243-cite-item img{width:100%; height:100%; object-fit:cover}
.v1243-cite-remove{position:absolute; top:-4px; right:-4px; width:18px; height:18px; border-radius:50%; background:#ef4444; color:#fff; font-size:11px; line-height:18px; text-align:center; cursor:pointer; border:none; box-shadow:0 1px 4px rgba(0,0,0,.4)}
.v1243-cite-add{width:54px; height:54px; border-radius:8px; background:transparent; border:2px dashed #4a5878; color:#93c5fd; cursor:pointer; font-size:22px; display:flex; align-items:center; justify-content:center; transition:all .15s}
.v1243-cite-add:hover{border-color:#3b82f6; background:rgba(59,130,246,.08); color:#bfdbfe}
.v1243-cite-tip{position:relative; width:54px; height:54px; cursor:pointer}
.v1243-pm-count{font-size:11px; color:#94a3b8}

/* 参数面板 */
.v1243-param-panel{background:linear-gradient(180deg,#1a2440 0%,#131c34 100%); border:1.5px solid #2a3658; border-radius:12px; padding:10px 14px 8px; flex:0 0 auto}
.v1243-param-row.three{grid-template-columns:repeat(3,1fr)}
.v1243-param-title{font-size:12px; font-weight:600; color:#94a3b8; margin-bottom:7px; letter-spacing:.5px}
.v1243-param-row{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:7px}
.v1243-param-row:last-of-type{margin-bottom:0}
.v1243-param-field{display:flex; flex-direction:column; gap:3px; min-width:0}
.v1243-param-field.grow{grid-column:1 / -1}
.v1243-param-field label{font-size:11px; color:#94a3b8; font-weight:500}
.v1243-param-field select{
  width:100%; padding:8px 12px; background:#0e1830; border:1.5px solid #2a3658; border-radius:8px;
  color:#e6efff; font-size:13px; cursor:pointer; outline:none; transition:border-color .15s;
  appearance:none; -webkit-appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='%2393c5fd'%3E%3Cpath d='M5 6 0 0h10z'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 10px center; padding-right:28px;
}
.v1243-param-field select:focus{border-color:#3b82f6}
.v1243-seg-group{display:flex; background:#0e1830; border:1.5px solid #2a3658; border-radius:8px; padding:3px; gap:2px}
.v1243-seg-btn{flex:1; background:transparent; border:none; color:#94a3b8; padding:6px; font-size:12px; font-weight:600; cursor:pointer; border-radius:5px; transition:all .15s}
.v1243-seg-btn:hover{color:#e6efff}
.v1243-seg-btn.active{background:linear-gradient(135deg,#3b82f6,#2563eb); color:#fff; box-shadow:0 2px 8px rgba(59,130,246,.35)}
.v1243-param-hint{font-size:10.5px; color:#64748b; margin-top:3px; text-align:right}

/* 全宽生成按钮 */
.v1243-gen-btn{
  width:100%; padding:14px 18px; border-radius:12px;
  background:linear-gradient(135deg,#3b82f6 0%,#2563eb 50%,#1d4ed8 100%);
  color:#fff; border:none; cursor:pointer;
  display:flex; align-items:center; justify-content:center; gap:8px;
  font-size:15px; font-weight:600; letter-spacing:1px;
  box-shadow:0 6px 20px rgba(59,130,246,.4); transition:all .2s;
}
.v1243-gen-btn:hover{transform:translateY(-1px); box-shadow:0 8px 28px rgba(59,130,246,.55)}
.v1243-gen-btn:disabled{opacity:.55; cursor:not-allowed; transform:none}
.v1243-gen-btn .v1243-ico{font-size:18px}
.v1243-gen-btn .v1243-gen-label{font-size:15px}
.v1243-gen-btn.is-running{background:linear-gradient(135deg,#fbbf24,#f59e0b); pointer-events:none}
.v1243-gen-btn.is-error{background:linear-gradient(135deg,#ef4444,#dc2626)}

/* v1243 通用徽章 */
.cnt-badge{background:rgba(59,130,246,.18); color:#93c5fd; padding:2px 8px; border-radius:6px; font-size:12px; font-weight:700; min-width:22px; text-align:center; display:inline-block}

/* 旧 .video-grid / .col-right / .v-list 强制不渲染（避免视觉残留） */
#module-video > .video-grid{display:none !important}

/* ═══════════════ v1245: 旧版卡片窗口设计回归 · 九宫格排列 ═══════════════
   卡片本体用旧版 .v-card 设计（头部编号/状态/删除 + 大画面媒体区 + 悬停控制条），
   容器保持九宫格 3 列，纵向滚动 + 右侧自绘竖向滑块（csb 引擎挂 video-list/asset-list） */
.v1243-9grid{grid-auto-rows:max-content; overflow-x:hidden; padding-right:6px}
.v1243-9grid .v-card{min-width:0}
.v1243-9grid .v-card .v-thumb{height:auto; aspect-ratio:16/9}
.v1243-9grid .v-card .v-placeholder{height:auto; aspect-ratio:16/9}
.v1243-9grid .v-card .v-media .v-thumb{height:auto; aspect-ratio:16/9}

/* 提示词输入区引用图悬停放大（全局，与原 prompt-cite-bar 共用） */
.ref-hover-pop{
  position:fixed; z-index:99999; max-width:360px; max-height:360px;
  background:#0e1830; border:1.5px solid #3b82f6; border-radius:10px;
  padding:6px; box-shadow:0 12px 40px rgba(0,0,0,.55);
  display:flex; flex-direction:column; gap:6px;
  pointer-events:none; opacity:0; transition:opacity .15s;
}
.ref-hover-pop.show{opacity:1}
.ref-hover-pop img{width:100%;height:100%;max-width:340px;max-height:300px;object-fit:contain;background:#020617;border-radius:6px}
.ref-hover-pop .name{font-size:12px;color:#93c5fd;font-weight:600;text-align:center;padding:4px}

/* ═══════════ v1244 工作台九宫格卡片 + 参考行 + 资产面板 ═══════════ */
.v1243-vcard{background:linear-gradient(180deg,#1a2440 0%,#131c34 100%); border:1.5px solid #2a3658; border-radius:12px; overflow:hidden; cursor:pointer; transition:all .18s; display:flex; flex-direction:column}
.v1243-vcard:hover{border-color:#3b82f6; transform:translateY(-2px); box-shadow:0 8px 24px rgba(59,130,246,.22)}
.v1243-vcard.selected{border-color:#3b82f6; box-shadow:0 0 0 2px rgba(59,130,246,.4) inset, 0 8px 24px rgba(59,130,246,.22)}
.v1243-vhead{display:flex; align-items:center; gap:6px; padding:8px 10px 6px}
.v1243-vno{font-size:13px; font-weight:700; color:#e6efff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:text}
.v1243-vno input{width:90px; background:#0e1830; border:1px solid #3b82f6; border-radius:5px; color:#e6efff; font-size:12px; padding:2px 6px; outline:none}
.v1243-vhead .v-ver-row{margin-left:0}
.v1243-vhead .v1243-st{margin-left:auto}
.v1243-st{padding:2px 8px; border-radius:6px; font-size:11px; font-weight:600; white-space:nowrap; display:flex; align-items:center; gap:4px}
.v1243-st.idle{background:rgba(148,163,184,.18); color:#94a3b8}
.v1243-st.run{background:rgba(59,130,246,.22); color:#93c5fd}
.v1243-st.done{background:rgba(34,197,94,.16); color:#4ade80}
.v1243-st.failed{background:rgba(239,68,68,.18); color:#f87171}
.v1243-cover{position:relative; aspect-ratio:16/9; background:#0e1830; overflow:hidden; display:flex; align-items:center; justify-content:center}
.v1243-cover.empty{flex-direction:column; gap:6px; color:#5b6b8e}
.v1243-cover.empty i{font-style:normal; font-size:11px}
.v1243-ph{font-size:26px; opacity:.6}
.v1243-vthumb{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.v1243-athumb{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.v1243-play{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:40px; height:40px; border-radius:50%; background:rgba(8,15,32,.6); display:flex; align-items:center; justify-content:center; font-size:16px; color:#fff; pointer-events:auto; transition:all .15s; padding-left:3px}
.v1243-vcard:hover .v1243-play{background:rgba(59,130,246,.85); transform:translate(-50%,-50%) scale(1.08)}
.v1243-vmeta{display:flex; gap:6px; padding:8px 10px 0}
.v1243-pill{font-size:10.5px; padding:2px 8px; border-radius:999px; background:rgba(59,130,246,.12); color:#93c5fd; border:1px solid rgba(59,130,246,.22)}
.v1243-vfoot{display:flex; align-items:center; gap:6px; padding:7px 10px 9px}
.v1243-vdesc{flex:1; font-size:11.5px; color:#8ea3c8; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.v1243-vacts{display:flex; gap:4px; align-items:center}
.v1243-vmenu,.v1243-vdl{background:transparent; border:none; color:#94a3b8; font-size:12px; cursor:pointer; padding:2px 6px; border-radius:5px; letter-spacing:1px; transition:all .15s}
.v1243-vdl{letter-spacing:0}
.v1243-vmenu:hover,.v1243-vdl:hover{background:rgba(59,130,246,.15); color:#bfdbfe}
.v1243-vfail{padding:6px 10px; font-size:11px; color:#f87171; background:rgba(239,68,68,.08); border-top:1px solid rgba(239,68,68,.2)}
.v1243-empty{grid-column:1 / -1; text-align:center; color:#5b6b8e; font-size:13px; padding:60px 0; line-height:2}
/* 参考图行 */
.v1243-ref-row-wrap{padding:2px 0}
.v1243-ref-row{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.v1243-ref-up{width:34px; height:34px; border-radius:8px; background:rgba(59,130,246,.1); border:1px solid rgba(59,130,246,.25); color:#93c5fd; cursor:pointer; font-size:15px; display:flex; align-items:center; justify-content:center; transition:all .15s; flex:none}
.v1243-ref-up:hover{background:rgba(59,130,246,.22); color:#bfdbfe}
.v1243-ref-row .v1243-cite-item{width:44px; height:44px}
.v1243-cite-item.audio{font-size:18px; color:#93c5fd}
.v1243-cite-x{position:absolute; top:-4px; right:-4px; width:16px; height:16px; border-radius:50%; background:#ef4444; color:#fff; font-size:10px; line-height:16px; text-align:center; cursor:pointer; border:none; box-shadow:0 1px 4px rgba(0,0,0,.4)}
.v1243-ref-row .v1243-cite-add{width:44px; height:44px; font-size:20px}
.v1243-ref-row .lc-rename{width:70px; background:#0e1830; border:1px solid #3b82f6; border-radius:5px; color:#e6efff; font-size:11px; padding:3px 6px; outline:none}
/* 卡片菜单 */
.v1243-menu{position:fixed; z-index:9999; background:#16213e; border:1px solid #2a3658; border-radius:10px; box-shadow:0 12px 36px rgba(0,0,0,.5); padding:5px; min-width:150px}
.v1243-menu button{display:block; width:100%; text-align:left; background:transparent; border:none; color:#c7d2fe; font-size:12.5px; padding:8px 12px; border-radius:7px; cursor:pointer; white-space:nowrap}
.v1243-menu button:hover{background:rgba(59,130,246,.18); color:#fff}
/* v1408: 移动菜单三项——同款亮面小框 + 图标徽章（与卡片悬停图标同风格） */
.v1243-menu .mv-item{display:flex;align-items:center;gap:9px;margin:2px 0;padding:6px 9px;border-radius:9px;
  background:linear-gradient(180deg,rgba(255,255,255,.08) 0%,rgba(255,255,255,.02) 50%,rgba(88,140,255,.08) 100%),rgba(20,32,60,.55);
  border:1px solid rgba(150,185,245,.26);box-shadow:inset 0 1px 0 rgba(255,255,255,.07);transition:.15s}
.v1243-menu .mv-item:hover{background:linear-gradient(180deg,rgba(255,255,255,.13) 0%,rgba(255,255,255,.03) 50%,rgba(96,150,255,.18) 100%),rgba(30,55,105,.70);
  border-color:rgba(180,208,255,.50)}
.mv-item .mv-ico{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:7px;flex:none;font-size:12px;
  background:linear-gradient(180deg,rgba(255,255,255,.12) 0%,rgba(255,255,255,.02) 50%,rgba(88,140,255,.10) 100%),rgba(13,24,48,.72);
  border:1px solid rgba(150,185,245,.30)}
/* 列表头小按钮 */
.v1243-head-acts{display:flex; align-items:center; gap:8px}
.v1243-mini-btn{width:32px; height:32px; border-radius:8px; background:rgba(59,130,246,.1); border:1px solid rgba(59,130,246,.25); color:#93c5fd; cursor:pointer; font-size:14px; display:flex; align-items:center; justify-content:center; transition:all .15s}
.v1243-mini-btn:hover{background:rgba(59,130,246,.22); color:#bfdbfe}
/* v1333: 库存刷新按钮点击旋转反馈（复用 apRefSpin 关键帧） */
.v1243-mini-btn.spinning{animation:apRefSpin .8s linear infinite}
/* v1292: 图片区顶部按钮色调统一——♻/一键生成图片/导入资产 与「新增图片」同色系同字号 */
.v1243-head-acts .v1292-tone{background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%); color:#fff; border:none; padding:9px 18px; border-radius:10px; font-weight:600; font-size:13px; box-shadow:0 4px 14px rgba(59,130,246,.35)}
.v1243-head-acts .v1292-tone:hover{background:linear-gradient(135deg,#4b8df8 0%,#2f6fd8 100%); color:#fff; transform:translateY(-1px); box-shadow:0 6px 20px rgba(59,130,246,.5)}
/* v1292: 一键生成图片确认弹窗 */
#okg-mask,#oks-mask{position:fixed;inset:0;z-index:1600;background:rgba(4,10,22,.68);display:flex;align-items:center;justify-content:center;animation:pmIn .15s ease} /* v1298: 视频区确认框(#oks-mask)补样式——v1295 漏配导致弹窗无定位不可见 */
.okg-box{width:min(460px,92vw);background:#101c31;border:1px solid #2a3f63;border-radius:14px;padding:22px 24px;box-shadow:0 18px 50px rgba(0,0,0,.55)}
.okg-head{font-size:16px;font-weight:800;color:#9ecbff;margin-bottom:12px}
.okg-body{font-size:13.5px;color:#d7e6ff;line-height:1.7;margin-bottom:12px}
.okg-body b{color:#fff}
.okg-safe{font-size:13px;font-weight:700;color:#7ee2a8;background:rgba(60,200,120,.1);border:1px solid rgba(110,220,150,.3);border-radius:9px;padding:10px 13px;margin-bottom:10px;line-height:1.6}
.okg-flow{font-size:12.5px;color:#8ba3c7;line-height:1.7;background:rgba(59,130,246,.07);border:1px solid rgba(59,130,246,.2);border-radius:9px;padding:10px 13px;margin-bottom:18px}
.okg-btns{display:flex;justify-content:flex-end;gap:10px}
.okg-cancel{padding:8px 18px;border-radius:9px;border:1px solid #33507e;background:#16233c;color:#c7d8f2;font-size:13px;font-weight:700;cursor:pointer}
.okg-cancel:hover{background:#1c2d4c}
.okg-ok{padding:8px 18px;border-radius:9px;border:1px solid #2f6bc4;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-size:13px;font-weight:800;cursor:pointer}
.okg-ok:hover{filter:brightness(1.15)}
/* 资产右面板：名称行 + 提示词 textarea */
.v1243-an-row{display:flex; gap:8px; align-items:center}
.v1243-an-input{flex:1; background:#0e1830; border:1.5px solid #2a3658; border-radius:8px; padding:8px 12px; color:#e6efff; font-size:13px; outline:none; transition:border-color .15s; min-width:0}
.v1243-an-input:focus{border-color:#3b82f6}
.v1243-an-sel{background:#0e1830; border:1.5px solid #2a3658; border-radius:8px; padding:8px 10px; color:#e6efff; font-size:13px; outline:none; cursor:pointer; flex:none}
.v1243-an-sel:focus{border-color:#3b82f6}
.v1243-an-textarea{flex:1 1 auto; min-height:140px; width:100%; background:#0e1830; border:1.5px solid #2a3658; border-radius:8px; padding:12px 16px 12px 14px; color:#e6efff; font-size:13.5px; line-height:1.7; outline:none; overflow-y:auto; resize:none; transition:border-color .15s; font-family:inherit; box-sizing:border-box}
.v1243-an-textarea::-webkit-scrollbar{width:8px}
.v1243-an-textarea::-webkit-scrollbar-thumb{background:rgba(125,158,255,.3); border-radius:4px}
.v1243-an-textarea::-webkit-scrollbar-track{background:transparent}
.v1243-an-textarea:focus{border-color:#3b82f6; box-shadow:0 0 0 3px rgba(59,130,246,.15)}
/* 参数四列行 */
.v1243-param-row.four{grid-template-columns:repeat(4,1fr)}
@media (max-width:1500px){.v1243-param-row.four{grid-template-columns:repeat(2,1fr)}}
/* 生成按钮重试态 */
.v1243-gen-btn.is-retry{background:linear-gradient(135deg,#f59e0b,#d97706)}
.v1243-gen-btn.is-retry:hover{box-shadow:0 8px 28px rgba(245,158,11,.45)}
/* 中央查看器兜底 */
.center-viewer{position:fixed; inset:0; z-index:9000; display:flex; align-items:center; justify-content:center}
.center-viewer.hidden{display:none}
.center-viewer .cv-backdrop{position:absolute; inset:0; background:rgba(4,8,20,.82); backdrop-filter:blur(4px)}
.center-viewer .cv-box{position:relative; z-index:1; width:min(1100px,92vw); height:min(720px,88vh); background:#101a33; border:1px solid #2a3658; border-radius:14px; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 24px 80px rgba(0,0,0,.6)}
.center-viewer .cv-head{display:flex; align-items:center; justify-content:space-between; padding:10px 14px; border-bottom:1px solid rgba(125,158,255,.12)}
.center-viewer .cv-title{color:#e6efff; font-weight:600; font-size:14px}
.center-viewer .cv-head-acts{display:flex; gap:8px}
.center-viewer .cv-dl-btn,.center-viewer .cv-close-btn{background:rgba(59,130,246,.12); border:1px solid rgba(59,130,246,.3); color:#93c5fd; border-radius:8px; padding:6px 12px; font-size:12px; cursor:pointer}
.center-viewer .cv-dl-btn:hover,.center-viewer .cv-close-btn:hover{background:rgba(59,130,246,.25); color:#fff}
.center-viewer .cv-body{flex:1; min-height:0; display:flex; align-items:center; justify-content:center; background:#0a1224; padding:10px}

/* ═══════════ v1244 历史输出区域（图1 视频历史 / 图2 资产历史） ═══════════ */
.mh-hint{color:#5b6b8e; font-size:12px; margin-left:8px}
#mh-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; padding:14px}
@media (max-width:1400px){#mh-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:1050px){#mh-grid{grid-template-columns:repeat(2,1fr)}}
.vhist-card{background:linear-gradient(180deg,#1a2440 0%,#131c34 100%); border:1.5px solid #2a3658; border-radius:12px; overflow:hidden; transition:all .18s; position:relative}
.vhist-card:hover{border-color:#3b82f6; transform:translateY(-2px); box-shadow:0 8px 24px rgba(59,130,246,.2)}
.vhist-card.sel{border-color:#f59e0b; box-shadow:0 0 0 2px rgba(245,158,11,.35)}
.vhist-head{display:flex; align-items:center; gap:8px; padding:9px 12px 7px}
.vhist-no{font-size:13px; font-weight:700; color:#e6efff; white-space:nowrap}
.vhist-name{flex:1; font-size:11.5px; color:#8ea3c8; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.vhist-pick{width:15px; height:15px; border-radius:4px; border:1.5px solid #3b4a75; cursor:pointer; flex:none; transition:all .12s; display:inline-block}
.vhist-pick:hover{border-color:#f59e0b}
.vhist-card.sel .vhist-pick{background:#f59e0b; border-color:#f59e0b; box-shadow:inset 0 0 0 2px #1a2440}
.vhist-media{position:relative; aspect-ratio:16/9; background:#0e1830; overflow:hidden}
.vhist-media img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.vhist-media video{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.vhist-ctrl{position:absolute; left:0; right:0; bottom:0; display:flex; align-items:center; gap:8px; padding:6px 10px; background:linear-gradient(0deg, rgba(4,8,20,.85) 0%, rgba(4,8,20,.35) 70%, transparent 100%)}
.vh-play,.vh-dl{width:26px; height:26px; border-radius:50%; background:rgba(59,130,246,.25); border:none; color:#dbeafe; font-size:11px; cursor:pointer; flex:none; transition:all .15s; display:flex; align-items:center; justify-content:center}
.vh-play{padding-left:2px}
.vh-play:hover,.vh-dl:hover{background:rgba(59,130,246,.6); color:#fff}
.vh-dl{border-radius:7px}
.vh-seek{flex:1; -webkit-appearance:none; height:4px; border-radius:2px; background:rgba(148,163,184,.3); outline:none; cursor:pointer; min-width:0}
.vh-seek::-webkit-slider-thumb{-webkit-appearance:none; width:12px; height:12px; border-radius:50%; background:#3b82f6; box-shadow:0 0 6px rgba(59,130,246,.8); cursor:pointer}
.vh-time{font-size:10.5px; color:#cbd5e1; white-space:nowrap; font-variant-numeric:tabular-nums}
.vhist-afoot{display:flex; align-items:center; gap:8px; padding:8px 12px 10px}
.vhist-fname{flex:1; font-size:11.5px; color:#8ea3c8; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.vhist-fail{padding:5px 12px; font-size:11px; color:#f87171; background:rgba(239,68,68,.08)}
/* 大图预览 */
#cmv-overlay{position:fixed; inset:0; z-index:9500; display:flex; align-items:center; justify-content:center}
#cmv-overlay .cmv-mask{position:absolute; inset:0; background:rgba(4,8,20,.86); backdrop-filter:blur(4px)}
#cmv-overlay .cmv-media{position:relative; z-index:1; max-width:92vw; max-height:90vh; border-radius:10px; box-shadow:0 24px 80px rgba(0,0,0,.6)}
#cmv-overlay .cmv-x{position:absolute; top:18px; right:22px; z-index:2; width:38px; height:38px; border-radius:50%; background:rgba(148,163,184,.15); border:1px solid rgba(148,163,184,.3); color:#e2e8f0; font-size:16px; cursor:pointer}
#cmv-overlay .cmv-x:hover{background:rgba(239,68,68,.5); border-color:#ef4444}
/* ═══════════ v1244 挂机输出区域（图3 自动任务监控面板） ═══════════ */
.auto-title-row{display:flex; align-items:center; gap:12px; flex:1}
.auto-title-row h2{margin:0; font-size:20px; color:#e6efff}
.auto-run-badge{padding:4px 14px; border-radius:999px; font-size:12.5px; font-weight:600; background:rgba(148,163,184,.15); color:#94a3b8; border:1px solid rgba(148,163,184,.25)}
.auto-run-badge.on{background:rgba(34,197,94,.16); color:#4ade80; border-color:rgba(34,197,94,.4); animation:autoPulse 1.6s infinite}
.auto-run-badge.ok{background:rgba(34,197,94,.16); color:#4ade80; border-color:rgba(34,197,94,.4)}
@keyframes autoPulse{0%,100%{opacity:1}50%{opacity:.65}}
.auto-sub{font-size:12px; color:#5b6b8e}
.auto-stepsbar{display:flex; align-items:center; gap:0; padding:12px 18px; background:rgba(13,22,45,.6); border:1px solid #232f52; border-radius:12px; margin:0 18px 10px; overflow-x:auto}
.auto-node{display:flex; flex-direction:column; align-items:center; gap:4px; min-width:86px; padding:8px 10px; border-radius:10px; transition:all .2s}
.auto-node .an-idx{width:26px; height:26px; border-radius:50%; background:rgba(148,163,184,.15); border:1.5px solid rgba(148,163,184,.3); color:#94a3b8; font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:center; transition:all .2s}
.auto-node .an-name{font-size:12px; color:#8ea3c8; white-space:nowrap}
.auto-node .auto-node-state{font-size:10.5px; color:#5b6b8e}
.auto-node.done .an-idx{background:rgba(34,197,94,.2); border-color:#22c55e; color:#4ade80}
.auto-node.done .an-idx::after{content:'✓'; font-size:13px}
.auto-node.done .an-idx{font-size:0}
.auto-node.done .an-name{color:#4ade80}
.auto-node.done .auto-node-state{color:#22c55e}
.auto-node.active .an-idx{background:rgba(59,130,246,.25); border-color:#3b82f6; color:#93c5fd; box-shadow:0 0 0 4px rgba(59,130,246,.15); animation:autoPulse 1.4s infinite}
.auto-node.active .an-name{color:#93c5fd}
.auto-node.active .auto-node-state{color:#3b82f6}
.auto-link{flex:1; height:2px; background:#232f52; min-width:18px; position:relative}
.auto-link::after{content:''; position:absolute; right:0; top:-3px; border:4px solid transparent; border-left-color:#232f52}
.auto-statline{display:flex; align-items:center; gap:14px; padding:8px 22px; font-size:13px; color:#8ea3c8}
.as-item b.n{font-size:16px; margin-left:2px}
.as-item b.n.ok{color:#4ade80}
.as-item b.n.run{color:#3b82f6}
.as-item b.n.wait{color:#f59e0b}
.as-item b.n.idle{color:#94a3b8}
.as-sep{color:#2a3658}
.auto-body{display:grid; grid-template-columns:1fr 340px; gap:14px; padding:0 18px 18px; align-items:start}
.auto-tasks{background:rgba(13,22,45,.6); border:1px solid #232f52; border-radius:12px; overflow:hidden}
.at-head{padding:10px 14px; font-size:13.5px; font-weight:700; color:#c7d2fe; border-bottom:1px solid rgba(125,158,255,.1)}
.auto-tasks table{width:100%; border-collapse:collapse; font-size:12px}
.auto-tasks th{padding:8px 10px; text-align:left; color:#5b6b8e; font-weight:600; font-size:11.5px; border-bottom:1px solid rgba(125,158,255,.1); white-space:nowrap}
.auto-tasks td{padding:8px 10px; border-bottom:1px solid rgba(125,158,255,.06); vertical-align:middle; color:#c7d2fe}
.auto-tasks tbody tr{cursor:pointer; transition:background .12s}
.auto-tasks tbody tr:hover{background:rgba(59,130,246,.07)}
.auto-tasks tbody tr.sel{background:rgba(59,130,246,.14); box-shadow:inset 3px 0 0 #3b82f6}
.auto-empty{text-align:center; color:#5b6b8e; padding:36px 0 !important}
.at-no{color:#5b6b8e; font-variant-numeric:tabular-nums}
.at-shot b{display:block; color:#e6efff; font-size:12px}
.at-shot span{display:block; color:#5b6b8e; font-size:10.5px; max-width:140px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.at-thumb{white-space:nowrap}
.at-thumb video,.at-thumb .at-ph{width:64px; height:36px; border-radius:6px; background:#0e1830; object-fit:cover; vertical-align:middle; display:inline-flex; align-items:center; justify-content:center; color:#3b4a75}
.at-thumb span{margin-left:6px; color:#8ea3c8; font-size:11px}
.at-prompt{color:#8ea3c8; max-width:220px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.at-refs{white-space:nowrap}
.at-refs img{width:30px; height:30px; border-radius:5px; object-fit:cover; margin-right:3px; vertical-align:middle; border:1px solid #2a3658}
.at-refs .at-aud{display:inline-flex; width:30px; height:30px; border-radius:5px; background:rgba(59,130,246,.12); align-items:center; justify-content:center; font-size:13px; margin-right:3px; vertical-align:middle}
.at-refs .at-aud.big{width:44px; height:44px; font-size:20px}
.at-refs b{margin-left:5px; color:#93c5fd}
.at-refs .at-none{color:#3b4a75}
.at-badge{padding:3px 10px; border-radius:6px; font-size:11px; font-weight:600; white-space:nowrap}
.at-badge.ok{background:rgba(34,197,94,.15); color:#4ade80}
.at-badge.run{background:rgba(59,130,246,.18); color:#93c5fd}
.at-badge.wait{background:rgba(245,158,11,.16); color:#fbbf24}
.at-badge.idle{background:rgba(148,163,184,.12); color:#94a3b8}
.at-badge.fail{background:rgba(239,68,68,.16); color:#f87171}
.at-ops button{background:rgba(59,130,246,.12); border:1px solid rgba(59,130,246,.28); color:#93c5fd; border-radius:6px; padding:4px 10px; font-size:11px; cursor:pointer; margin-right:4px}
.at-ops button:hover{background:rgba(59,130,246,.28); color:#fff}
.at-progress-row{display:flex; align-items:center; gap:12px; padding:10px 14px; color:#8ea3c8; font-size:12px}
.at-progress-row .auto-progress{flex:1}
.at-progress-row b{color:#93c5fd}
.auto-progress{height:8px; background:rgba(148,163,184,.15); border-radius:4px; overflow:hidden}
.auto-progress-fill{height:100%; background:linear-gradient(90deg,#3b82f6,#22d3ee); border-radius:4px; transition:width .4s}
/* 右侧详情面板 */
.auto-detail{background:rgba(13,22,45,.6); border:1px solid #232f52; border-radius:12px; display:flex; flex-direction:column; max-height:calc(100vh - 320px); overflow:hidden}
.ad-body{padding:12px 14px; overflow-y:auto; flex:1}
.adr-row{display:flex; align-items:center; gap:8px; margin-bottom:10px; flex-wrap:wrap}
.adr-k{color:#5b6b8e; font-size:12px}
.adr-row b{color:#e6efff; font-size:13px}
.adr-fill{margin-left:auto; font-size:10.5px; padding:2px 8px; border-radius:6px; background:rgba(148,163,184,.12); color:#94a3b8}
.adr-fill.ok{background:rgba(34,197,94,.14); color:#4ade80}
.adr-prompt{background:#0e1830; border:1px solid #232f52; border-radius:8px; padding:10px 12px; font-size:11.5px; line-height:1.7; color:#a5b4d4; max-height:130px; overflow-y:auto; margin-bottom:12px; word-break:break-all}
.adr-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-bottom:12px}
.adr-card .adr-img{position:relative; aspect-ratio:1; background:#0e1830; border-radius:8px; overflow:hidden; border:1px solid #232f52; display:flex; align-items:center; justify-content:center}
.adr-card .adr-img img{width:100%; height:100%; object-fit:cover}
.adr-badge{position:absolute; left:4px; bottom:4px; font-size:9.5px; padding:2px 6px; border-radius:5px}
.adr-badge.ok{background:rgba(34,197,94,.85); color:#04120a}
.adr-badge.wait{background:rgba(245,158,11,.85); color:#231303}
.adr-name{display:block; font-size:10.5px; color:#8ea3c8; margin-top:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.adr-none{color:#3b4a75; font-size:12px; padding:14px 0; text-align:center; grid-column:1/-1}
.ad-waittip{background:rgba(245,158,11,.1); border:1px solid rgba(245,158,11,.35); border-radius:9px; padding:10px 12px; font-size:11.5px; color:#fbbf24; line-height:1.7; margin-bottom:4px}
.ad-flow{border-top:1px solid rgba(125,158,255,.1); padding:10px 14px}
.ad-flow-title{font-size:12.5px; font-weight:700; color:#c7d2fe; margin-bottom:8px}
.ad-log{max-height:150px; overflow-y:auto; font-size:11px; line-height:1.9; color:#8ea3c8}
.auto-log-item{padding:1px 0}
.ad-tip{padding:8px 14px; border-top:1px solid rgba(125,158,255,.08); font-size:10.5px; color:#5b6b8e}


/* ═══════════════ v1249 最终版：图1/图2/图3 皮肤 ═══════════════ */
/* 1) 恒 16:9 预览框（320×180 视觉基准），媒体按所选比例 contain 自适应 */
.v-media-box{width:100%;aspect-ratio:16/9;background:#0b1424;border-radius:10px;overflow:hidden;
  display:flex;align-items:center;justify-content:center;position:relative}
.v-media-box .v-vwrap,.v-media-box .v-media{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative}
.v-media-box .v-thumb{width:100%;height:100%;object-fit:contain;display:block;background:#0a1222}
.v-media-box .v-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.v-media-box .v-vwrap .v-ctrls{position:absolute;left:0;right:0;bottom:0}
/* 9:16 竖版：媒体以高度撑满、宽度按比例收窄（形象尺寸随参数切换） */
.v-media-box .v-thumb[data-ratio="9:16"],.v-media-box .v-thumb[data-ratio="4:3"],.v-media-box .v-thumb[data-ratio="1:1"]{object-fit:contain}
/* 2) 卡片皮肤（图1/图2）：深蓝渐变底 + 细描边 */
.v-card{background:linear-gradient(180deg,#16233f 0%,#131d35 100%);border:1px solid #223256;border-radius:12px;
  padding:10px 10px 8px;transition:border-color .18s,box-shadow .18s,transform .18s}
.v-card:hover{border-color:#2f4a7d;box-shadow:0 6px 22px rgba(20,40,90,.45)}
.v-card.current{border-color:#2f7bff;box-shadow:0 0 0 1px #2f7bff66,0 6px 22px rgba(47,123,255,.28)}
.v-card .v-card-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.v-card .v-no{font-size:13px;font-weight:700;color:#f2f6ff;letter-spacing:.3px;cursor:text}
.v-more{margin-left:auto;width:26px;height:24px;border-radius:7px;border:none;background:transparent;color:#93a6c9;
  font-size:16px;line-height:1;cursor:pointer;opacity:.75}
.v-more:hover{background:#1d2c4e;color:#dfe9ff;opacity:1}
/* v1408: 资产库存图片卡「移动」二字亮面图标（替代三点 ⋯）——暗玻璃底 + 白光顶膜，亮而不刺 */
.v-more.v-move{display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:26px;padding:0 2px;flex:none}
.v-move .mv-glyph{display:inline-flex;align-items:center;justify-content:center;height:18px;padding:0 7px;border-radius:6px;white-space:nowrap;flex:none;
  background:linear-gradient(180deg,rgba(255,255,255,.16) 0%,rgba(255,255,255,.03) 46%,rgba(88,140,255,.14) 100%),rgba(59,110,220,.20);
  border:1px solid rgba(160,190,245,.40);color:#cfe0ff;font-size:10.5px;font-weight:700;letter-spacing:1px;line-height:1;
  box-shadow:0 2px 8px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.12);text-shadow:0 1px 2px rgba(0,0,0,.35);
  transition:transform .15s ease,background .15s ease,color .15s ease,border-color .15s ease}
.v-move:hover .mv-glyph{background:linear-gradient(180deg,rgba(255,255,255,.22) 0%,rgba(255,255,255,.05) 46%,rgba(96,150,255,.30) 100%),rgba(59,130,246,.32);
  border-color:rgba(190,215,255,.60);color:#fff;transform:translateY(-1px)}
.v-desc{margin-top:8px;font-size:11.5px;color:#8fa3c7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
/* v1408 fix: 名字过长时不再挤压「移动」按钮致文字竖排——名称走省略号，按钮尺寸恒定 */
.stock-card .v-no{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 3) 状态徽章（图1 绿胶囊/青百分比） */
.v1243-st{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:999px;
  font-size:11px;font-weight:600;letter-spacing:.3px;flex:none}
.v1243-st.done{background:rgba(52,211,153,.14);color:#4ade9d;border:1px solid rgba(52,211,153,.35)}
.v1243-st.running{background:rgba(77,216,200,.12);color:#4dd8c8;border:1px solid rgba(77,216,200,.35)}
.v1243-st.failed{background:rgba(248,113,113,.14);color:#f87171;border:1px solid rgba(248,113,113,.35)}
.v1243-st.idle{background:rgba(147,166,201,.1);color:#93a6c9;border:1px solid rgba(147,166,201,.28)}
/* 4) 生成中（图1）：蓝紫渐变流动 + 大百分比 */
.gen-run-v1249{background:linear-gradient(135deg,#1b2c56 0%,#23386e 45%,#1b2c56 100%);background-size:220% 220%;
  animation:genFlow 2.6s ease-in-out infinite}
.gen-run-v1249 .gen-glow{position:absolute;width:120px;height:120px;border-radius:50%;
  background:radial-gradient(circle,rgba(88,140,255,.35) 0%,transparent 70%);animation:genPulse 2s ease-in-out infinite}
.gen-run-v1249 .gen-pct{font-size:30px;font-weight:800;color:#eef4ff;text-shadow:0 0 18px rgba(88,140,255,.55);
  position:relative;z-index:1;line-height:1}
.gen-run-v1249 .gen-pct i{font-style:normal;font-size:14px;font-weight:700;margin-left:2px;color:#8fb4ff}
.gen-run-v1249 .gen-bar{position:absolute;left:12%;right:12%;bottom:22%;height:4px;border-radius:99px;
  background:rgba(120,150,220,.18);overflow:hidden;z-index:1}
.gen-run-v1249 .gen-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,#4d8bff,#7aa5ff);transition:width .5s}
.gen-run-v1249 .gen-txt{position:absolute;bottom:10%;font-size:11px;color:#9db4e2;z-index:1}
@keyframes genFlow{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
@keyframes genPulse{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.25);opacity:1}}
/* 5) 视频控制条（图1 底部内嵌） */
.v-vwrap .v-ctrls{background:linear-gradient(180deg,transparent,rgba(6,12,26,.88));border-radius:0 0 10px 10px}
.v-crow .v-btn{background:rgba(10,18,38,.55);border:1px solid rgba(120,150,220,.22);border-radius:8px;color:#dfe9ff}
.v-crow .v-btn:hover{background:#2f7bff;border-color:#2f7bff}
.v-seek-track{background:rgba(120,150,220,.25)}
.v-seek-fill{background:linear-gradient(90deg,#4d8bff,#7aa5ff)}
.v-seek-thumb{background:#eaf1ff;box-shadow:0 0 6px rgba(88,140,255,.8)}
.v-time{color:#aebfe0;font-size:10.5px}
/* 6) 九宫格改 2 列（图1/图2 左列）；v1250 右缘留出滑块位（滑块在卡片外侧，不再遮挡） */
.v1243-9grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;padding-right:16px!important}
/* 7) 清晰度下拉（原 seg 组位） */
#video-res{width:100%}
/* 8) 资产库存区域（图3）：4 列网格 */
.stock-wrap{width:100%;height:100%;display:flex;flex-direction:column;padding:16px 18px;box-sizing:border-box}
.stock-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex:none}
.stock-title{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:800;color:#f2f6ff;letter-spacing:.5px}
.stock-acts{margin-left:auto;display:flex;align-items:center;gap:10px}
.stock-danger-btn{height:34px;padding:0 14px;border-radius:9px;border:1px solid rgba(248,113,113,.45);
  background:rgba(248,113,113,.08);color:#f8a0a0;font-size:12.5px;font-weight:600;cursor:pointer}
.stock-danger-btn:hover{background:rgba(248,113,113,.18);color:#ffb4b4}
.stock-scroll{flex:1;min-height:0;overflow-y:auto;padding-right:6px}
.stock-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;grid-auto-rows:max-content}
.stock-card .v-media-box{cursor:zoom-in}
.stock-card .v-aic.del:hover{background:#e5484d;border-color:#e5484d;color:#fff}
/* 9) 放大预览：工作台虚化 + 仅透明 × 退出 */
body.pv-blur #ws-main{filter:blur(14px) saturate(.85);transition:filter .25s}
#ws-main{transition:filter .25s}
.cmv-x{position:fixed;top:18px;right:22px;z-index:10;width:44px;height:44px;border-radius:50%;
  background:transparent;border:none;color:#fff;font-size:22px;line-height:1;cursor:pointer;
  text-shadow:0 1px 8px rgba(0,0,0,.6);transition:transform .15s,opacity .15s;opacity:.9}
.cmv-x:hover{transform:scale(1.12);opacity:1}
.cmv-x::before{content:'';position:absolute;inset:6px;border-radius:50%;background:rgba(10,16,32,.0);
  border:1.5px solid rgba(255,255,255,.28)}
#center-viewer .cv-head{background:transparent}
#center-viewer #cv-close{background:transparent;border:none;box-shadow:none;color:#fff;font-size:20px;cursor:pointer;
  width:40px;height:40px;border-radius:50%;opacity:.9;text-shadow:0 1px 8px rgba(0,0,0,.6)}
#center-viewer #cv-close:hover{opacity:1;transform:scale(1.1)}
/* 10) 比例徽标（参数变化后列表可见的形状提示） */
.v-media-box::after{content:attr(data-ratio);position:absolute;top:6px;right:8px;font-size:10px;color:#7f95bd;
  background:rgba(8,14,30,.6);padding:1px 6px;border-radius:6px;opacity:0;transition:opacity .15s;pointer-events:none}
.v-media-box:hover::after{opacity:1}


/* ═════════ v1250：图1 细节收尾 ═════════ */
/* 生成按钮 sticky 常驻底部的毛玻璃衬底 */
.v1243-gen-btn{box-shadow:0 -6px 18px rgba(6,12,26,.45), 0 4px 16px rgba(59,130,246,.3)}
/* 右列 csb 轨道位置（贴右缘，位于内容外侧） */
.v1243-video-right .csb-track,.v1243-an-textarea ~ .csb-track{right:2px}
/* 参数面板下拉统一深底（图1） */
.v1243-param-field select{background:#0e1830; border:1.5px solid #2a3658; color:#e6efff; height:32px; border-radius:8px; padding:0 10px; font-size:12.5px}
.v1243-param-field select:focus{border-color:#3b82f6; box-shadow:0 0 0 3px rgba(59,130,246,.15)}
/* 库存区同样受益：预览 contain */
.stock-card .v-thumb{width:100%;height:100%;object-fit:contain;background:#0a1222}

/* v1251: 预览框内媒体强制完整显示（压制 v1242 旧 cover 规则，9:16/1:1/4:3 按比例 contain） */
.v1243-9grid .v-card .v-media-box .v-thumb,
.v1243-9grid .v-card .v-media-box video.v-thumb,
.v1243-9grid .v-card .v-media-box img.v-thumb{
  width:100%!important;height:100%!important;aspect-ratio:auto!important;
  object-fit:contain!important;border-radius:0;
}


/* ═════════ v1252：库存筛选栏（日期/编号/搜索）+ 视频库存卡（图3） ═════════ */
.stock-filter{display:flex; align-items:center; gap:10px; margin:0 0 12px; padding:10px 12px;
  background:rgba(14,24,48,.55); border:1px solid #223256; border-radius:12px; flex:none; flex-wrap:wrap}
.sf-label{font-size:12.5px; color:#93a6c9; font-weight:600; flex:none}
.sf-select{height:34px; min-width:120px; background:#0e1830; border:1.5px solid #2a3658; color:#e6efff;
  border-radius:9px; padding:0 8px; font-size:12.5px; cursor:pointer}
.sf-select:focus{border-color:#3b82f6; outline:none}
.sf-search{flex:0 1 260px; display:flex; align-items:center; gap:8px; background:#0e1830;
  border:1.5px solid #2a3658; border-radius:9px; padding:0 10px; height:34px; min-width:200px; max-width:280px; margin-left:auto}
.sf-search:focus-within{border-color:#3b82f6}
.sf-ico{font-size:13px; opacity:.7; flex:none}
.sf-input{flex:1; height:100%; background:transparent; border:none; outline:none; color:#e6efff; font-size:12.5px}
.sf-input::placeholder{color:#54658c}
.stock-ts{margin-left:auto; font-size:10.5px; color:#6f84ad; background:rgba(14,24,48,.7);
  padding:2px 7px; border-radius:6px; flex:none}
.vstock-card .v-media-box video.v-thumb{width:100%; height:100%; object-fit:contain; background:#0a1222}
.vstock-play{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:44px; height:44px;
  border-radius:50%; border:1.5px solid rgba(255,255,255,.35); background:rgba(8,15,32,.55);
  color:#fff; font-size:15px; cursor:pointer; opacity:.92; transition:transform .15s, background .15s; z-index:4}
.vstock-play:hover{transform:translate(-50%,-50%) scale(1.12); background:#2f7bff; border-color:#2f7bff}

/* ═════════ v1253：模块底色兜底 + 卡片勾选框 + 全选 + 搜索清空 + 下载目录选择卡片 ═════════ */
#module-video,#module-asset{background:linear-gradient(180deg,#1a2542 0%,#151f38 55%,#121a30 100%)}
.v-ck{position:absolute;top:8px;left:8px;z-index:5;width:22px;height:22px;margin:0;cursor:pointer;background:rgba(8,15,32,.45);border:1.5px solid rgba(255,255,255,.4);border-radius:6px;display:flex;align-items:center;justify-content:center}
.v-ck input{width:14px;height:14px;accent-color:#2f7bff;cursor:pointer;margin:0}
.sf-check{display:flex;align-items:center;gap:6px;font-size:12.5px;color:#c9d6ef;cursor:pointer;flex:none}
.sf-check input{width:15px;height:15px;accent-color:#2f7bff;cursor:pointer;margin:0}
/* v1394: 资产库存分类快筛行——字体/图标尺寸与筛选区一致（12.5px），胶囊描边对齐 sf-select 同色系 */
.stock-cats{display:flex; align-items:center; gap:8px; margin:-5px 0 12px; padding:0 2px; flex-wrap:wrap}
.st-cat{display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 14px; border-radius:15px;
  background:#0e1830; border:1.5px solid #2a3658; color:#c9d6ef; font-size:12.5px; font-weight:600; cursor:pointer;
  transition:all .15s; flex:none}
.st-cat:hover{border-color:#3b82f6; color:#e6efff}
.st-cat.on{background:linear-gradient(135deg,rgba(47,123,255,.30),rgba(59,130,246,.14)); border-color:#2f7bff; color:#fff;
  box-shadow:0 0 10px rgba(47,123,255,.30), inset 0 0 6px rgba(47,123,255,.10)}
.sf-clear{flex:none;width:18px;height:18px;border:none;border-radius:50%;background:rgba(125,158,255,.15);color:#aebfe0;font-size:13px;line-height:1;cursor:pointer;display:none;align-items:center;justify-content:center;padding:0}
.sf-input.has-txt~.sf-clear{display:flex}
.sf-clear:hover{background:#2f7bff;color:#fff}
.dlpick-mask{position:fixed;inset:0;z-index:10000;background:rgba(4,9,20,.72);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center}
.dlpick-card{width:min(420px,86vw);background:linear-gradient(180deg,#1a2440,#131c34);border:1.5px solid #2a3658;border-radius:16px;padding:28px 26px 22px;text-align:center;box-shadow:0 24px 80px rgba(0,0,0,.55)}
.dlpick-ico{font-size:40px;line-height:1}
.dlpick-title{font-size:17px;font-weight:700;color:#eef4ff;margin:12px 0 8px}
.dlpick-msg{font-size:12.5px;color:#9fb1d4;line-height:1.8;word-break:break-all}
.dlpick-msg b{color:#ffd479}
.dlpick-btns{display:flex;gap:10px;margin-top:18px}
.dlpick-btns button{flex:1;padding:10px 0;border-radius:10px;border:none;font-size:13.5px;font-weight:600;cursor:pointer}
.dlpick-ok{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}
.dlpick-ok:hover{box-shadow:0 6px 18px rgba(59,130,246,.45)}
.dlpick-ok:disabled{opacity:.6;cursor:wait}
.dlpick-cancel{background:rgba(125,158,255,.12);color:#aebfe0;border:1px solid #2a3658}

/* ═════════ v1254 挂机任务中心（设计图严格复刻，#module-automate 前缀覆盖旧 auto-*） ═════════ */
#module-automate{display:flex;flex-direction:column;overflow:hidden;padding:0}
#module-automate .auto-header{display:flex;align-items:center;gap:14px;padding:16px 22px 10px;background:transparent;border-bottom:none}
#module-automate .auto-title-row{display:flex;align-items:baseline;gap:12px;flex:1}
#module-automate .auto-title-row h2{margin:0;font-size:22px;font-weight:800;color:#f2f6ff;letter-spacing:.5px}
#module-automate .auto-sub{font-size:12.5px;color:#5b6b8e}
#module-automate .auto-actions{display:flex;align-items:center;gap:10px}
#module-automate .auto-run-badge{padding:5px 16px;border-radius:999px;font-size:12.5px;font-weight:700;background:rgba(148,163,184,.15);color:#94a3b8;border:1px solid rgba(148,163,184,.25)}
#module-automate .auto-run-badge.on{background:rgba(34,211,238,.16);color:#4dd8e8;border-color:rgba(34,211,238,.45);animation:autoPulse 1.6s infinite}
#module-automate .auto-run-badge.ok{background:rgba(34,197,94,.16);color:#4ade80;border-color:rgba(34,197,94,.4)}
#module-automate .auto-stopbtn{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.4);color:#f87171;border-radius:8px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer}
#module-automate .auto-stopbtn:hover{background:rgba(239,68,68,.25)}
#module-automate .auto-modebar{display:flex;align-items:center;gap:14px;padding:4px 22px 12px}
#module-automate .auto-tabs{display:flex;background:rgba(13,22,45,.7);border:1px solid #232f52;border-radius:10px;padding:3px;gap:3px}
#module-automate .auto-tab{border:none;background:transparent;color:#8ea3c8;font-size:12.5px;font-weight:600;padding:7px 18px;border-radius:8px;cursor:pointer;transition:all .18s}
#module-automate .auto-tab.on{background:linear-gradient(135deg,#2f6bff,#2456d8);color:#fff;box-shadow:0 2px 10px rgba(47,107,255,.35)}
#module-automate .auto-mode-hint{font-size:11.5px;color:#5b6b8e}
#module-automate .auto-mode-actions{margin-left:auto;display:flex;gap:10px}
#module-automate .auto-startbtn{background:linear-gradient(135deg,#2f6bff,#2456d8);border:none;color:#fff;font-size:13.5px;font-weight:700;padding:10px 26px;border-radius:10px;cursor:pointer;box-shadow:0 4px 18px rgba(47,107,255,.4);transition:all .18s}
#module-automate .auto-startbtn:hover{transform:translateY(-1px);box-shadow:0 6px 24px rgba(47,107,255,.55)}
#module-automate .auto-pausebtn{background:rgba(245,158,11,.14);border:1px solid rgba(245,158,11,.45);color:#fbbf24;font-size:13px;font-weight:700;padding:9px 22px;border-radius:10px;cursor:pointer}
#module-automate .auto-flowcard{margin:0 22px 10px;background:rgba(13,22,45,.6);border:1px solid #232f52;border-radius:12px;padding:10px 16px 12px;flex:none}
#module-automate .auto-flow-label{font-size:12px;font-weight:700;color:#c7d2fe;margin-bottom:8px}
#module-automate .auto-stepsbar{display:flex;align-items:center;gap:0;padding:0;background:transparent;border:none;border-radius:0;margin:0;overflow-x:auto}
#module-automate .auto-node{display:flex;flex-direction:column;align-items:center;gap:5px;flex:0 0 auto;padding:2px 6px;background:transparent;border:none;border-radius:0;position:relative}
#module-automate .an-top{display:flex;align-items:center;gap:6px}
#module-automate .an-idx{font-size:12px;font-weight:800;color:#5b6b8e;font-variant-numeric:tabular-nums}
#module-automate .an-dot{width:18px;height:18px;border-radius:50%;background:rgba(148,163,184,.12);border:1.5px solid rgba(148,163,184,.3);color:transparent;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;transition:all .2s}
#module-automate .an-name{font-size:12px;color:#8ea3c8;white-space:nowrap;padding-bottom:2px;border-bottom:2px solid transparent}
#module-automate .auto-node.done .an-dot{background:rgba(34,197,94,.2);border-color:#22c55e;color:#4ade80}
#module-automate .auto-node.done .an-idx{color:#4ade80}
#module-automate .auto-node.done .an-name{color:#4ade80}
#module-automate .auto-node.active .an-dot{background:rgba(59,130,246,.28);border-color:#3b82f6;color:#93c5fd;box-shadow:0 0 0 4px rgba(59,130,246,.15);animation:autoPulse 1.4s infinite}
#module-automate .auto-node.active .an-idx{color:#93c5fd}
#module-automate .auto-node.active .an-name{color:#93c5fd;border-bottom-color:#3b82f6}
#module-automate .auto-link{flex:1;height:2px;background:#232f52;min-width:14px;position:relative;margin-top:-12px}
#module-automate .auto-link::after{content:'';position:absolute;right:0;top:-3px;border:4px solid transparent;border-left-color:#232f52}
#module-automate .auto-statline{display:flex;align-items:center;gap:18px;padding:6px 26px 12px;flex:none}
#module-automate .as-item{display:flex;flex-direction:column;gap:2px}
#module-automate .as-label{font-size:11.5px;color:#5b6b8e}
#module-automate .as-item b.n{font-size:22px;font-weight:800;color:#f2f6ff;line-height:1.1;font-variant-numeric:tabular-nums}
#module-automate .as-item b.n.ok{color:#4ade80}
#module-automate .as-item b.n.run{color:#4dd8e8}
#module-automate .as-item b.n.wait{color:#fbbf24}
/* v1261: 资产生成进度统计行（与视频统计行同风格） */
#module-automate .auto-statline2{border-top:1px dashed rgba(120,150,210,.16);margin-top:2px;padding-top:10px}
#module-automate .as-sub{font-size:10px;color:#4a5a7d;max-width:150px;line-height:1.4;margin-top:2px}
#module-automate .as-sep{width:1px;height:36px;background:#232f52;flex:none}
/* ═══ v1267: 挂机模型参数面板（统计行右侧）——选择即持久化，自动跑按此固定执行 ═══ */
#module-automate .auto-mid{display:flex;gap:12px;align-items:stretch;padding:0 8px;flex:none}
#module-automate .auto-mid-left{flex:1 1 50%;display:flex;flex-direction:column;justify-content:center;min-width:0}
#module-automate .auto-mid-left .auto-statline{padding:6px 14px 12px;flex-wrap:wrap;row-gap:6px}
#module-automate .auto-mid-left .auto-statline.auto-statline2{margin-top:0}
#module-automate .auto-params{flex:1 1 50%;min-width:0;background:linear-gradient(180deg,#1a2440 0%,#131c34 100%);border:1.5px solid #2a3658;border-radius:12px;padding:8px 14px 10px;display:flex;flex-direction:column;gap:5px}
#module-automate .ap-title{font-size:12px;font-weight:600;color:#94a3b8;letter-spacing:.5px;display:flex;align-items:baseline;gap:8px;white-space:nowrap;overflow:hidden}
#module-automate .ap-title i{font-style:normal;font-size:10px;font-weight:400;color:#5b6b8e;overflow:hidden;text-overflow:ellipsis}
#module-automate .ap-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
#module-automate .ap-field{display:flex;flex-direction:column;gap:2px;min-width:0}
#module-automate .ap-field.span2{grid-column:span 2}
#module-automate .ap-field.span3{grid-column:span 3}
#module-automate .ap-field label{font-size:10px;color:#5b6b8e;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#module-automate .ap-field select{background:#0e1830;border:1.5px solid #2a3658;color:#e6efff;height:28px;border-radius:7px;padding:0 6px;font-size:11.5px;outline:none;width:100%;box-sizing:border-box;text-overflow:ellipsis}
#module-automate .ap-field select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.15)}
/* v1308: 挂机参数左右分栏——左视频 / 右图片 */
#module-automate .ap-cols{flex:1;overflow-y:auto;padding:12px 18px 14px;display:flex;gap:14px;align-items:stretch}
#module-automate .ap-col{flex:1;min-width:0;background:rgba(14,24,48,.55);border:1px solid #223055;border-radius:10px;padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px}
#module-automate .ap-col-video{border-left:3px solid #3b82f6}
#module-automate .ap-col-asset{border-left:3px solid #22c55e}
#module-automate .ap-col-title{font-size:12px;font-weight:700;letter-spacing:1px;color:#a9bcdf}
#module-automate .ap-col .ap-grid{flex:1;padding:0;overflow:visible;grid-template-columns:repeat(2,1fr);gap:8px}
#module-automate .ap-col .ap-field.span2{grid-column:span 2}
@media (max-width:1500px){#module-automate .ap-grid{grid-template-columns:repeat(3,1fr)}#module-automate .ap-field.span2{grid-column:span 2}#module-automate .ap-field.span3{grid-column:span 1}}
#module-automate .auto-body{display:flex;flex-direction:column;padding:0 22px 16px;flex:1;min-height:0;align-items:stretch;height:auto}
#module-automate .auto-tasks{flex:1;min-height:0;display:flex;flex-direction:column;background:rgba(13,22,45,.6);border:1px solid #232f52;border-radius:12px;overflow:hidden;height:auto}
#module-automate .at-head-row{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid rgba(125,158,255,.1);flex:none}
#module-automate .at-title{font-size:14px;font-weight:700;color:#e6efff}
#module-automate .at-live{font-size:10.5px;font-weight:700;color:#4dd8e8;background:rgba(34,211,238,.12);border:1px solid rgba(34,211,238,.35);border-radius:999px;padding:2px 10px}
#module-automate .at-scroll{flex:1;min-height:0;overflow-y:auto}
#module-automate .auto-tasks table{width:100%;border-collapse:collapse;font-size:12px}
#module-automate .auto-tasks th{padding:9px 14px;text-align:left;color:#5b6b8e;font-weight:600;font-size:11.5px;border-bottom:1px solid rgba(125,158,255,.1);white-space:nowrap;position:sticky;top:0;background:#101a33;z-index:2}
#module-automate .auto-tasks td{padding:9px 14px;border-bottom:1px solid rgba(125,158,255,.06);vertical-align:middle;color:#c7d2fe}
#module-automate .auto-tasks tr.at-row{cursor:pointer;transition:background .12s}
#module-automate .auto-tasks tr.at-row:hover{background:rgba(59,130,246,.07)}
#module-automate .auto-tasks tr.at-row.open{background:rgba(59,130,246,.1)}
#module-automate .auto-empty{text-align:center;color:#5b6b8e;padding:36px 0 !important}
#module-automate .at-thumb{white-space:nowrap}
#module-automate .at-thumb video,#module-automate .at-thumb .at-ph{width:96px;height:54px;border-radius:8px;background:#0e1830;object-fit:cover;vertical-align:middle;display:inline-flex;align-items:center;justify-content:center;color:#3b4a75;border:1px solid #223256}
#module-automate .at-thumb span{margin-left:8px;color:#c7d2fe;font-size:12px;font-weight:600}
#module-automate .at-shotname{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#e6efff}
#module-automate .at-step b{display:block;color:#e6efff;font-size:12px;font-weight:600}
#module-automate .at-step span{display:block;color:#fbbf24;font-size:10.5px;margin-top:2px;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#module-automate .atp-wrap{display:flex;align-items:center;gap:8px}
#module-automate .atp-bar{flex:1;height:7px;border-radius:4px;background:rgba(148,163,184,.15);overflow:hidden;min-width:70px}
#module-automate .atp-bar i{display:block;height:100%;border-radius:4px;transition:width .4s}
#module-automate .atp-bar i.ok{background:linear-gradient(90deg,#22c55e,#4ade80)}
#module-automate .atp-bar i.run{background:linear-gradient(90deg,#3b82f6,#4dd8e8)}
#module-automate .atp-bar i.wait{background:linear-gradient(90deg,#f59e0b,#fbbf24)}
#module-automate .atp-bar i.idle{background:#4a5a7d}
#module-automate .atp-wrap span{font-size:11px;color:#8ea3c8;white-space:nowrap;min-width:52px}
#module-automate .at-ops2{white-space:nowrap}
#module-automate .at-badge{padding:4px 12px;border-radius:999px;font-size:11px;font-weight:600}
#module-automate .at-badge.ok{background:rgba(34,197,94,.15);color:#4ade80;border:1px solid rgba(34,197,94,.3)}
#module-automate .at-badge.run{background:rgba(59,130,246,.16);color:#93c5fd;border:1px solid rgba(59,130,246,.32)}
#module-automate .at-badge.wait{background:rgba(245,158,11,.14);color:#fbbf24;border:1px solid rgba(245,158,11,.4)}
#module-automate .at-badge.idle{background:rgba(148,163,184,.1);color:#94a3b8;border:1px solid rgba(148,163,184,.24)}
#module-automate .at-badge.fail{background:rgba(239,68,68,.14);color:#f87171;border:1px solid rgba(239,68,68,.32)}
#module-automate .at-fix{margin-left:8px;background:transparent;border:1px solid rgba(245,158,11,.55);color:#fbbf24;border-radius:8px;padding:4px 12px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s}
#module-automate .at-fix:hover{background:rgba(245,158,11,.18)}
#module-automate .at-detail-row td{padding:0 !important;border-bottom:1px solid rgba(125,158,255,.06)}
#module-automate .at-detail{padding:12px 16px 14px;background:rgba(10,17,36,.5)}
#module-automate .atd-title{font-size:11.5px;font-weight:700;color:#93c5fd;margin-bottom:6px}
#module-automate .atd-prompt{background:#0e1830;border:1px solid #232f52;border-radius:8px;padding:10px 12px;font-size:11.5px;line-height:1.7;color:#a5b4d4;max-height:150px;overflow-y:auto;white-space:pre-wrap;word-break:break-all;margin-bottom:8px}
#module-automate .atd-refs{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
#module-automate .at-chip{width:44px;height:44px;border-radius:7px;object-fit:cover;border:1px solid #2a3658}
#module-automate .at-chip.aud{display:inline-flex;align-items:center;justify-content:center;background:rgba(59,130,246,.12);font-size:18px}
#module-automate .at-none{color:#3b4a75;font-size:11.5px}
#module-automate .at-logdrawer{border-top:1px solid rgba(125,158,255,.1);background:rgba(10,17,36,.5);flex:none}
#module-automate .ald-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;background:transparent;border:none;color:#8ea3c8;font-size:11.5px;font-weight:600;padding:8px 16px;cursor:pointer}
#module-automate .ald-toggle:hover{color:#c7d2fe}
#module-automate .ald-arrow{font-style:normal}
#module-automate .ald-body{max-height:0;overflow:hidden;transition:max-height .25s ease}
#module-automate .at-logdrawer.open .ald-body{max-height:220px;overflow-y:auto}
#module-automate .ad-log{padding:0 16px 12px;font-size:11px;line-height:1.9;color:#8ea3c8;max-height:none}
#module-automate .auto-log-item{padding:1px 0;border-bottom:1px dashed rgba(143,168,199,.1)}
#module-automate .at-progress-row.v1254-hide{display:none}
/* ═════════ v1254 挂机任务中心 结束 ═════════ */


/* ═══════════ v1255：卡片X直删 + 一体化提示词框（引用行/字数内嵌）+ 参数面板紧凑化 ═══════════ */
.v-xdel{margin-left:auto;width:24px;height:24px;border-radius:50%;border:1.5px solid #44527a;background:rgba(20,32,60,.72);color:#dfe9ff;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:0 0 auto;opacity:.85;transition:background .15s,border-color .15s,color .15s;padding:0}
.v-xdel:hover{background:#e5484d;border-color:#e5484d;color:#fff;opacity:1}
.v1243-pm-box{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:#0e1830;border:1.5px solid #2a3658;border-radius:8px;overflow:hidden;transition:border-color .15s,box-shadow .15s}
.v1243-pm-box:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.15)}
.v1243-pm-box .v1243-pm-textarea{background:transparent;border:none;border-radius:0;box-shadow:none;min-height:0;flex:1 1 auto}
.v1243-pm-box .v1243-pm-textarea:focus{border:none;box-shadow:none}
.v1243-pm-box .v1243-an-textarea{background:transparent;border:none;border-radius:0;box-shadow:none;min-height:0;flex:1 1 auto}
.v1243-pm-box .v1243-an-textarea:focus{border:none;box-shadow:none}
.v1243-ref-inwrap{padding:5px 10px 2px;flex:0 0 auto}
.v1243-pm-countbar{display:flex;align-items:center;gap:10px;padding:4px 10px 8px;min-height:26px;flex:0 0 auto}
.v1243-pm-countbar .v1243-pm-count{margin-left:auto;white-space:nowrap}
.proj-sync-sel{background:#0e1830;border:1px solid #2a3658;border-radius:6px;color:#e6efff;font-size:12px;padding:6px 8px;max-width:220px;outline:none}


/* ═══════════ v1256：失败卡重新生成按钮 ═══════════ */
.v-fail{display:flex;align-items:center;gap:8px}
.v-fail .v-regen{margin-left:auto;flex:0 0 auto;border:1.5px solid #ff9f43;background:rgba(255,159,67,.12);color:#ffbe7a;border-radius:999px;font-size:11px;padding:2px 10px;cursor:pointer;transition:background .15s,color .15s}
.v-fail .v-regen:hover{background:#ff9f43;color:#1a1206}

/* ═══════ v1272：失败提示居中预览框内（自动分段不超框）+ 底部仅重试按钮 ═══════ */
.v-failbox{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:12px 14px;pointer-events:none}
.v-failbox-t{max-width:94%;max-height:100%;overflow:auto;pointer-events:auto;background:rgba(8,14,28,.85);border:1px solid rgba(229,72,77,.45);border-radius:10px;padding:9px 13px;color:#ff7b7b;font-size:12px;line-height:1.65;text-align:center;word-break:break-word;white-space:pre-wrap;box-shadow:0 6px 18px rgba(0,0,0,.4)}
.v-failbar{margin-top:6px;display:flex;justify-content:center}
.v-failbar .v-regen{border:1.5px solid #ff9f43;background:rgba(255,159,67,.12);color:#ffbe7a;border-radius:999px;font-size:11px;padding:2px 10px;cursor:pointer;transition:background .15s,color .15s}
.v-failbar .v-regen:hover{background:#ff9f43;color:#1a1206}

/* ═══════ v1275：登录门禁罩层 + API 渠道未激活锁层 ═══════ */
.auth-shield{position:fixed;inset:0;z-index:1050;background:rgba(4,8,18,.88);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center}
.auth-shield.hidden{display:none}
.auth-shield-t{color:#9fb6e8;font-size:15px;letter-spacing:2px;font-weight:600}
.api-lock{position:absolute;inset:0;z-index:5;background:rgba(8,12,24,.93);display:flex;align-items:center;justify-content:center;border-radius:12px}
.api-lock.hidden{display:none}
.api-lock-box{max-width:340px;text-align:center;padding:18px 22px;background:rgba(20,28,52,.65);border:1px solid #2a3658;border-radius:14px}
.api-lock-ico{font-size:34px;margin-bottom:8px}
.api-lock-t{color:#ffd28a;font-size:15px;font-weight:700;margin-bottom:6px}
.api-lock-d{color:#8fa3c8;font-size:12px;line-height:1.7}


/* ═══════════ v1257：新建项目弹窗（设计图一比一复刻） ═══════════ */
#proj-overlay .pn-modal{width:min(880px,94vw);max-height:92vh;display:flex;flex-direction:column;background:linear-gradient(160deg,#0e1730 0%,#0b1222 100%);border:1px solid #263a63;border-radius:16px;box-shadow:0 24px 80px rgba(0,0,0,.6);overflow:hidden}
.pn-head{display:flex;align-items:center;gap:12px;padding:18px 22px 14px}
.pn-ico{position:relative;flex:0 0 auto;width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,#2563eb,#3b82f6);display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 4px 14px rgba(37,99,235,.35)}
.pn-ico i{position:absolute;right:-4px;bottom:-4px;width:16px;height:16px;border-radius:50%;background:#22d3ee;color:#06222b;font-style:normal;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1}
.pn-head-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.pn-head-txt b{font-size:19px;color:#f2f6ff;letter-spacing:.5px}
.pn-head-txt i{font-style:normal;font-size:12px;color:#8fa3c8}
.pn-x{margin-left:auto;width:30px;height:30px;border-radius:8px;border:1px solid #2a3a5c;background:rgba(255,255,255,.04);color:#9db4e8;font-size:14px;cursor:pointer;transition:all .15s;flex:0 0 auto}
.pn-x:hover{background:rgba(255,255,255,.1);color:#fff}
.pn-body{flex:1;overflow:auto;padding:2px 22px 16px;display:flex;flex-direction:column;gap:12px;min-height:0}
.pn-name-row{display:flex;align-items:center;gap:14px}
.pn-name-row label{flex:0 0 auto;font-size:13px;color:#9db4e8}
#pn-name{flex:1;height:44px;background:#0a1220;border:1.5px solid #2a3a5c;border-radius:10px;color:#fff;font-size:15px;padding:0 14px;outline:none;transition:border-color .15s;min-width:0}
#pn-name:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.15)}
#pn-name::placeholder{color:#54678c}
.pn-tip{display:flex;align-items:center;gap:8px;padding:9px 12px;background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.25);border-radius:10px;font-size:12px;color:#9db4e8}
.pn-import{border:1px solid #223454;border-radius:12px;padding:14px;background:rgba(10,18,32,.45)}
.pn-imp-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.pn-imp-t{font-size:14px;font-weight:600;color:#e6ecfa}
.pn-opt{font-style:normal;font-size:10px;color:#7f93b8;background:rgba(127,147,184,.15);border-radius:999px;padding:2px 8px}
.pn-switch{margin-left:auto;position:relative;width:44px;height:24px;cursor:pointer;flex:0 0 auto}
.pn-switch input{opacity:0;width:0;height:0;position:absolute}
.pn-switch i{position:absolute;inset:0;background:#26344f;border-radius:999px;transition:background .2s}
.pn-switch i::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#8fa3c8;transition:all .2s}
.pn-switch input:checked + i{background:#0e7490}
.pn-switch input:checked + i::after{left:23px;background:#22d3ee;box-shadow:0 0 8px rgba(34,211,238,.6)}
#pn-import-body{display:flex;gap:14px;min-height:0}
.pn-src{flex:0 0 216px;display:flex;flex-direction:column;gap:8px;border-right:1px solid #1c2c4a;padding-right:12px;min-height:0}
.pn-src-t{font-size:12px;color:#8fa3c8;font-weight:600}
#pn-src-search{height:32px;background:#0a1220;border:1px solid #223454;border-radius:8px;color:#dbe4f7;font-size:12px;padding:0 10px;outline:none}
#pn-src-search:focus{border-color:#3b82f6}
#pn-src-list{overflow-y:auto;display:flex;flex-direction:column;gap:6px;max-height:264px;min-height:120px}
.pn-src-empty{padding:18px 8px;text-align:center;font-size:12px;color:#54678c}
.pn-src-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid #223454;border-radius:10px;cursor:pointer;transition:all .15s;background:rgba(255,255,255,.02)}
.pn-src-item:hover{border-color:#3d5688}
.pn-src-item.on{border-color:#2563eb;background:rgba(37,99,235,.16);box-shadow:0 0 0 1px rgba(37,99,235,.4)}
.pn-src-ico{flex:0 0 auto;font-size:15px}
.pn-src-info{display:flex;flex-direction:column;gap:1px;min-width:0}
.pn-src-info b{font-size:12.5px;color:#e6ecfa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pn-src-info i{font-style:normal;font-size:10.5px;color:#7f93b8}
.pn-grid-wrap{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.pn-filter{display:flex;align-items:center;gap:8px}
.pn-tabs{display:flex;gap:6px;flex:0 0 auto}
.pn-tab{border:1px solid #223454;background:rgba(255,255,255,.03);color:#8fa3c8;border-radius:999px;font-size:11.5px;padding:4px 11px;cursor:pointer;transition:all .15s}
.pn-tab b{font-weight:700;color:#aab8d8}
.pn-tab.on{background:#2563eb;border-color:#2563eb;color:#fff}
.pn-tab.on b{color:#fff}
#pn-asset-search{flex:1;min-width:0;height:30px;background:#0a1220;border:1px solid #223454;border-radius:8px;color:#dbe4f7;font-size:12px;padding:0 10px;outline:none}
#pn-asset-search:focus{border-color:#3b82f6}
.pn-selall{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:12px;color:#9db4e8;cursor:pointer}
.pn-selall input{accent-color:#2563eb;width:14px;height:14px;cursor:pointer}
#pn-grid{flex:1;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;overflow-y:auto;max-height:300px;min-height:140px;padding:2px}
.pn-empty{grid-column:1/-1;display:flex;align-items:center;justify-content:center;min-height:120px;color:#54678c;font-size:12.5px}
.pn-card{position:relative;border:1px solid #223454;border-radius:10px;overflow:hidden;cursor:pointer;background:rgba(255,255,255,.02);transition:border-color .15s,box-shadow .15s;display:flex;flex-direction:column}
.pn-card:hover{border-color:#3d5688}
.pn-card.on{border-color:#3b82f6;box-shadow:0 0 0 1.5px rgba(59,130,246,.5),0 0 14px rgba(59,130,246,.2)}
.pn-ck{position:absolute;top:6px;left:6px;z-index:2;width:18px;height:18px;border-radius:5px;border:1.5px solid rgba(255,255,255,.55);background:rgba(10,18,32,.5);color:transparent;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .15s}
.pn-ck.ck{background:#3b82f6;border-color:#3b82f6;color:#fff}
.pn-thumb{height:92px;background:#0a1220;display:flex;align-items:center;justify-content:center;overflow:hidden}
.pn-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pn-noimg{font-size:26px;opacity:.5}
.pn-aud-body{height:92px;background:linear-gradient(150deg,#0e1a30,#0b1526);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}
.pn-play{width:30px;height:30px;border-radius:50%;border:1px solid #2a3a5c;background:rgba(59,130,246,.18);color:#9cc2ff;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;padding-left:2px}
.pn-play:hover{background:#2563eb;color:#fff}
.pn-wave{display:flex;align-items:flex-end;gap:2.5px;height:16px}
.pn-wave i{width:3px;border-radius:2px;background:#22d3ee;opacity:.55}
.pn-wave i:nth-child(1){height:5px}.pn-wave i:nth-child(2){height:10px}.pn-wave i:nth-child(3){height:15px}.pn-wave i:nth-child(4){height:8px}.pn-wave i:nth-child(5){height:16px}.pn-wave i:nth-child(6){height:9px}.pn-wave i:nth-child(7){height:13px}.pn-wave i:nth-child(8){height:6px}.pn-wave i:nth-child(9){height:11px}
.pn-card.playing .pn-wave i{animation:pnWave .8s ease-in-out infinite alternate}
.pn-card.playing .pn-wave i:nth-child(2n){animation-delay:.25s}
.pn-card.playing .pn-wave i:nth-child(3n){animation-delay:.45s}
@keyframes pnWave{from{transform:scaleY(.45)}to{transform:scaleY(1)}}
.pn-dur{font-size:10px;color:#7f93b8;font-variant-numeric:tabular-nums}
.pn-meta{padding:7px 9px;display:flex;flex-direction:column;gap:2px;min-width:0}
.pn-meta b{font-size:12px;color:#e6ecfa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pn-meta i{font-style:normal;font-size:10.5px;color:#7f93b8}
.pn-grid-tip{font-size:11px;color:#6d81a8;display:flex;align-items:center;gap:5px}
.pn-foot{display:flex;align-items:center;gap:14px;padding:13px 22px;border-top:1px solid #1c2c4a;background:rgba(8,14,26,.6)}
.pn-stat{min-width:0}
#pn-stat-text{font-size:12.5px;color:#9db4e8}
#pn-stat-text b{font-size:17px;color:#22d3ee;font-weight:700;margin:0 1px}
.pn-stat-sub{display:block;font-style:normal;font-size:10.5px;color:#6d81a8;margin-top:2px}
.pn-btns{margin-left:auto;display:flex;gap:10px;flex:0 0 auto}
.pn-btn-ghost{height:38px;padding:0 20px;border-radius:10px;border:1px solid #2a3a5c;background:transparent;color:#c6d4f0;font-size:13px;cursor:pointer;transition:all .15s}
.pn-btn-ghost:hover{background:rgba(255,255,255,.06)}
.pn-btn-main{height:38px;padding:0 20px;border-radius:10px;border:none;background:linear-gradient(135deg,#2563eb,#3b82f6);color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;box-shadow:0 4px 14px rgba(37,99,235,.35)}
.pn-btn-main:hover{filter:brightness(1.12)}
#pn-grid::-webkit-scrollbar,#pn-src-list::-webkit-scrollbar{width:6px}
#pn-grid::-webkit-scrollbar-thumb,#pn-src-list::-webkit-scrollbar-thumb{background:#26344f;border-radius:3px}


/* ═══ v1258: 提示词框内底部「上传到资产库」按钮（原左列头独立模块移入框内，字数条左侧） ═══ */
.v1243-libup{display:inline-flex;align-items:center;gap:5px;background:rgba(59,125,255,.12);border:1px dashed rgba(125,158,255,.45);color:#9cc0ff;border-radius:7px;padding:2px 10px;font-size:12px;line-height:20px;cursor:pointer;white-space:nowrap;flex:0 0 auto;transition:background .15s,color .15s,border-color .15s}
.v1243-libup:hover{background:rgba(59,130,246,.26);color:#dbe9ff;border-color:#3b82f6}


/* ═══ v1259: 库存搜索框内联（搜索标签框内左侧+放大镜点击搜索） ═══ */
.sf-tag{flex:none;font-size:12.5px;font-weight:600;color:#93a6c9;padding-right:8px;margin-right:2px;border-right:1px solid rgba(125,158,255,.18)}
.sf-go{flex:none;width:24px;height:24px;border:none;border-radius:6px;background:transparent;color:#8fa3c7;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.sf-go:hover{background:rgba(59,130,246,.22);color:#dbe9ff}

/* ═══ v1259: 库存查看器——正中舞台+透明控制条+底部识别行 ═══ */
#cmv-overlay{overflow:hidden}
#cmv-overlay .cmv-stage{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:12px;max-width:94vw}
#cmv-overlay .cmv-media{max-width:90vw;max-height:76vh;transition:transform .25s}
#cmv-overlay .cmv-media.cmv-zoom{transform:scale(1.8);cursor:zoom-out}
#cmv-overlay .cmv-ctrls{display:flex;align-items:center;gap:10px;padding:8px 14px;border-radius:14px;background:rgba(10,16,34,.55);border:1px solid rgba(148,163,184,.25);backdrop-filter:blur(8px)}
#cmv-overlay .cmv-btn{width:34px;height:34px;border-radius:50%;border:none;background:rgba(148,163,184,.18);color:#e2e8f0;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}
#cmv-overlay .cmv-btn:hover{background:rgba(59,130,246,.45);transform:scale(1.08)}
#cmv-overlay .cmv-bar{position:relative;width:min(44vw,500px);height:8px;border-radius:4px;background:rgba(148,163,184,.25);cursor:pointer;overflow:hidden}
#cmv-overlay .cmv-prog{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:4px;background:linear-gradient(90deg,#3b82f6,#60a5fa)}
#cmv-overlay .cmv-time{font-size:12px;color:#c7d5ef;min-width:92px;text-align:center;white-space:nowrap}
#cmv-overlay .cmv-meta{max-width:92vw;font-size:12.5px;color:#aebfe0;background:rgba(10,16,34,.55);border:1px solid rgba(148,163,184,.22);border-radius:8px;padding:6px 14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;backdrop-filter:blur(8px)}
body.cmv-fs #cmv-overlay .cmv-media{max-width:96vw;max-height:90vh}

/* ═════════ v1263: 剧本分镜工作台（三工作区 tab + 源/结果双子页 + 铁头Agent 面板） ═════════ */
#module-script{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:10px 14px 12px;gap:10px}
.sw-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex:0 0 auto}
.sw-title-box{display:flex;align-items:center;gap:10px;min-width:0}
.sw-title{font-size:17px;font-weight:700;color:#eaf2ff;letter-spacing:.5px;white-space:nowrap}
.sw-proj{font-size:12px;color:#35e0c8;background:rgba(53,224,200,.10);border:1px solid rgba(53,224,200,.35);border-radius:20px;padding:2px 10px;white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}
.sw-model-box{display:flex;align-items:center;gap:8px;min-width:0}
.sw-mlabel{font-size:12px;color:#8fa8c8;white-space:nowrap}
.sw-model-box .stb-select{max-width:230px}
.sw-sync{display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;white-space:nowrap}
.sw-sync input{display:none}
.sw-sync-ui{width:34px;height:18px;border-radius:10px;background:#223047;border:1px solid #2e425f;position:relative;transition:background .2s;flex:0 0 auto}
.sw-sync-ui::after{content:'';position:absolute;top:1.5px;left:2px;width:13px;height:13px;border-radius:50%;background:#8fa8c8;transition:all .2s}
.sw-sync input:checked + .sw-sync-ui{background:linear-gradient(90deg,#14b8a6,#2dd4bf);border-color:transparent}
.sw-sync input:checked + .sw-sync-ui::after{left:17px;background:#04211d}
.sw-sync span{font-size:11.5px;color:#8fa8c8}
.sw-body{display:flex;gap:12px;flex:1 1 auto;min-height:0}
.sw-left{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:8px}
.sw-tabs{display:flex;gap:8px;flex:0 0 auto}
.sw-tab{flex:0 0 auto;padding:8px 18px;border-radius:10px 10px 0 0;border:1px solid #2e425f;border-bottom:none;background:#17233a;color:#8fa8c8;font-size:13.5px;font-weight:600;cursor:pointer;transition:all .15s}
.sw-tab:hover{color:#d7e6ff}
.sw-tab.on{background:linear-gradient(135deg,#1668dc,#3b82f6);color:#fff;border-color:transparent;box-shadow:0 4px 14px rgba(22,104,220,.35)}
.sw-toolbar{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.sw-toolbar .ghost-btn{flex:0 0 auto}
.sw-run-btn{margin-left:auto;padding:8px 22px;border:none;border-radius:9px;background:linear-gradient(135deg,#1668dc,#3b82f6);color:#fff;font-size:13.5px;font-weight:700;cursor:pointer;box-shadow:0 4px 14px rgba(22,104,220,.35);transition:all .15s;white-space:nowrap}
.sw-run-btn:hover:not(:disabled){filter:brightness(1.12);transform:translateY(-1px)}
.sw-run-btn:disabled{opacity:.55;cursor:not-allowed}
/* v1303: 三态——执行中红色停止（可点击）/ 断点绿色继续 */
.sw-run-btn.is-stop{background:linear-gradient(135deg,#d93036,#ef4444);box-shadow:0 4px 14px rgba(229,72,77,.35);animation:swStopPulse 1.2s ease-in-out infinite}
.sw-run-btn.is-resume{background:linear-gradient(135deg,#0f9d63,#10b981);box-shadow:0 4px 14px rgba(16,185,129,.35)}
@keyframes swStopPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.18)}}
.sw-subtabs{display:flex;align-items:center;gap:4px;flex:0 0 auto;border-bottom:1px solid #223047}
.sw-subtab{padding:6px 14px;background:transparent;border:none;border-bottom:2px solid transparent;color:#8fa8c8;font-size:12.5px;cursor:pointer}
.sw-subtab.on{color:#5eb1ff;border-bottom-color:#3b82f6;font-weight:600}
.sw-count{margin-left:auto;font-size:11.5px;color:#56d4a9}
.sw-stage{position:relative;flex:1 1 auto;min-height:0}
.sw-stage .pane-textarea{position:absolute;inset:0;width:100%;height:100%;resize:none}
.sw-progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(59,130,246,.12);opacity:0;pointer-events:none;transition:opacity .2s;overflow:hidden;z-index:2}
.sw-progress.on{opacity:1}
.sw-progress .sw-prog-bar{position:absolute;top:0;bottom:0;width:38%;background:linear-gradient(90deg,#1668dc,#2dd4bf);border-radius:3px;animation:swSlide 1.1s ease-in-out infinite}
@keyframes swSlide{0%{left:-40%}100%{left:100%}}
/* v1328: 剧本区状态行——阶段化进度提示（生成中/自动重试）+ 失败「重新生成」按钮 */
.sw-status{display:flex;align-items:center;gap:8px;margin-top:6px;padding:7px 12px;border-radius:9px;border:1px solid rgba(59,130,246,.3);background:rgba(59,130,246,.08);color:#93c5fd;font-size:12.5px;line-height:1.5;animation:swstIn .25s ease}
.sw-status[hidden]{display:none}
.sw-status.is-fail{border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.08);color:#fca5a5}
.swst-dot{width:7px;height:7px;border-radius:50%;background:#3b82f6;flex-shrink:0;animation:swstPulse 1.1s ease-in-out infinite}
.swst-dot.retry{background:#f59e0b}
.swst-x{font-style:normal;font-weight:800;flex-shrink:0}
.swst-err{flex:1;min-width:0;word-break:break-all}
.swst-retry{flex-shrink:0;padding:4px 14px;border:none;border-radius:7px;background:linear-gradient(135deg,#0f9d63,#10b981);color:#fff;font-size:12px;font-weight:700;cursor:pointer;box-shadow:0 2px 8px rgba(16,185,129,.3);transition:all .15s}
.swst-retry:hover{filter:brightness(1.12);transform:translateY(-1px)}
@keyframes swstPulse{0%,100%{opacity:.3}50%{opacity:1}}
@keyframes swstIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.sw-agent{flex:0 0 32%;min-width:300px;max-width:420px;display:flex;flex-direction:column;border:1px solid #223047;border-radius:12px;background:rgba(13,20,35,.75);overflow:hidden}
.sag-head{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #223047;background:rgba(23,35,58,.6)}
.sag-ava{width:38px;height:38px;border-radius:50%;object-fit:cover;border:2px solid rgba(59,130,246,.55);box-shadow:0 0 10px rgba(59,130,246,.35)}
.sag-head-txt{min-width:0}
.sag-name-row{display:flex;align-items:center;gap:8px}
.sag-name-row b{font-size:14px;color:#eaf2ff}
.sag-badge{font-size:10.5px;color:#34d399;background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.35);border-radius:12px;padding:1px 8px;white-space:nowrap}
.sag-badge.warn{color:#fbbf24;background:rgba(251,191,36,.10);border-color:rgba(251,191,36,.35)}
.sag-sub{font-size:11px;color:#7288a8;margin-top:2px}
.sag-log{flex:1 1 auto;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:0;user-select:text;-webkit-user-select:text}
.agent-row{display:flex;gap:7px;align-items:flex-start}
.agent-row.me{flex-direction:row-reverse}
.agent-ava{width:26px;height:26px;border-radius:50%;object-fit:cover;flex:0 0 auto;border:1px solid rgba(59,130,246,.4);margin-top:2px}
/* v1288: Agent 消息文字必须可光标选中复制——气泡与执行卡片说明文字显式开启选择、文本光标 */
.agent-bubble{max-width:82%;padding:7px 11px;border-radius:10px;font-size:12.5px;line-height:1.55;color:#d7e6ff;background:#1b2a44;border:1px solid #26385a;word-break:break-word;user-select:text;-webkit-user-select:text;cursor:text}
.agent-row.me .agent-bubble{background:linear-gradient(135deg,#1d4ed8,#2563eb);border-color:transparent;color:#fff}
.agent-bubble.running{display:flex;align-items:center;gap:8px}
.agent-dots{display:inline-flex;gap:3px}
.agent-dots i{width:5px;height:5px;border-radius:50%;background:#5eb1ff;animation:agentBounce 1s infinite}
.agent-dots i:nth-child(2){animation-delay:.15s}
.agent-dots i:nth-child(3){animation-delay:.3s}
@keyframes agentBounce{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(-4px);opacity:1}}
.agent-busy-txt{font-size:11.5px;color:#8fa8c8}
.agent-exec-card{max-width:88%;border:1px solid rgba(52,211,153,.4);background:rgba(16,46,38,.55);border-radius:10px;padding:8px 10px}
.aexc-title{font-size:12.5px;font-weight:700;color:#34d399}
.aexc-desc{font-size:11.5px;color:#9fb8d8;margin:4px 0 6px;user-select:text;-webkit-user-select:text;cursor:text}
.aexc-btns{display:flex;gap:6px}
.aexc-btn{padding:4px 10px;border-radius:7px;border:1px solid #2e425f;background:#17233a;color:#bcd3f2;font-size:11.5px;cursor:pointer}
.aexc-btn:hover{border-color:#3b82f6;color:#fff}
.sag-chips{display:flex;gap:6px;padding:8px 10px 0;flex-wrap:wrap}
.agent-chip{padding:4px 10px;border-radius:14px;border:1px dashed #2e425f;background:transparent;color:#8fa8c8;font-size:11px;cursor:pointer}
.agent-chip:hover{color:#5eb1ff;border-color:#3b82f6}
.sag-input{display:flex;gap:8px;padding:10px;align-items:flex-end}
.sag-input textarea{flex:1 1 auto;min-height:54px;max-height:110px;resize:none;background:#101a2e;border:1px solid #26385a;border-radius:10px;color:#d7e6ff;padding:8px 10px;font-size:12.5px;line-height:1.5;outline:none;font-family:inherit}
.sag-input textarea:focus{border-color:#3b82f6}
.sag-run{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:64px;height:54px;border:none;border-radius:10px;background:linear-gradient(135deg,#1668dc,#3b82f6);color:#fff;cursor:pointer;font-size:15px;box-shadow:0 4px 14px rgba(22,104,220,.35)}
.sag-run b{font-size:10.5px;font-weight:600}
.sag-run:hover{filter:brightness(1.12)}

/* ===== v1266: 用户中心三栏改版 / v1294: 普通用户横屏 2 列（管理员仍三栏） ===== */
/* v1294: 普通模式 u3-cols 单列——多列轨道会被隐藏的 admin-panel 占位，内容列被压半宽（本次竖排事故根因） */
.u3-cols{display:grid;grid-template-columns:1fr;gap:12px;align-items:start}
#user-profile-modal.is-admin .u3-cols{grid-template-columns:1fr 1.25fr 1.2fr}
.u3-col{display:flex;flex-direction:column;gap:14px;min-width:0}
#admin-panel{display:contents}
#admin-panel.hidden{display:none!important}
#user-profile-modal.is-admin .user-modal-box{width:min(1240px,96vw)}
@media (max-width:1180px){#user-profile-modal.is-admin .user-modal-box{width:96vw}#user-profile-modal.is-admin .u3-cols{grid-template-columns:1fr 1fr}}
@media (max-width:820px){.u3-cols{grid-template-columns:1fr}#user-profile-modal:not(.is-admin) .u3-left{grid-template-columns:1fr}}
/* v1294: 普通用户中心四卡 2×2 横排——内容全在 u3-left 单列 flex 内，grid 列数对它无效，需单独转 grid */
#user-profile-modal:not(.is-admin) .u3-left{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}
/* v1294: 普通模式用户信息格卡片化——与右侧三张卡视觉统一 */
#user-profile-modal:not(.is-admin) .u3-left .user-avatar-row{background:var(--panel2);border:1px solid var(--border);border-radius:12px;padding:14px}
/* v1266: 挂机步骤条按模式重排——已有剧本模式隐藏「原文转剧本」节点 */
.auto-node-off{display:none!important}
.auto-link-off{display:none!important}

/* ═══ v1269: 退出确认模态 + 导入资产数量卡片 ═══ */
#exit-confirm .exit-box{width:480px;max-width:92vw;height:auto;min-height:0}
.exit-body{padding:26px 26px 10px;text-align:center}
.exit-ico{width:64px;height:64px;margin:0 auto 12px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;background:linear-gradient(135deg,rgba(47,123,255,.18),rgba(47,210,138,.12));border:1px solid rgba(90,155,255,.35);color:#5a9bff}
.exit-title{font-size:16.5px;font-weight:700;color:var(--text);margin-bottom:10px}
.exit-warn{margin:0 0 12px;padding:10px 12px;border-radius:9px;border:1px solid rgba(255,176,32,.45);background:rgba(255,176,32,.09);color:#ffc861;font-size:12.5px;line-height:1.65;text-align:left}
.exit-tip{font-size:12px;color:var(--muted);line-height:1.6}
.ap-box .gen-btn.danger{background:linear-gradient(135deg,#e5484d,#c73a3f);border-color:#e5484d}
#import-card{position:fixed;top:76px;left:50%;transform:translateX(-50%) translateY(-8px);z-index:1400;padding:11px 20px;border-radius:10px;background:linear-gradient(135deg,#14304f,#102540);border:1px solid rgba(47,210,138,.55);color:#dff5ea;font-size:13.5px;box-shadow:0 14px 44px rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:.22s}
#import-card.show{opacity:1;transform:translateX(-50%) translateY(0)}
#import-card.idle{border-color:rgba(255,176,32,.55);color:#ffd894}

/* ===== v1314: 挂机面板分镜时长滑杆（鼠标拖取实时跟手 + 拖动气泡秒数 + 右侧实时秒数） ===== */
.ap-field .adur-auto{font-size:11px;padding:2px 10px;border-radius:9px;border:1px solid rgba(90,155,255,.4);background:transparent;color:var(--blue2);cursor:pointer;transition:.13s;font-weight:600}
.ap-field .adur-auto:hover{border-color:var(--blue);color:#fff}
.ap-field .adur-auto.on{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 0 8px rgba(47,123,255,.45)}
.adur-wrap{display:flex;align-items:center;gap:12px}
.adur-slider{position:relative;flex:1;height:30px;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none}
.adur-track{position:absolute;left:0;right:0;top:50%;height:5px;transform:translateY(-50%);border-radius:3px;background:rgba(90,155,255,.16)}
.adur-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:3px;background:linear-gradient(90deg,var(--blue),var(--blue2));box-shadow:0 0 8px rgba(47,123,255,.4)}
.adur-thumb{position:absolute;top:50%;left:0;width:15px;height:15px;border-radius:50%;background:#fff;border:2px solid var(--blue2);transform:translate(-50%,-50%);box-shadow:0 0 10px rgba(47,123,255,.55);transition:box-shadow .15s;z-index:2}
.adur-slider.dragging .adur-thumb{box-shadow:0 0 0 6px rgba(47,123,255,.18),0 0 12px rgba(47,123,255,.7)}
.adur-bubble{position:absolute;top:-14px;left:0;transform:translate(-50%,-100%);padding:2px 9px;border-radius:8px;background:#0d1e38;border:1px solid rgba(90,155,255,.55);color:var(--blue2);font-size:12px;font-weight:700;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s;z-index:3}
.adur-bubble.show{opacity:1}
.adur-val{min-width:56px;text-align:center;padding:4px 8px;border-radius:8px;background:var(--panel2);border:1px solid rgba(90,155,255,.3);flex:none}
.adur-val b{font-size:15px;color:#fff;font-weight:700}
.adur-val i{font-style:normal;font-size:11px;color:var(--blue2);margin-left:2px}
.adur-val.auto b{color:var(--green)}
/* ── v1324: 小云雀 CLI 工具条（安装/检测/粘贴access key/刷新列表） ── */
.xyl-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px;padding:9px;border:1px dashed rgba(90,155,255,.35);border-radius:10px;background:rgba(47,123,255,.05)}
.xyl-bar .sa-fetch-btn{flex:none}
.xyl-ver{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:700;border:1px solid var(--border2);color:var(--mut);background:var(--panel2);white-space:nowrap}
.xyl-ver.ok{color:var(--green);border-color:rgba(60,200,120,.5);background:rgba(60,200,120,.1)}
.xyl-ver.err{color:#ff7b72;border-color:rgba(255,123,114,.45);background:rgba(255,123,114,.08)}
.xyl-cli-cmd-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.xyl-cli-cmd{flex:1;padding:10px 12px;border-radius:9px;background:#0b1626;border:1px solid rgba(90,155,255,.4);color:var(--blue2);font-family:Consolas,monospace;font-size:13px;font-weight:700;word-break:break-all;user-select:all}
.xyl-key-input{width:100%;min-height:110px;resize:vertical;padding:10px 12px;border-radius:10px;background:var(--panel2);border:1px solid var(--border2);color:#e8eefc;font-size:13px;font-family:Consolas,monospace;line-height:1.6;outline:none}
.xyl-key-input:focus{border-color:var(--blue)}
.xyl-key-tip{margin-top:8px;font-size:12px;color:var(--mut);line-height:1.6}
.xyl-key-import-btn{min-width:88px}
/* ── v1325: 小云雀一键安装（软件内直装 + 真实输出回显）与内置 API 地址提示 ── */
.xyl-cli-hint{margin-bottom:10px;padding:9px 12px;border-radius:9px;background:rgba(47,123,255,.08);border:1px solid rgba(90,155,255,.25);color:#bcd3f7;font-size:12.5px;line-height:1.7}
.xyl-cli-run-row{display:flex;align-items:center;gap:12px;margin:2px 0 10px}
.xyl-cli-run-btn{min-width:132px;font-weight:700}
.xyl-cli-run-btn:disabled{opacity:.55;cursor:not-allowed}
.xyl-cli-progress{flex:1;font-size:12.5px;color:var(--mut);line-height:1.6;min-width:0}
.xyl-cli-progress.run{color:#6ea8ff}
.xyl-cli-progress.ok{color:var(--green);font-weight:700}
.xyl-cli-progress.err{color:#ff7b72;font-weight:700}
.xyl-cli-out{max-height:170px;overflow:auto;margin:0 0 12px;padding:10px 12px;border-radius:9px;background:#081018;border:1px solid var(--border2);color:#9fb6d8;font-family:Consolas,monospace;font-size:11.5px;line-height:1.55;white-space:pre-wrap;word-break:break-all}
.xyl-base-hint{margin:10px 0 2px;padding:8px 12px;border-radius:9px;background:rgba(47,123,255,.06);border:1px dashed rgba(90,155,255,.3);color:#9db8de;font-size:12px;line-height:1.6;user-select:all}

/* v1382: 管理面板激活码三色动效指示灯——绿=激活且正在使用（180s 内心跳）/ 红=激活未在使用 / 黄=生成未激活 */
.ap-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:7px;vertical-align:middle;box-shadow:0 0 6px currentColor}
.ap-dot-g{background:#22c55e;color:#22c55e;animation:apBlinkG 1.1s ease-in-out infinite}
.ap-dot-r{background:#ef4444;color:#ef4444;animation:apBlinkR 1.6s ease-in-out infinite}
.ap-dot-y{background:#f59e0b;color:#f59e0b;animation:apBlinkY 2.1s ease-in-out infinite}
@keyframes apBlinkG{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.72)}}
@keyframes apBlinkR{0%,100%{opacity:.9;transform:scale(1)}50%{opacity:.3;transform:scale(.78)}}
@keyframes apBlinkY{0%,100%{opacity:.95;transform:scale(1)}50%{opacity:.45;transform:scale(.85)}}

/* v1383: 渠道卡片右上角勾选√小框——勾选=模型选择框显示该渠道模型，取消=隐藏 */
.sa-chan{position:relative}
.sa-tick{position:absolute;top:6px;right:26px;width:16px;height:16px;border:1.5px solid rgba(148,163,184,.55);
  border-radius:4px;background:rgba(15,23,42,.55);cursor:pointer;z-index:2;line-height:13px;text-align:center;
  font-size:12px;font-style:normal;color:#0f172a;transition:all .15s ease}
.sa-tick:hover{border-color:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.18)}
.sa-tick.on{background:#22c55e;border-color:#22c55e}
.sa-tick.on::after{content:'✓';color:#fff;font-weight:700}

/* ── v1384: 多面板自定义 API 渠道 ── */
#sa-panels { display: flex; flex-direction: column; gap: 14px; }
.ap-panel { background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.08); border-radius: 12px; padding: 14px 16px; }
.ap-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.ap-title { font-size: 14px; font-weight: 700; color: #e8ecf5; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ap-del { background: transparent; border: 1px solid rgba(248,113,113,.45); color: #f87171; border-radius: 8px; padding: 4px 10px; font-size: 12px; cursor: pointer; flex: none; }
.ap-del:hover { background: rgba(248,113,113,.12); }
.ap-kinds { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.ap-add { width: 100%; padding: 12px; border-radius: 10px; border: 1px dashed rgba(96,165,250,.5); background: rgba(59,130,246,.08); color: #93c5fd; font-size: 13px; font-weight: 600; cursor: pointer; margin-top: 4px; }
.ap-add:hover { background: rgba(59,130,246,.16); }
.ap-add-max { text-align: center; color: #64748b; font-size: 12px; padding: 10px 0 2px; }
.ap-eye { background: transparent; border: 1px solid rgba(255,255,255,.14); border-radius: 8px; color: #cbd5e1; cursor: pointer; padding: 0 12px; margin-left: 8px; }

/* ═══ v1397: 激活码到期——滚动预警横幅 + 到期锁定 ═══ */
.exp-banner{position:fixed;top:0;left:0;right:0;z-index:99998;overflow:hidden;padding:7px 0;font-size:14px;font-weight:bold;color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.25);pointer-events:none}
.exp-banner.hidden{display:none}
.exp-banner.warn{background:linear-gradient(90deg,#b45309,#e6a23c,#b45309)}
.exp-banner.expired{background:linear-gradient(90deg,#7f1d1d,#dc2626,#7f1d1d)}
.exp-banner .marq{display:inline-block;white-space:nowrap;padding-left:100vw;animation:exp-marq 16s linear infinite}
@keyframes exp-marq{0%{transform:translateX(0)}100%{transform:translateX(-200vw)}}
body.acct-expired .ap-panel,body.acct-expired .ap-card,body.acct-expired .ap-add,body.acct-expired .v1243-param,body.acct-expired .ap-grid,body.acct-expired .v1243-param select,body.acct-expired .ap-grid select{pointer-events:none!important;opacity:.42!important;filter:grayscale(.55)}

/* ═══ v1400: 账号登录系统（模态弹窗版）——启动页正常显示，进入工作台后弹出；猫头像+玻璃拟态重设计 ═══ */
#auth-gate{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;background:rgba(7,12,26,.68);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.ag-card{position:relative;width:410px;max-width:92vw;max-height:94vh;overflow-y:auto;background:linear-gradient(165deg,#18233f 0%,#111a30 55%,#0e1628 100%);border:1px solid rgba(88,124,214,.35);border-radius:22px;padding:30px 32px 24px;box-shadow:0 30px 90px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.03) inset,0 0 60px rgba(47,107,255,.12)}
.ag-card::before{content:"";position:absolute;inset:0;border-radius:22px;background:radial-gradient(420px 200px at 50% -40px,rgba(64,120,255,.18),transparent 70%);pointer-events:none}
.ag-avatar{width:86px;height:86px;margin:0 auto 12px;border-radius:50%;overflow:hidden;border:2px solid rgba(255,205,110,.75);box-shadow:0 0 0 5px rgba(255,205,110,.10),0 0 34px rgba(255,190,80,.30);animation:agBreath 3.2s ease-in-out infinite}
.ag-avatar img{width:100%;height:100%;object-fit:cover;display:block}
@keyframes agBreath{0%,100%{box-shadow:0 0 0 5px rgba(255,205,110,.10),0 0 26px rgba(255,190,80,.22)}50%{box-shadow:0 0 0 7px rgba(255,205,110,.16),0 0 46px rgba(255,190,80,.42)}}
.ag-logo{font-size:23px;font-weight:800;color:#fff;text-align:center;letter-spacing:2px;text-shadow:0 2px 12px rgba(47,107,255,.35)}
.ag-sub{font-size:12px;color:#8294bd;text-align:center;margin:9px 0 20px;letter-spacing:.5px}
.ag-tabs{display:flex;gap:5px;margin-bottom:18px;background:rgba(9,15,32,.85);border:1px solid rgba(88,124,214,.22);border-radius:12px;padding:4px}
.ag-tabs button{flex:1;background:transparent;border:0;color:#7d8db1;font-size:14px;padding:9px 0;border-radius:9px;cursor:pointer;font-weight:600;transition:all .18s}
.ag-tabs button:hover{color:#c6d2ea}
.ag-tabs button.on{background:linear-gradient(135deg,#2f6bff,#5b4dff);color:#fff;box-shadow:0 4px 16px rgba(47,107,255,.35)}
.ag-view{display:flex;flex-direction:column;gap:11px}
.ag-view input{background:rgba(9,15,32,.85);border:1px solid rgba(88,124,214,.28);border-radius:11px;color:#e8edf7;font-size:14px;padding:12px 14px;outline:none;width:100%;box-sizing:border-box;transition:border-color .15s,box-shadow .15s}
.ag-view input::placeholder{color:#55648c}
.ag-view input:focus{border-color:#4a7dff;box-shadow:0 0 0 3px rgba(47,107,255,.16)}
.ag-pw{position:relative}
.ag-pw input{padding-right:46px}
.ag-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:34px;height:34px;border:0;background:transparent;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#55648c;transition:color .15s,background .15s}
.ag-eye:hover{color:#8fb2ff;background:rgba(88,124,214,.12)}
.ag-eye.on{color:#8fb2ff}
.ag-eye svg{width:19px;height:19px;pointer-events:none}
/* v1403: 字段级实时校验提示（官方注册机制）——红字在输入框正下方，输错当场显示 */
.ag-fe{font-size:12px;color:#ff8f8f;line-height:1.35;margin:-6px 2px 0;text-align:left;display:none}
.ag-fe.on{display:block}
.ag-view input.bad{border-color:rgba(255,90,90,.65)!important;box-shadow:0 0 0 3px rgba(255,90,90,.13)!important}
.ag-view input.good{border-color:rgba(90,200,130,.5)!important}
/* v1404: 大写锁定实时提示 */
.ag-caps{display:none;font-size:12px;color:#ffd88a;background:rgba(255,205,110,.10);border:1px solid rgba(255,205,110,.35);border-radius:8px;padding:5px 10px;margin:-4px 2px 0;text-align:left}
.ag-caps.on{display:block}
/* v1404: 登录失败窗口抖动 */
@keyframes agShake{0%,100%{transform:translateX(0)}15%{transform:translateX(-14px)}30%{transform:translateX(11px)}45%{transform:translateX(-8px)}60%{transform:translateX(6px)}75%{transform:translateX(-4px)}90%{transform:translateX(2px)}}
.ag-card.ag-shake{animation:agShake .5s ease}
.ag-main{background:linear-gradient(135deg,#2f6bff,#5b4dff);border:0;border-radius:11px;color:#fff;font-size:15px;font-weight:700;padding:12px 0;cursor:pointer;letter-spacing:2px;box-shadow:0 6px 20px rgba(47,107,255,.32);transition:filter .15s,transform .1s}
.ag-main:hover{filter:brightness(1.12)}
.ag-main:active{transform:scale(.985)}
.ag-main:disabled{opacity:.55;cursor:default}
.ag-main.ag-alt{background:rgba(88,124,214,.14);border:1px solid rgba(88,124,214,.35);color:#c6d2ea;box-shadow:none}
.ag-main.ag-alt:hover{background:rgba(88,124,214,.24);filter:none}
.ag-mini{background:rgba(88,124,214,.14);border:1px solid rgba(88,124,214,.35);border-radius:11px;color:#c6d2ea;font-size:13px;padding:10px 0;cursor:pointer}
.ag-tip{font-size:12px;color:#5f6f94;text-align:center;margin-top:2px;line-height:1.5}
.ag-hi{font-size:15px;color:#9fd08c;text-align:center;font-weight:700}
.ag-q{background:rgba(9,15,32,.85);border:1px dashed rgba(255,205,110,.4);border-radius:11px;color:#ffd88a;font-size:14px;padding:11px 13px;text-align:center}
.ag-link{color:#5f8bff;font-size:12.5px;text-align:center;text-decoration:underline;cursor:pointer}
.ag-link:hover{color:#8fb2ff}
.ag-err{background:rgba(255,90,90,.12);border:1px solid rgba(255,90,90,.4);border-radius:11px;color:#ff8f8f;font-size:13px;padding:9px 12px;text-align:center}
.ag-view .ap-mini-btn{align-self:center}
.ap-user-tag.acc{background:rgba(47,107,255,.16);color:#8fb2ff;border:1px solid rgba(47,107,255,.4)}
