/* ===================================================================
   S2 短剧流水线 · 深色双绿主题（自有设计，借鉴骨架·细节原创）
   =================================================================== */
:root{
  --bg:#0a0c0f; --rail:#0d0f13; --panel:#111418; --card:#161a20; --card2:#1b2027;
  --border:#232a33; --border2:#2c343f;
  --text:#e8ecf1; --dim:#8b95a3; --faint:#5b6573;
  --accent:#1e8fff; --accent2:#22d3ee; --accent-press:#1877e0; --ink:#04121f;
  --soft:rgba(30,143,255,.14); --grad:linear-gradient(135deg,#1e8fff 0%,#22d3ee 100%);
  --danger:#ff6b6b; --warn:#f3c14b;
  --r:12px; --rlg:16px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:-apple-system,"PingFang SC","Microsoft YaHei",Segoe UI,sans-serif;
  background:var(--bg);color:var(--text);line-height:1.55;font-size:14px;overflow:hidden}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#2a323d;border-radius:9px}
::-webkit-scrollbar-track{background:transparent}
.hidden{display:none !important}
code{background:#0f1318;border:1px solid var(--border);padding:2px 6px;border-radius:5px;font-size:13px;color:var(--accent2)}
a{color:var(--accent2)}

/* ============ 三栏骨架 ============ */
.app{display:flex;height:100vh}

/* 左图标栏 */
.rail{width:74px;background:var(--rail);border-right:1px solid var(--border);
  display:flex;flex-direction:column;align-items:center;padding:14px 0;gap:4px;flex-shrink:0}
.logo{width:40px;height:40px;border-radius:12px;background:var(--grad);display:flex;align-items:center;
  justify-content:center;font-weight:800;color:var(--ink);margin-bottom:12px;box-shadow:0 0 16px rgba(34,211,238,.35);font-size:15px}
.rnav{width:58px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 0;color:var(--faint);
  cursor:pointer;border-radius:11px;font-size:11px;transition:.15s}
.rnav .ico{font-size:19px;line-height:1}
.rnav:hover{color:var(--dim);background:#14181d}
.rnav.active{color:var(--accent)}
.rnav.active .ico{filter:drop-shadow(0 0 7px rgba(30,143,255,.55))}
.rail .spacer{flex:1}
.rail .vip{font-size:10px;color:var(--warn);border:1px solid #5a4a14;background:#1c1808;padding:3px 8px;border-radius:8px;margin-bottom:8px}
.rail .uav{width:38px;height:38px;border-radius:50%;background:var(--grad);color:var(--ink);
  display:flex;align-items:center;justify-content:center;font-weight:700;cursor:pointer}

/* 步骤栏 */
.steps{width:230px;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}
.steps .s-head{display:flex;align-items:center;gap:8px;padding:18px 16px;border-bottom:1px solid var(--border);font-weight:700}
.steps .s-head .back{color:var(--dim);cursor:pointer;font-size:18px}
.steps .s-head b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.steplist{padding:14px 12px;display:flex;flex-direction:column;gap:1px;flex:1;overflow:auto}
.step{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;cursor:pointer;color:var(--dim)}
.step .num{width:26px;height:26px;border-radius:8px;border:1.5px solid #3a434f;display:flex;align-items:center;
  justify-content:center;font-size:12px;color:var(--dim);flex-shrink:0;transition:.2s}
.step:hover{background:#181c22;color:var(--text)}
.step.active{background:var(--soft);color:var(--text);font-weight:600;box-shadow:inset 2px 0 0 var(--accent)}
.step.active .num{border-color:transparent;background:var(--grad);color:var(--ink);box-shadow:0 0 12px rgba(34,211,238,.5)}
.step.done .num{border-color:var(--accent2);color:var(--accent2)}
.step .chk{margin-left:auto;color:var(--accent2);font-size:13px}
.step.locked{opacity:.45;cursor:not-allowed}
.s-line{height:14px;width:2px;background:linear-gradient(180deg,var(--accent),rgba(34,211,238,.12));margin-left:25px;border-radius:2px;opacity:.45}
.steps .s-foot{padding:14px;border-top:1px solid var(--border)}
.share{width:100%;background:var(--card);border:1px solid var(--border2);color:var(--dim);padding:9px;border-radius:10px;cursor:pointer}
.share:hover{color:var(--accent);border-color:var(--accent)}

/* 主区 */
.app-main{flex:1;display:flex;flex-direction:column;min-width:0}
.progress{height:3px;background:#161a20;flex-shrink:0}
.progress>i{display:block;height:100%;width:0;background:var(--grad);box-shadow:0 0 10px rgba(34,211,238,.6);transition:width .35s}
.app-top{height:60px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:0 24px;flex-shrink:0}
.app-top .a-title{font-weight:700;font-size:15px}
.app-top .a-right{margin-left:auto;display:flex;align-items:center;gap:12px}
.content{flex:1;overflow:auto;padding:24px 30px 60px}
.wrap{max-width:1120px;margin:0 auto}

/* ============ 通用控件 ============ */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--rlg);padding:20px 22px;margin-bottom:18px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.card h2{font-size:16px;font-weight:700}
.muted{color:var(--dim);font-size:13px;margin:8px 0}
.subhead{font-size:12px;font-weight:700;letter-spacing:.03em;color:var(--faint);text-transform:uppercase;margin:20px 0 10px}
.cnt{color:var(--accent);font-weight:700;margin-left:4px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

.btn{border:1px solid var(--border2);background:var(--card2);color:var(--text);padding:8px 16px;border-radius:9px;font-size:14px;cursor:pointer;transition:.15s}
.btn:hover{background:#222a33;border-color:#39434f}
.btn.primary{background:var(--grad);color:var(--ink);border:none;font-weight:700}
.btn.primary:hover{filter:brightness(1.06)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.big{padding:12px 26px;font-size:15px}
label.btn{display:inline-flex;align-items:center;cursor:pointer}

.input{padding:9px 12px;border:1px solid var(--border2);border-radius:9px;font-size:14px;min-width:160px;
  font-family:inherit;background:#0f1318;color:var(--text)}
.input::placeholder{color:var(--faint)}
.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--soft)}
.textarea{width:100%;min-height:120px;padding:11px 13px;border:1px solid var(--border2);border-radius:10px;font-size:13px;
  font-family:inherit;resize:vertical;margin-top:10px;line-height:1.6;background:#0f1318;color:var(--text)}
.textarea::placeholder{color:var(--faint)}
.textarea:focus{outline:none;border-color:var(--accent)}

.badge{padding:4px 12px;border-radius:20px;font-size:13px;font-weight:600}
.badge-gray{background:var(--card2);color:var(--dim)}
.badge-ok{background:var(--soft);color:var(--accent)}
.badge-bad{background:rgba(240,80,80,.14);color:var(--danger)}

/* 连通自检 */
.issues{margin:10px 0;padding-left:18px}.issues li{color:var(--danger);font-size:14px;margin:4px 0}
.checks{display:grid;gap:10px;margin-top:14px}
.check{display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border);border-radius:12px;background:var(--card2)}
.check b{font-size:14px}.check small{display:block;color:var(--dim);font-size:12px}
.check .detail{font-size:13px;color:var(--dim);max-width:460px;text-align:right;word-break:break-all}
.dot{width:12px;height:12px;border-radius:50%;background:#3a434f}
.dot.ok{background:var(--accent);box-shadow:0 0 8px rgba(30,143,255,.6)}
.dot.bad{background:var(--danger)}.dot.run{background:var(--warn);animation:blink 1s infinite}
@keyframes blink{50%{opacity:.3}}

/* 项目 */
.proj-list{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.proj{padding:11px 15px;border:1px solid var(--border);border-radius:11px;cursor:pointer;min-width:150px;background:var(--card2)}
.proj:hover{border-color:var(--accent)}
.proj.sel{border-color:var(--accent);background:var(--soft)}
.proj b{display:block;font-size:14px}.proj small{color:var(--dim);font-size:12px}
.cur-proj{margin-top:12px;font-size:14px;color:var(--dim)}
.cur-proj b{color:var(--text)}

/* 全局拆解卡 */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.cc{border:1px solid var(--border);border-radius:11px;padding:12px;background:var(--card2)}
.cc-h{display:flex;gap:6px;align-items:center}
.cc label{display:block;font-size:11px;color:var(--dim);margin:8px 0 3px}
.f{width:100%;padding:7px 9px;border:1px solid var(--border2);border-radius:7px;font-size:13px;font-family:inherit;
  resize:vertical;line-height:1.5;background:#0f1318;color:var(--text)}
.f:focus{outline:none;border-color:var(--accent)}
.cc-h .f{font-weight:700}
.x{border:none;background:#241a1d;color:var(--danger);border-radius:6px;cursor:pointer;padding:4px 8px}
.x:hover{background:#2e2024}

/* 分镜（拆解/编辑） */
.ep{margin-bottom:18px}
.ep-h{font-weight:700;font-size:14px;padding:8px 0;border-bottom:2px solid var(--accent);margin-bottom:10px}
.shot{border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;margin-bottom:10px;background:var(--card)}
.shot-top{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.shot-top .btn{margin-left:auto}
.tag{background:var(--grad);color:var(--ink);padding:2px 10px;border-radius:7px;font-size:12px;font-weight:700}
.tag2{background:var(--card2);border:1px solid var(--border2);color:var(--dim);padding:2px 10px;border-radius:7px;font-size:12px}
.dur{margin-left:auto;color:var(--faint);font-size:12px}
.roles{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.role{background:var(--soft);border:1px solid rgba(30,143,255,.3);border-radius:7px;padding:3px 8px;font-size:12px;color:var(--text)}
.role i{color:var(--dim);font-style:normal}
.lines{margin-top:8px;font-size:13px;color:var(--dim)}.lines div{margin:2px 0}
.shot-desc{font-size:13px;color:#c2cad3;margin:4px 0 2px;line-height:1.55}
.hist-box{margin-top:10px;border:1px solid var(--border);border-radius:10px;padding:8px;background:var(--card2);max-height:300px;overflow:auto}
.hist-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 6px;border-bottom:1px solid var(--border)}
.hist-item:last-child{border-bottom:none}
.hist-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:8px;padding:8px;background:#0f1318;border:1px solid var(--border);border-radius:9px}
.hist-thumb{width:42px;height:56px;object-fit:cover;border-radius:6px;border:1px solid var(--border2);cursor:pointer}
.hist-thumb:hover{border-color:var(--accent)}
.msg-badge{position:absolute;top:-5px;right:-5px;background:var(--danger);color:#fff;border-radius:10px;font-size:10px;min-width:16px;height:16px;line-height:16px;text-align:center;padding:0 4px;font-weight:700}
.modal-mask{position:fixed;inset:0;background:rgba(6,9,13,.82);display:flex;align-items:center;justify-content:center;z-index:900;backdrop-filter:blur(3px)}
.modal-box{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;width:560px;max-width:92vw;max-height:80vh;overflow:auto;box-shadow:0 24px 70px rgba(0,0,0,.6)}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.msg-item{border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:8px;background:var(--card2)}
.msg-item.unread{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.msg-item .mh{display:flex;justify-content:space-between;font-size:12px;color:var(--dim)}
.msg-item b{display:block;margin:3px 0}
/* 首页项目卡墙 */
.proj-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-bottom:18px}
.pcard{display:flex;gap:12px;background:var(--card);border:1px solid var(--border);border-radius:var(--rlg);padding:14px;cursor:pointer;transition:.15s}
.pcard:hover{border-color:var(--accent);transform:translateY(-2px)}
.pcard-thumb{width:56px;height:56px;border-radius:12px;background:var(--grad);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}
.pcard-body{min-width:0;flex:1}
.pcard-body b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 画风库选择器 */
.style-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:12px}
.style-card{border:1px solid var(--border);border-radius:12px;padding:8px;cursor:pointer;text-align:center;background:var(--card2)}
.style-card.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--soft)}
.style-thumb{aspect-ratio:3/4;border-radius:8px;overflow:hidden;background:linear-gradient(135deg,#1d242c,#12171d);display:flex;align-items:center;justify-content:center;margin-bottom:6px}
.style-thumb img{width:100%;height:100%;object-fit:cover}
.style-thumb .ph{font-size:26px;opacity:.5}
.style-name{font-size:12px;font-weight:600;margin-bottom:5px}
/* 项目资产树 */
.tree-proj{border:1px solid var(--border);border-radius:12px;margin-bottom:10px;overflow:hidden}
.tree-proj-h{padding:12px 14px;background:var(--card2);cursor:pointer;font-weight:600}
.tree-proj-h:hover{background:#222a33}
.tree-proj-body{padding:10px 14px}
.tree-sec{margin-bottom:10px}
.tree-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.tree-thumb{width:60px;height:80px;object-fit:cover;border-radius:7px;border:1px solid var(--border2);cursor:zoom-in}
.tree-vid{width:120px;border-radius:7px;background:#000}
.save-bar{position:sticky;bottom:0;background:var(--bg);border-top:1px solid var(--border);padding:14px 0;display:flex;gap:12px;align-items:center;margin-top:10px}

/* 逐字段手动编辑 */
.f-inline{padding:5px 8px;border:1px solid var(--border2);border-radius:7px;font-size:12px;font-family:inherit;min-width:70px;background:#0f1318;color:var(--text)}
.f-inline:focus{outline:none;border-color:var(--accent)}
.f-inline.line-in{flex:1;min-width:160px}
.f-inline.dur-in{width:48px;min-width:48px;text-align:center}
.f-sel{padding:5px 8px;border:1px solid var(--border2);border-radius:7px;font-size:12px;font-family:inherit;background:#0f1318;color:var(--text)}
.mini-label{font-size:11px;color:var(--faint);margin:6px 0 2px;display:inline-block}
.roles-edit,.lines-edit{display:flex;flex-direction:column;gap:5px;margin:2px 0 4px}
.role-edit,.line-edit{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.role-edit .x,.line-edit .x{padding:2px 6px;font-style:normal}
.prompt-box{min-height:70px;font-size:12px;margin:2px 0 6px}
.mini-btn{font-size:11px;padding:4px 9px;border:1px dashed var(--accent);color:var(--accent);background:transparent;border-radius:7px;cursor:pointer}
.mini-btn:hover{background:var(--soft)}

/* 资产卡（阶段2 / 资源库） */
.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:10px}
.ac{display:flex;gap:12px;border:1px solid var(--border);border-radius:var(--rlg);padding:12px;background:var(--card);position:relative;overflow:hidden}
.ac::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 3px 3px 0;background:var(--grad);opacity:.85}
.ac-img{width:120px;height:213px;flex-shrink:0;border-radius:10px;overflow:hidden;background:#0f1318;
  display:flex;align-items:center;justify-content:center;border:1px solid var(--border)}
.ac-img img{width:100%;height:100%;object-fit:cover}
.ac-img .ph{color:var(--faint);font-size:12px;text-align:center;padding:0 8px}
.ac-info{flex:1;min-width:0;display:flex;flex-direction:column}
.ac-info b{font-size:15px}.ac-info small{color:var(--dim);margin-left:4px;font-size:12px}
.ap{font-size:12px;color:var(--dim);margin:8px 0;max-height:96px;overflow:auto;line-height:1.5;flex:1;
  background:#0f1318;border:1px solid var(--border);border-radius:9px;padding:8px}

/* 阶段2 资产卡（图片主导·按比例·垂直卡） */
.acv{background:var(--card);border:1px solid var(--border);border-radius:var(--rlg);overflow:hidden;display:flex;flex-direction:column;position:relative}
.acv .tags{position:absolute;top:10px;left:10px;display:flex;gap:6px;z-index:2}
.acv .tags .tag{background:var(--grad);color:var(--ink);padding:2px 9px;border-radius:7px;font-size:11px;font-weight:700}
.acv .tags .tag2{background:rgba(0,0,0,.55);color:#cfd6de;border:1px solid var(--border2);padding:2px 9px;border-radius:7px;font-size:11px}
.acv .cover{position:relative;width:100%;background:#0f1318;display:flex;align-items:center;justify-content:center;overflow:hidden}
.acv .cover.r169{aspect-ratio:16/9}
.acv .cover.r34{aspect-ratio:3/4}
.acv .cover img{width:100%;height:100%;object-fit:cover}
.acv .cover .ph{color:var(--faint);font-size:12px}
.acv .body{padding:12px 14px;display:flex;flex-direction:column}
.acv .body b{font-size:15px}.acv .body small{color:var(--dim);font-size:12px;margin-left:4px}
.acv .ap{font-size:12px;color:var(--dim);margin:8px 0;max-height:84px;overflow:auto;line-height:1.5;background:#0f1318;border:1px solid var(--border);border-radius:9px;padding:8px}

/* 阶段3 提示词 / 阶段4 出片 */
.s3p{margin-top:8px}.s3p .f{min-height:96px;font-size:12px}
.s3meta{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}
.rimg{width:36px;height:64px;object-fit:cover;border-radius:5px;border:1px solid var(--border2)}
.vid{width:220px;max-width:100%;border-radius:10px;margin-top:8px;background:#000}

/* 集轴 + 镜状态板（分镜工作台） */
.eptabs{display:flex;gap:8px;overflow:auto;padding-bottom:12px;margin-bottom:14px;border-bottom:1px solid var(--border)}
.eptab{flex-shrink:0;padding:7px 14px;border-radius:9px;background:var(--card);border:1px solid var(--border2);color:var(--dim);cursor:pointer;font-size:13px}
.eptab:hover{color:var(--text)}
.eptab.active{background:var(--soft);border-color:var(--accent);color:var(--text);font-weight:600}
.board-sum{display:flex;gap:10px;align-items:center;margin-bottom:14px;font-size:12.5px;color:var(--dim);flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11.5px;font-weight:600}
.chip.ok{background:rgba(30,143,255,.16);color:#8fd0ff}
.chip.run{background:rgba(245,180,40,.15);color:var(--warn)}
.chip.fail{background:rgba(240,80,80,.15);color:#ff8585}
.chip.wait{background:var(--card2);color:var(--dim)}
.chip.st{margin-left:8px}
.cost{color:var(--warn);font-weight:600}
.mention{color:var(--accent);font-weight:600}
.refthumbs{display:flex;gap:6px;align-items:center;margin-top:9px}
.refthumbs .rf{width:30px;height:40px;border-radius:6px;background:#0f1318;border:1px solid var(--border2);display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--faint);overflow:hidden}
.refthumbs .rf img{width:100%;height:100%;object-fit:cover}
.refthumbs .rf.scene{width:54px;height:30px}

/* 空状态 */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:54px 0;text-align:center}
.empty .illu{width:120px;height:96px;border-radius:14px;margin-bottom:18px;display:flex;align-items:flex-end;justify-content:center;
  color:#46515e;font-size:30px;padding-bottom:14px;
  background:radial-gradient(120px 60px at 50% 0%,rgba(30,143,255,.22),transparent),linear-gradient(180deg,#1a2129,#0f141a)}
.empty .dual{display:flex;gap:10px;margin-top:16px}
.btn-green-split{display:inline-flex;align-items:center;background:var(--grad);border-radius:11px;overflow:hidden}
.btn-green-split b{color:var(--ink);padding:11px 20px;cursor:pointer}
.btn-green-split i{color:var(--ink);padding:11px 12px;border-left:1px solid rgba(0,0,0,.18);cursor:pointer;font-style:normal}

/* 资源库 tabs */
.restabs{display:flex;gap:8px;margin:10px 0 16px;flex-wrap:wrap}
.rtab{padding:7px 16px;border:1px solid var(--border2);background:var(--card2);border-radius:9px;cursor:pointer;font-size:14px;color:var(--dim)}
.rtab:hover{color:var(--text)}
.rtab.active{background:var(--soft);color:var(--text);border-color:var(--accent);font-weight:600}
.owner-badge{display:inline-block;font-size:10px;padding:1px 7px;border-radius:10px;background:var(--card2);color:var(--dim);vertical-align:middle}
.owner-badge.mine{background:var(--soft);color:var(--accent)}

/* 多造型 */
.styles-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:8px}
.style-chip{position:relative;display:inline-block}
.style-chip img{width:32px;height:56px;object-fit:cover;border-radius:5px;border:1px solid var(--border2);cursor:zoom-in}
.style-chip i{position:absolute;top:-6px;right:-6px;background:var(--danger);color:#fff;border-radius:50%;width:15px;height:15px;font-size:10px;line-height:15px;text-align:center;cursor:pointer;font-style:normal}

/* 统计 / 管理 */
.stat-cards{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}
.stat-card{flex:1;min-width:130px;border:1px solid var(--border);border-radius:12px;padding:14px 16px;background:var(--card2)}
.stat-t{font-size:13px;color:var(--dim)}
.stat-v{font-size:26px;font-weight:700;margin-top:6px;color:var(--text)}
.tbl{width:100%;border-collapse:collapse;margin:8px 0 18px;font-size:14px}
.tbl th,.tbl td{border-bottom:1px solid var(--border);padding:8px 10px;text-align:left}
.tbl th{color:var(--dim);font-weight:600;font-size:13px;background:var(--card2)}
.tbl .neg{color:var(--danger)}.tbl .pos{color:var(--accent)}

/* 工具箱 */
.tool-cards{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}
.tool-card{flex:1;min-width:240px;border:2px solid var(--border);border-radius:var(--rlg);padding:16px 18px;cursor:pointer;background:var(--card2)}
.tool-card.active{border-color:var(--accent);background:var(--soft)}
.tool-card b{display:block;font-size:16px;margin-bottom:6px}.tool-card small{color:var(--dim)}

/* 使用说明 */
.help h1{font-size:22px;margin-bottom:6px}
.help h2{font-size:17px;margin:22px 0 10px;padding-top:14px;border-top:1px solid var(--border)}
.help h3{font-size:15px;margin:14px 0 6px;color:var(--accent)}
.help ol,.help ul{padding-left:22px;margin:8px 0}
.help li{margin:5px 0;font-size:14px;line-height:1.65;color:var(--dim)}
.help p{font-size:14px;line-height:1.7;margin:6px 0;color:var(--dim)}
.tip{background:var(--soft);border:1px solid rgba(30,143,255,.3);border-radius:10px;padding:10px 14px;margin:12px 0;font-size:14px;color:#bfe1ff}

/* 登录 */
.login-mask{position:fixed;inset:0;background:rgba(6,9,13,.92);display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(4px)}
.login-box{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:32px;width:360px;box-shadow:0 24px 70px rgba(0,0,0,.6)}
.login-box h2{font-size:20px;margin-bottom:4px}
.login-box .input{width:100%;margin:8px 0}
.login-box #loginErr{color:var(--danger);font-size:13px;margin-top:8px;min-height:16px}
.userbox{font-size:13px;color:var(--text);display:flex;align-items:center;gap:6px}
.userbox b{color:var(--accent)}

/* 工具箱模式切换（快速版/高清版） */
.seg-opt{display:inline-flex;align-items:center;gap:6px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;cursor:pointer;font-size:14px;color:var(--text);background:var(--card);transition:.15s}
.seg-opt:hover{border-color:var(--accent)}
.seg-opt.active{border-color:var(--accent);background:linear-gradient(135deg,rgba(30,143,255,.15),rgba(34,211,238,.10));box-shadow:0 0 0 1px var(--accent) inset}
.seg-opt .muted{font-size:12px}

/* 图片放大灯箱 */
.lb-mask{position:fixed;inset:0;z-index:9999;background:rgba(3,6,10,.92);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.lb-mask img{max-width:92vw;max-height:88vh;border-radius:10px;box-shadow:0 12px 60px rgba(0,0,0,.6);cursor:default;object-fit:contain}
.lb-close{position:absolute;top:18px;right:26px;color:#fff;font-size:30px;cursor:pointer;line-height:1;opacity:.8;user-select:none}
.lb-close:hover{opacity:1}
.lb-dl{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);background:var(--grad);color:#fff;padding:8px 18px;border-radius:20px;text-decoration:none;font-size:14px;box-shadow:0 4px 16px rgba(30,143,255,.4)}
/* 生成内容图片：鼠标移上去显示可放大 */
.content img[src*="/projects/"],.content img[src*="/library/"],.content img[src*="/tools-output/"],.content img[src*="/style-previews/"]{cursor:zoom-in;transition:filter .15s}
.content img[src*="/projects/"]:hover,.content img[src*="/library/"]:hover{filter:brightness(1.08)}

/* ============ 集成式导演台 ============ */
.dir-shell{display:flex;flex-direction:column;height:calc(100vh - 90px);gap:10px}
.dir-top{display:flex;align-items:center;gap:14px;padding:10px 14px;background:var(--card);border:1px solid var(--line);border-radius:12px;flex-wrap:wrap}
.dir-title{font-size:16px;font-weight:700;color:var(--text)}
.dir-title small{font-weight:400;margin-left:8px}
.dir-style{flex:1;min-width:180px;font-size:12px;color:var(--muted)}
.dir-style b{color:var(--accent2)}
.dir-acts{display:flex;gap:8px;align-items:center}
.dir-body{flex:1;display:grid;grid-template-columns:212px 1fr 340px;gap:10px;min-height:0}
.dir-scenes,.dir-monitor,.dir-detail{background:var(--card);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;min-height:0}
.dir-sec-h{padding:10px 12px;font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.05em;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:6px}
.dir-mon-acts{display:flex;gap:6px;flex-wrap:wrap}
/* 左:场景序列 */
.dir-eplist{overflow:auto;padding:8px;display:flex;flex-direction:column;gap:6px}
.dir-ep{padding:10px;border:1px solid var(--line);border-radius:9px;cursor:pointer;transition:.15s;background:rgba(255,255,255,.02)}
.dir-ep:hover{border-color:var(--accent)}
.dir-ep.active{border-color:var(--accent);background:linear-gradient(135deg,rgba(30,143,255,.16),rgba(34,211,238,.08))}
.dir-ep .et{font-size:13px;color:var(--text);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dir-ep .em{font-size:11px;color:var(--muted);margin-top:3px}
/* 中:监视器宫格 */
.dir-grid{flex:1;overflow:auto;padding:12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;align-content:start}
.dir-cell{position:relative;border-radius:9px;overflow:hidden;border:1px solid var(--line);background:#05080c;cursor:pointer;aspect-ratio:16/9;transition:.15s}
.dir-cell:hover{border-color:var(--accent);transform:translateY(-2px)}
.dir-cell.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}
.dir-cell img,.dir-cell video{width:100%;height:100%;object-fit:cover;display:block}
.dir-cell .ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#33424f;font-size:12px}
.dir-cell .cn{position:absolute;top:6px;left:6px;background:rgba(0,0,0,.7);color:#fff;font-size:11px;padding:2px 7px;border-radius:6px;font-weight:600}
.dir-cell .cs{position:absolute;bottom:6px;right:6px;font-size:10px;padding:2px 6px;border-radius:5px}
.cs.ok{background:rgba(34,197,94,.9);color:#fff}.cs.wait{background:rgba(234,179,8,.9);color:#000}.cs.none{background:rgba(100,116,139,.85);color:#fff}
.dir-cell .ctag{position:absolute;top:6px;right:6px;background:rgba(30,143,255,.85);color:#fff;font-size:10px;padding:2px 6px;border-radius:5px}
/* 右:镜头详情 */
.dir-detail{overflow:auto;padding:12px;gap:10px}
.dir-detail .dd-mon{width:100%;aspect-ratio:16/9;border-radius:9px;overflow:hidden;background:#05080c;border:1px solid var(--line);margin-bottom:10px}
.dir-detail .dd-mon img,.dir-detail .dd-mon video{width:100%;height:100%;object-fit:contain;background:#000}
.dir-detail label{display:block;font-size:11px;color:var(--muted);margin:8px 0 3px;font-weight:600}
.dir-detail textarea{width:100%;background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:8px;font-size:13px;min-height:80px;resize:vertical}
.dir-detail .dd-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.dir-detail .dd-desc{font-size:13px;color:var(--text);line-height:1.6;background:rgba(255,255,255,.03);border-radius:8px;padding:8px}
@media(max-width:1100px){.dir-body{grid-template-columns:1fr}.dir-scenes,.dir-detail{max-height:260px}}

/* 输入校验高亮(替代误导性alert) */
.input-err{border-color:var(--danger)!important;box-shadow:0 0 0 2px rgba(220,38,38,.25)!important;animation:shakeX .4s}
@keyframes shakeX{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}

/* 导演台 tab + 资产管理台 + 宫格台 */
.dir-tabs{display:flex;gap:6px}
.dir-tab{padding:7px 14px;border:1px solid var(--line);background:var(--card);border-radius:8px;color:var(--muted);cursor:pointer;font-size:13px}
.dir-tab.active{border-color:var(--accent);color:#fff;background:linear-gradient(135deg,rgba(30,143,255,.2),rgba(34,211,238,.1))}
.dir-assets{flex:1;display:flex;flex-direction:column;min-height:0;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.dir-asset-tabs{display:flex;gap:6px;padding:10px;border-bottom:1px solid var(--line)}
.da-tab{padding:7px 14px;border:1px solid var(--line);background:transparent;border-radius:8px;color:var(--muted);cursor:pointer;font-size:13px}
.da-tab.active{border-color:var(--accent2);color:#fff;background:rgba(34,211,238,.12)}
.dir-asset-grid{flex:1;overflow:auto;padding:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;align-content:start}
.da-card{background:rgba(255,255,255,.02);border:1px solid var(--line);border-radius:11px;overflow:hidden;display:flex;flex-direction:column}
.da-card .da-img{aspect-ratio:3/4;background:#05080c;display:flex;align-items:center;justify-content:center;overflow:hidden}
.da-card .da-img img{width:100%;height:100%;object-fit:cover;cursor:zoom-in}
.da-card .da-img .ph{color:#33424f;font-size:12px}
.da-card .da-b{padding:10px}
.da-card .da-n{font-weight:700;color:var(--text);font-size:14px;display:flex;align-items:center;gap:6px}
.da-card .da-d{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.5;max-height:54px;overflow:hidden}
.da-card .da-acts{display:flex;gap:6px;padding:0 10px 10px;flex-wrap:wrap}
.da-card textarea{width:100%;margin-top:8px;background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:7px;color:var(--text);padding:6px;font-size:12px;min-height:54px;resize:vertical}
/* 宫格精修台 */
.gs-mask{position:fixed;inset:0;z-index:9000;background:rgba(2,5,9,.96);display:flex;flex-direction:column;padding:18px;gap:12px}
.gs-shell{flex:1;display:flex;flex-direction:column;min-height:0;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.gs-head{display:flex;align-items:center;gap:16px;padding:14px 18px;border-bottom:1px solid var(--line)}
.gs-title{font-size:17px;font-weight:700;color:var(--text);flex:1}
.gs-num-wrap{display:flex;align-items:center;gap:6px}
.gs-num{width:32px;height:30px;border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:7px;cursor:pointer}
.gs-num.active{border-color:var(--accent);color:#fff;background:var(--accent)}
.gs-x{background:none;border:none;color:var(--muted);font-size:22px;cursor:pointer}
.gs-tip{padding:8px 18px 0;font-size:12px}
.gs-grid{flex:1;overflow:auto;padding:16px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-content:start}
.gs-cell{position:relative;aspect-ratio:16/9;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:#05080c;cursor:pointer;transition:.15s}
.gs-cell:hover{border-color:var(--accent);transform:scale(1.01)}
.gs-cell img{width:100%;height:100%;object-fit:cover}
.gs-cell .ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#33424f;font-size:13px}
.gs-cell .gn{position:absolute;top:8px;left:8px;background:rgba(0,0,0,.75);color:#fff;font-size:12px;padding:3px 9px;border-radius:6px}
.gs-cell .greq{position:absolute;inset:0;background:rgba(2,5,9,.6);display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px}
.gs-cell .ghint{position:absolute;bottom:8px;right:8px;background:rgba(30,143,255,.85);color:#fff;font-size:11px;padding:3px 8px;border-radius:6px;opacity:0;transition:.15s}
.gs-cell:hover .ghint{opacity:1}
/* 候选浮层 */
.gs-cand{position:fixed;inset:0;z-index:9100;background:rgba(2,5,9,.6);display:flex;align-items:flex-end;justify-content:center;padding:24px}
.gs-cand-box{background:var(--card);border:1px solid var(--accent);border-radius:14px;padding:16px;width:min(900px,94vw);box-shadow:0 -10px 50px rgba(0,0,0,.6)}
.gs-cand-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.gs-cand-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.gs-cand-grid .cc{border:2px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer;background:#05080c;aspect-ratio:16/9;position:relative;transition:.15s}
.gs-cand-grid .cc:hover{border-color:var(--accent)}
.gs-cand-grid .cc img{width:100%;height:100%;object-fit:cover}
.gs-cand-grid .cc .pk{position:absolute;inset:0;background:linear-gradient(0deg,rgba(30,143,255,.85),transparent);display:flex;align-items:flex-end;justify-content:center;padding-bottom:10px;color:#fff;font-weight:700;opacity:0;transition:.15s}
.gs-cand-grid .cc:hover .pk{opacity:1}
.gs-cand-grid .ld{aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;color:var(--muted);border:1px dashed var(--line);border-radius:10px}

/* 线性SVG导航图标(替代emoji,高端简约) */
.rail .ico{display:flex;align-items:center;justify-content:center;height:24px}
.rail .ico svg{width:23px;height:23px;display:block}

/* 导航图标:渐变色 + 立体托盘 + 发光(高端显眼版) */
.rail .rnav .ico{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,rgba(255,255,255,.06),rgba(255,255,255,.01));border:1px solid rgba(255,255,255,.07);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 2px 7px rgba(0,0,0,.35);transition:.18s;margin-bottom:3px}
.rail .rnav .ico svg{width:25px;height:25px;filter:drop-shadow(0 1px 2px rgba(212,180,74,.5))}
.rail .rnav:hover .ico{border-color:rgba(34,211,238,.45);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.4)}
.rail .rnav.active .ico{background:linear-gradient(160deg,rgba(240,207,99,.22),rgba(47,207,148,.18));border-color:rgba(168,214,90,.6);box-shadow:0 0 16px rgba(168,214,90,.45),inset 0 1px 0 rgba(255,255,255,.14)}
.rail .rnav.active .ico svg{filter:drop-shadow(0 0 6px rgba(232,205,99,.85))}

/* 加载转圈(等待时显示) */
.spin{display:inline-block;width:13px;height:13px;border:2px solid rgba(255,255,255,.22);border-top-color:var(--accent2);border-radius:50%;animation:spinr .7s linear infinite;vertical-align:-2px;margin-right:5px}
@keyframes spinr{to{transform:rotate(360deg)}}

/* 自定义深色弹框 */
.ui-dlg-mask{position:fixed;inset:0;z-index:9500;background:rgba(3,6,10,.72);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:20px}
.ui-dlg{background:linear-gradient(160deg,#121821,#0c1015);border:1px solid var(--line);border-radius:15px;padding:22px 24px;width:min(440px,92vw);box-shadow:0 24px 80px rgba(0,0,0,.65),inset 0 1px 0 rgba(255,255,255,.05);animation:dlgIn .18s ease}
@keyframes dlgIn{from{transform:translateY(12px) scale(.96);opacity:0}to{transform:none;opacity:1}}
.ui-dlg-t{font-size:16px;font-weight:700;color:var(--text);margin-bottom:8px}
.ui-dlg-m{font-size:14px;color:var(--text);line-height:1.65}
.ui-dlg-btns{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.ui-dlg .btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
