:root{
  --bg:#0f1115; --bg2:#14171d; --card:#171b22; --card2:#1f242e;
  --line:#272e3a; --txt:#e9edf2; --dim:#8f99a9; --dim2:#5f6979;
  --pri:#ff5c2e; --pri2:#ff7a52; --pri-soft:rgba(255,92,46,.13);
  --ok:#22c55e; --warn:#f5a524; --bad:#ef4444; --blue:#5aa9ff;
  --r:16px; --sh:0 8px 28px rgba(0,0,0,.28);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--txt);
  font:15px/1.62 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  padding-bottom:calc(72px + env(safe-area-inset-bottom));
  overflow-x:hidden;
}
h1{font-size:22px;margin:0 0 6px;letter-spacing:-.4px}
h2{font-size:16px;margin:0 0 8px}
h4{font-size:13px;color:var(--dim);margin:16px 0 8px;font-weight:600}
p{margin:0 0 10px}
code{background:#0a0c10;padding:1px 5px;border-radius:5px;font-size:12px;color:#9fd0ff}
a{color:var(--pri2);text-decoration:none}
.hide{display:none!important}
.mt{margin-top:12px}
.center{text-align:center}
.tiny{color:var(--dim2);font-size:12px;line-height:1.7}
.hint{color:var(--dim);font-size:13px;margin-bottom:12px}

/* ---------------- 顶栏 ---------------- */
.topbar{
  position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;
  gap:10px;padding:10px 14px;background:rgba(15,17,21,.94);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:9px;min-width:0}
.logo{
  width:32px;height:32px;border-radius:10px;flex:0 0 auto;
  background:linear-gradient(135deg,var(--pri),#ff3d6e);display:grid;place-items:center;
  font-weight:700;font-size:15px;color:#fff;box-shadow:0 4px 14px rgba(255,92,46,.35);
}
.brand-txt{display:flex;flex-direction:column;line-height:1.18;min-width:0}
.brand-txt b{font-size:15px}
.brand-txt small{font-size:11px;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-right{display:flex;align-items:center;gap:8px}
.sel-sm{
  background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:10px;
  padding:6px 8px;font-size:12px;max-width:110px;
}
.icon-btn{
  width:34px;height:34px;border-radius:10px;border:1px solid var(--line);
  background:var(--card);color:var(--txt);font-size:15px;cursor:pointer;
}
.icon-btn:active{background:var(--card2)}

/* ---------------- 布局 ---------------- */
main{max-width:920px;margin:0 auto;padding:14px}
.view{display:none}
.view.active{display:block;animation:fade .18s ease}
@keyframes fade{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

.hero{padding:6px 2px 14px}
.hero p{color:var(--dim);font-size:13.5px;margin:0}

.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:16px;margin-bottom:12px;
}

/* ---------------- 粘贴框 ---------------- */
.paste-box{position:relative}
.paste{
  width:100%;background:#0b0d11;border:1px solid var(--line);border-radius:12px;
  color:var(--txt);padding:12px;font:14px/1.6 inherit;resize:vertical;min-height:92px;
  outline:none;
}
.paste:focus{border-color:var(--pri);box-shadow:0 0 0 3px var(--pri-soft)}
.paste-actions{display:flex;gap:8px;margin:8px 0 12px;flex-wrap:wrap}

/* ---------------- 模式 ---------------- */
.modes{display:grid;gap:8px;margin-bottom:6px}
.mode{
  position:relative;display:flex;flex-direction:column;gap:2px;padding:12px 13px;
  border:1px solid var(--line);border-radius:12px;background:var(--card2);cursor:pointer;
  transition:.15s;
}
.mode b{font-size:14.5px}
.mode span{font-size:12.5px;color:var(--dim)}
.mode.active{border-color:var(--pri);background:var(--pri-soft);box-shadow:0 0 0 1px var(--pri) inset}
.mode.active b{color:#fff}
.tag-ok{
  position:absolute;right:10px;top:10px;font-style:normal;font-size:10.5px;
  background:var(--pri);color:#fff;padding:1px 6px;border-radius:6px;
}

/* ---------------- 参数 ---------------- */
.adv{margin:12px 0;border-top:1px solid var(--line);padding-top:10px}
.adv summary{cursor:pointer;color:var(--dim);font-size:13px;list-style:none}
.adv summary::-webkit-details-marker{display:none}
.adv summary::before{content:"▸ ";color:var(--dim2)}
.adv[open] summary::before{content:"▾ "}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}

.field{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.field>span{font-size:12px;color:var(--dim)}
.input,.sel,.textarea{
  width:100%;background:#0b0d11;border:1px solid var(--line);border-radius:10px;
  color:var(--txt);padding:9px 11px;font:14px/1.5 inherit;outline:none;
}
.textarea{resize:vertical;line-height:1.7}
.input:focus,.sel:focus,.textarea:focus{border-color:var(--pri);box-shadow:0 0 0 3px var(--pri-soft)}
.sel{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--dim2) 50%),linear-gradient(135deg,var(--dim2) 50%,transparent 50%);
  background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%;background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;padding-right:28px}
.file-in{padding:7px}
.check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--dim);margin:8px 0}
.check input{width:17px;height:17px;accent-color:var(--pri)}
.title-in{font-size:16px;font-weight:600}

/* ---------------- 按钮 ---------------- */
.row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.row.between{justify-content:space-between}
.row.right{justify-content:flex-end;margin-top:12px}
.row.wrap{flex-wrap:wrap}
.grow{flex:1 1 160px;min-width:0}
.btn{
  border:1px solid var(--line);background:var(--card2);color:var(--txt);
  padding:10px 16px;border-radius:11px;font:14px/1 inherit;cursor:pointer;
  transition:.12s;white-space:nowrap;
}
.btn:active{transform:scale(.985)}
.btn:disabled{opacity:.5;cursor:default}
.btn.primary{background:linear-gradient(135deg,var(--pri),#ff3d6e);border-color:transparent;color:#fff;font-weight:600}
.btn.ghost{background:transparent}
.btn.sm{padding:7px 12px;font-size:13px;border-radius:9px}
.btn.big{width:100%;padding:15px;font-size:16px;border-radius:13px;margin-top:4px;
  box-shadow:0 8px 24px rgba(255,92,46,.26)}

/* ---------------- 进度 ---------------- */
.bar{height:6px;background:#0b0d11;border-radius:99px;overflow:hidden;margin:10px 0}
.bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--pri),#ff8a5c);
  border-radius:99px;transition:width .4s ease}
.badge{font-size:12px;background:var(--card2);border:1px solid var(--line);padding:2px 9px;border-radius:99px;color:var(--dim)}
.badge.ok{border-color:rgba(34,197,94,.5);color:#7ee2a4}
.badge.bad{border-color:rgba(239,68,68,.5);color:#ff9a9a}
.joblog{
  max-height:190px;overflow:auto;font:12px/1.7 ui-monospace,Consolas,monospace;
  background:#0a0c10;border:1px solid var(--line);border-radius:10px;padding:9px 10px;margin-top:8px;
  color:var(--dim);
}
.joblog .l{padding:1px 0;word-break:break-all}
.joblog .l.err{color:#ff9a9a}
.joblog .l.ok{color:#7ee2a4}

/* ---------------- 结果 ---------------- */
.res{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:12px}
.res-head{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;margin-bottom:10px}
.res-title{font-size:16px;font-weight:600;line-height:1.4}
.res-sub{font-size:12px;color:var(--dim2);margin-top:3px}
.video,.audio{width:100%;border-radius:12px;background:#000;display:block}
.video{max-height:64vh;object-fit:contain}
.res-tags{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.tag{font-size:12px;color:var(--blue);background:rgba(90,169,255,.1);border:1px solid rgba(90,169,255,.25);
  padding:2px 8px;border-radius:99px}
.qa{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.qa .btn{width:100%;justify-content:center;display:flex;align-items:center;gap:6px}
.qa .btn.full{grid-column:1/-1}
.tabsline{display:flex;gap:6px;overflow:auto;margin:10px 0 6px;scrollbar-width:none}
.tabsline::-webkit-scrollbar{display:none}
.tabsline .t{
  flex:0 0 auto;font-size:12.5px;padding:6px 12px;border-radius:99px;border:1px solid var(--line);
  background:var(--card2);color:var(--dim);cursor:pointer;
}
.tabsline .t.on{border-color:var(--pri);color:#fff;background:var(--pri-soft)}
.script-pre{
  white-space:pre-wrap;font:14px/1.85 inherit;background:#0b0d11;border:1px solid var(--line);
  border-radius:10px;padding:12px;max-height:320px;overflow:auto;
}

/* ---------------- 稿子行编辑 ---------------- */
.linelist{display:grid;gap:7px;margin-top:10px}
.line{display:flex;gap:7px;align-items:flex-start;background:var(--card2);border:1px solid var(--line);
  border-radius:11px;padding:8px 9px}
.line .idx{flex:0 0 auto;font-size:11px;color:var(--dim2);padding-top:6px;min-width:14px}
.line .idx .note{display:block;font-style:normal;font-size:10px;color:var(--pri2);margin-top:2px}
.line .txt{
  flex:1 1 auto;min-width:0;background:transparent;border:0;color:var(--txt);
  font:14px/1.6 inherit;resize:none;outline:none;padding:2px 0;overflow:hidden;
}
.line .sp{flex:0 0 auto;background:#0b0d11;border:1px solid var(--line);border-radius:7px;
  color:var(--dim);font-size:11.5px;padding:4px 5px}
.line .del{flex:0 0 auto;background:transparent;border:0;color:var(--dim2);font-size:15px;cursor:pointer;padding:2px 4px}

.checkbox{background:#0b0d11;border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-top:10px;font-size:13px}
.checkbox.bad{border-color:rgba(239,68,68,.45);background:rgba(239,68,68,.06)}
.checkbox ul{margin:8px 0 0;padding-left:18px}
.checkbox li{margin:3px 0;color:#ffb3b3;font-size:12.5px}
.checkbox li.w{color:#f0c674}

/* ---------------- 作品库 ---------------- */
.worklist{display:grid;gap:8px;margin-top:10px}
.work{
  display:flex;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);
  border-radius:12px;background:var(--card2);cursor:pointer;
}
.work:active{background:#232a35}
.work .thumb{
  width:52px;height:70px;border-radius:8px;background:#0b0d11;flex:0 0 auto;overflow:hidden;
  display:grid;place-items:center;font-size:18px;color:var(--dim2);
}
.work .thumb img{width:100%;height:100%;object-fit:cover}
.work .meta{min-width:0;flex:1}
.work .meta b{display:block;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.work .meta small{color:var(--dim2);font-size:11.5px}
.empty{color:var(--dim2);font-size:13px;text-align:center;padding:22px 0}

/* ---------------- 我的 ---------------- */
.avatar-row{display:flex;gap:12px;align-items:center}
.avatar-box{
  width:82px;height:108px;border-radius:12px;background:#0b0d11;border:1px dashed var(--line);
  display:grid;place-items:center;font-size:11.5px;color:var(--dim2);overflow:hidden;flex:0 0 auto;
}
.avatar-box img{width:100%;height:100%;object-fit:cover}
.caps{display:grid;grid-template-columns:1fr 1fr;gap:7px;font-size:12.5px}
.cap{display:flex;align-items:center;gap:6px;padding:7px 9px;border-radius:9px;background:var(--card2);
  border:1px solid var(--line);color:var(--dim)}
.cap i{font-style:normal;width:7px;height:7px;border-radius:50%;background:var(--bad);flex:0 0 auto}
.cap.on i{background:var(--ok)}

/* ---------------- 底部导航 ---------------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;
  background:rgba(15,17,21,.96);backdrop-filter:blur(16px);border-top:1px solid var(--line);
  padding:6px 4px calc(6px + env(safe-area-inset-bottom));
}
.tab{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;
  background:transparent;border:0;color:var(--dim2);font-size:10.5px;padding:5px 0;cursor:pointer;
}
.tab i{font-style:normal;font-size:17px;line-height:1.2}
.tab.active{color:var(--pri2)}

/* ---------------- toast ---------------- */
.toast{
  position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translate(-50%,14px);
  background:#20262f;color:#fff;border:1px solid var(--line);
  padding:10px 18px;border-radius:11px;font-size:13.5px;opacity:0;pointer-events:none;
  transition:.22s;z-index:99;max-width:86vw;text-align:center;box-shadow:var(--sh);
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.err{background:#3a1d20;border-color:rgba(239,68,68,.45)}

@media (min-width:760px){
  .modes{grid-template-columns:repeat(3,1fr)}
  .mode{flex-direction:column}
  .qa{grid-template-columns:repeat(4,1fr)}
  body{padding-bottom:24px}
  .tabbar{position:sticky;top:0;bottom:auto;order:-1;background:rgba(15,17,21,.94);
    border-top:0;border-bottom:1px solid var(--line);padding:6px 14px;max-width:920px;margin:0 auto;
    border-radius:0}
  main{padding:16px}
  .video{max-height:70vh}
}

/* 成本预估条 */
.costbox{margin:10px 0 6px;padding:10px 12px;border-radius:10px;background:var(--card2);
  border:1px solid var(--line);font-size:12.5px;line-height:1.9;color:var(--dim)}
.costbox b{color:#7ee2a4;font-size:14px}
.costbox .warn{color:#f0c674}
.avatar-box.video{font-size:11px;color:var(--dim2)}

/* 画面来源选择 */
.srcbox{margin:8px 0 4px;padding:10px 12px;border-radius:10px;background:var(--card2);
  border:1px solid var(--line)}
.srcbox .tiny{margin:6px 0 0}
.grow2{flex:1 1 240px}

/* ---------- 形象与场景 ---------- */
.look-result {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  margin-top: 14px;
  padding: 12px;
  border-radius: 14px;
  background: rgba(255, 255, 255, .04);
  border: 1px solid rgba(255, 255, 255, .08);
}
.look-result img {
  width: 132px;
  border-radius: 10px;
  display: block;
  flex: none;
}
#lookBeauty { width: 100%; accent-color: #ff5a36; }
#lookBeautyVal { color: #ff8a5c; font-weight: 700; }
.row.gap { gap: 10px; }
.look-result.hide { display: none; }
