:root{
  --bg:#0e1013; --card:#171a1f; --card2:#1e2229; --line:#2a2f38;
  --fg:#e9eaec; --dim:#8b93a1; --gold:#d9a441; --gold2:#f0c46a;
  --ok:#4ec98a; --err:#e5655f;
  --safe-t:env(safe-area-inset-top,0px); --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);
  font:15px/1.55 -apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans CJK SC","Microsoft YaHei",sans-serif;}
body{padding:0 14px calc(28px + var(--safe-b));max-width:720px;margin:0 auto;overflow-x:hidden}

/* 顶栏 */
.top{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:calc(14px + var(--safe-t)) 2px 14px;position:sticky;top:0;z-index:20;
  background:linear-gradient(180deg,var(--bg) 72%,transparent);}
.brand{display:flex;align-items:center;gap:10px}
.logo{width:36px;height:36px;flex:none;display:grid;place-items:center;border-radius:11px;
  background:linear-gradient(150deg,#2a2114,#1a1d23);border:1px solid #3a3122;color:var(--gold);font-size:18px}
.top h1{margin:0;font-size:16px;letter-spacing:.4px}
.sub{margin:1px 0 0;font-size:11px;color:var(--dim)}
.stat{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--dim);
  background:var(--card);border:1px solid var(--line);padding:6px 10px;border-radius:20px;white-space:nowrap}
.dot{width:7px;height:7px;border-radius:50%;background:#666;flex:none}
.stat.on .dot{background:var(--ok);box-shadow:0 0 8px var(--ok)}
.stat.off .dot{background:var(--err);box-shadow:0 0 8px var(--err)}

/* 卡片 */
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:12px}
.card-hd{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:10px}
.card-hd.mt{margin-top:16px}
.card-hd h2{margin:0;font-size:14px;font-weight:600}
.hint{font-size:11.5px;color:var(--dim)}

/* 选图 */
.drop{border:1.5px dashed #39404c;border-radius:13px;background:#12151a;transition:.15s;cursor:pointer}
.drop:active{border-color:var(--gold);background:#1a1712}
.drop-in{display:flex;flex-direction:column;align-items:center;gap:3px;padding:24px 10px}
.drop-in .big{font-size:26px;color:var(--gold);line-height:1}
.drop-in b{font-size:14px;font-weight:600}
.drop-in small{font-size:11px;color:var(--dim)}
.thumbs{display:flex;gap:8px;overflow-x:auto;padding-top:10px;scrollbar-width:none}
.thumbs::-webkit-scrollbar{display:none}
.thumbs:empty{display:none}
.thumb{position:relative;flex:none;width:78px;height:112px;border-radius:10px;overflow:hidden;
  border:1px solid var(--line);background:#000}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb .x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;
  background:rgba(0,0,0,.72);color:#fff;font-size:13px;display:grid;place-items:center;border:0}
.ref-pick{width:100%;padding:12px;border:1px dashed #46505e;border-radius:11px;background:#12151a;color:#d8bd7c;
  font-family:inherit;font-size:13px;font-weight:600;cursor:pointer}
.ref-pick:active{background:#1b1b19;border-color:var(--gold)}
.ref-hint{margin:6px 2px 0}
.ref-thumbs{padding-top:8px;display:flex;flex-wrap:wrap;gap:10px}
/* 参考图格子改成竖排：上面是图，下面是「这张图里是谁」的输入框。
   那个输入框是多人同框的关键 —— 用户填了它，服务端才会拼出「图1中X；图2中Y」的点名描述。 */
.ref-thumbs .ref-thumb{width:104px;height:auto;display:flex;flex-direction:column;gap:5px;position:relative}
.ref-thumbs .ref-thumb img{width:104px;height:104px;object-fit:cover;border-radius:9px;display:block}
/* 编号角标：模型的多图指代就按这个序号（图1/图2/图3），必须在界面上看得见 */
.ref-no{position:absolute;left:0;top:0;background:rgba(0,0,0,.78);color:#fff;font-size:11px;line-height:1.6;
  padding:0 6px;border-radius:9px 0 9px 0;pointer-events:none;z-index:1}
.ref-who{width:100%;padding:5px 6px;border:1px solid var(--line);border-radius:7px;background:#12151a;color:#e6e9ee;
  font-family:inherit;font-size:11.5px;box-sizing:border-box}
.ref-who::placeholder{color:#6b7280}
.ref-who:focus{outline:none;border-color:var(--gold)}
.ref-crop{width:100%;padding:3px 0;border:1px solid var(--line);border-radius:7px;background:#181c22;color:#c8cdd6;
  font-family:inherit;font-size:11.5px;cursor:pointer}
.ref-crop:active{background:#22262e;border-color:var(--gold)}

/* 裁剪弹层：从合照里裁单人、裁掉角上的水印 */
.cropper{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.86);display:grid;place-items:center;padding:14px}
.crop-inner{width:100%;max-width:520px;display:flex;flex-direction:column;gap:10px}
.crop-hint{color:#d8bd7c;font-size:13px;text-align:center}
.crop-stage{position:relative;line-height:0;touch-action:none;user-select:none}
.crop-stage img{width:100%;height:auto;max-height:64vh;object-fit:contain;border-radius:10px}
.crop-box{position:absolute;border:2px solid var(--gold);background:rgba(216,189,124,.18);
  box-shadow:0 0 0 9999px rgba(0,0,0,.5);pointer-events:none}
.crop-act{display:flex;gap:10px;justify-content:center}
.crop-act .mini{padding:9px 18px}
.crop-ok{background:var(--gold);color:#1a1a1a;border-color:var(--gold);font-weight:600}
.crop-ok:disabled{opacity:.4}

/* chips */
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chips.sm{margin-bottom:8px}
.chip{background:var(--card2);border:1px solid var(--line);color:#c8cdd6;font-size:12.5px;
  padding:8px 12px;border-radius:20px;font-family:inherit;transition:.12s}
.chip.on{background:linear-gradient(150deg,#3a2d15,#2a2417);border-color:var(--gold);color:var(--gold2);font-weight:600}
.chip small{display:block;font-size:10px;color:var(--dim);font-weight:400;margin-top:1px}
.chip.on small{color:#b99a5e}
.row{margin-top:2px}
.count-control{display:flex;align-items:center;gap:9px;min-height:39px;padding:4px 10px;
  flex-wrap:wrap;border:1px solid var(--line);border-radius:12px;background:#12151a;color:#c8cdd6;font-size:12px}
.count-control>label{white-space:nowrap}
.count-input-row{display:flex;align-items:center;gap:7px}
.count-input-row input{width:58px;height:30px;border:1px solid #665025;border-radius:8px;background:#211d15;
  color:var(--gold2);font-family:inherit;font-size:14px;font-weight:600;text-align:center;padding:3px}
.count-input-row input:focus{outline:none;border-color:var(--gold)}
.count-input-row span{color:var(--dim);white-space:nowrap;font-size:10.5px}
.count-input-row b{color:var(--gold2);font-weight:600}
.count-note{flex-basis:100%;padding:0 2px 3px;color:var(--dim);font-size:10px}
.quality-control{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 8px;color:#c8cdd6;font-size:12px}
.quality-control>label{white-space:nowrap}
.quality-control .chips{margin:0}
.quality-control .chip{min-width:76px}
.quality-control>small{flex-basis:100%;margin-left:2px;color:var(--dim);font-size:10px}

.extra{width:100%;margin-top:12px;background:#12151a;border:1px solid var(--line);border-radius:11px;
  color:var(--fg);font:14px/1.5 inherit;padding:11px 12px;font-family:inherit}
.extra:focus{outline:none;border-color:#3f4756}
.field-label{display:flex;justify-content:space-between;gap:8px;margin:15px 2px 6px;font-size:12px;font-weight:600;color:#c8cdd6}
.field-label span{font-size:10.5px;font-weight:400;color:var(--dim)}
.world-setting{display:block;width:100%;min-height:94px;resize:vertical;background:#12151a;border:1px solid var(--line);
  border-radius:11px;color:var(--fg);font-family:inherit;font-size:13px;line-height:1.65;padding:10px 12px}
.world-setting:focus{outline:none;border-color:#3f4756}
.world-setting::placeholder{color:#687180}

/* 按钮 */
.go{width:100%;border:0;border-radius:15px;padding:16px;margin:4px 0 0;font-family:inherit;
  font-size:16px;font-weight:700;letter-spacing:.5px;color:#1a1408;
  background:linear-gradient(135deg,var(--gold2),var(--gold));transition:.15s;
  box-shadow:0 6px 20px -8px rgba(217,164,65,.6)}
.go:active{transform:scale(.985)}
.go:disabled{background:#2a2f38;color:#666e7a;box-shadow:none;transform:none}
.tip{margin:9px 2px 14px;font-size:11.5px;color:var(--dim);text-align:center;min-height:16px}

/* 进度 */
.prog-hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px;font-size:13.5px}
.prog-hd span{color:var(--gold);font-variant-numeric:tabular-nums;font-weight:600}
.prog-right{display:flex;align-items:center;gap:8px}
.priority{padding:5px 9px;font-size:11px;color:var(--gold2);border-color:#665025}
.priority:disabled{opacity:.65}
.bar{height:6px;background:#232830;border-radius:6px;overflow:hidden}
.bar i{display:block;height:100%;width:0;border-radius:6px;
  background:linear-gradient(90deg,var(--gold),var(--gold2));transition:width .5s ease}
.prog .hint{margin:9px 0 0;text-align:left}

/* 结果 */
.res{margin-bottom:12px;animation:in .35s ease}
@keyframes in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.res-hd{padding:0 2px 7px;font-size:13px}
.res-hd b{color:var(--gold2)}
.res-hd .meta{font-size:11px;color:var(--dim);margin-top:2px}
.res img{width:100%;border-radius:14px;display:block;border:1px solid var(--line);background:#000}
.res .acts{display:flex;gap:8px;margin-top:8px}
.res .acts a,.res .acts button{flex:1;text-align:center;text-decoration:none;font-size:12.5px;
  padding:10px;border-radius:11px;background:var(--card);border:1px solid var(--line);color:#c8cdd6;font-family:inherit}
.res .acts a:active,.res .acts button:active{background:var(--card2)}
.res .src{font-size:11.5px;color:var(--dim);background:var(--card);border:1px solid var(--line);
  border-radius:11px;padding:9px 11px;margin-top:8px;max-height:96px;overflow:auto;white-space:pre-wrap;line-height:1.5}
.res .src.open{max-height:none}
.srctag{display:block;color:#8a93a3;font-size:10.5px;font-weight:400;margin-bottom:4px}
.err-box{background:#241618;border-color:#4a2a2a;color:#e5a09a;font-size:12.5px;padding:11px 13px;border-radius:12px}
.install{text-align:center;font-size:11px;color:#5c6472;margin:18px 0 0;line-height:1.7}

/* 历史作品 */
.top-r{display:flex;align-items:center;gap:8px}
.histbtn{border:1px solid var(--line);background:#141821;color:#c9d1dc;font-size:16px;
  width:34px;height:34px;border-radius:10px;cursor:pointer;line-height:1;padding:0}
.histbtn:active{transform:scale(.95)}
.hist{margin-top:14px}
.hist .card-hd{align-items:center}
.hist .card-hd h2{margin:0}
.hist-list{display:flex;flex-direction:column;gap:10px;margin-top:10px;max-height:60vh;overflow-y:auto}
.hist-item{display:flex;gap:11px;align-items:center;background:#12151a;border:1px solid var(--line);
  border-radius:12px;padding:9px;cursor:pointer}
.hist-item:active{background:#171b23}
.hist-item img{width:62px;height:62px;object-fit:cover;border-radius:9px;flex:none;background:#0e1013}
.hist-ph{width:62px;height:62px;border-radius:9px;flex:none;background:#191d25}
.hist-info{min-width:0;display:flex;flex-direction:column;gap:3px}
.hist-info b{font-size:14px;color:#e8edf5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hist-info span{font-size:11.5px;color:#7c8695}
.hist-st{font-size:11px;font-style:normal;color:#8b93a3}
.hist-st.done{color:#7bc47f}
.hist-st.error{color:#e5a09a}

/* 连环画每格的操作条 */
.panel-act{display:flex;gap:8px;margin-top:8px;padding:0 2px}
.panel-act .mini{flex:none}

/* 角色定妆照：一致性的锚点，横排缩略图 */
.cast{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start;margin-top:12px}
.cast-tag{font-size:13px;color:#8b93a3;border:1px solid var(--line);border-radius:8px;padding:3px 9px;line-height:20px}
.cast-item{margin:0;width:78px;text-align:center}
.cast-item img{width:78px;height:78px;object-fit:cover;border-radius:10px;border:1px solid var(--line);display:block;cursor:zoom-in}
.cast-item figcaption{font-size:12px;color:#9aa3b2;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* hidden 属性必须能压过 .chips / .tabs 自己声明的 display */
[hidden]{display:none!important}

/* 输入模式切换 */
.tabs{display:flex;gap:6px;background:#12151a;border:1px solid var(--line);border-radius:12px;padding:4px;margin-bottom:14px}
.tab{flex:1;border:0;background:transparent;color:var(--dim);font-family:inherit;font-size:13.5px;
  padding:9px 0;border-radius:9px;transition:.15s;font-weight:600}
.tab.on{background:linear-gradient(150deg,#3a2d15,#2a2417);color:var(--gold2);box-shadow:0 2px 10px -4px rgba(217,164,65,.5)}
.tab:active{transform:scale(.98)}

/* 粘贴文字 */
#novelText{width:100%;background:#12151a;border:1px solid var(--line);border-radius:12px;color:var(--fg);
  font:15px/1.75 inherit;font-family:inherit;padding:12px;resize:vertical;min-height:150px;box-sizing:border-box}
#novelText:focus{outline:none;border-color:#3f4756}
#novelText::placeholder{color:#4e5866;line-height:1.9}
.txbar{display:flex;align-items:center;justify-content:space-between;margin-top:9px;gap:10px}
.mini{background:var(--card2);border:1px solid var(--line);color:#b9c0cb;font-family:inherit;
  font-size:12.5px;padding:7px 14px;border-radius:9px}
.mini:active{background:#2b313b}

/* 连环画 */
#modeHint{margin:10px 0 0;font-size:11px;color:#5c6472;line-height:1.7}
.sb-head{padding:0 2px 12px}
.sb-head b{color:var(--gold2);font-size:16px}
.sb-head .meta{font-size:11.5px;color:var(--dim);margin-top:4px}
.panel{margin-bottom:14px;animation:in .35s ease}
.panel-hd{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;color:#c3c9d3;
  padding:0 2px 7px;line-height:1.5}
.panel-hd .no{flex:0 0 22px;height:22px;border-radius:50%;
  background:linear-gradient(150deg,#3a2d15,#2a2417);border:1px solid var(--gold);color:var(--gold2);
  font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center}
.panel img{width:100%;border-radius:14px;display:block;border:1px solid var(--line);background:#000}
.panel-meta{font-size:10.5px;color:#5c6472;margin-top:6px;padding:0 2px}

/* 提示词库（图生视频卡片） */
.pm-box{margin-top:10px}
.pm-row{display:flex;gap:7px;align-items:flex-start;flex-wrap:wrap;margin-bottom:6px}
.pm-tag{flex:0 0 auto;font-size:11px;color:var(--dim);padding:5px 0;letter-spacing:.5px}
.pm-chip{display:inline-flex;align-items:center;gap:5px;max-width:100%;
  background:#20242b;border:1px solid #2f3641;border-radius:15px;
  padding:7px 12px;font-size:13px;color:#cfd4dc;cursor:pointer;line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background .15s,border-color .15s}
.pm-chip:active{background:#2b313b;border-color:var(--gold)}
.pm-chip .pm-x{flex:0 0 auto;color:#7d848f;font-weight:400;font-size:16px;padding:0 3px;border-radius:50%}
.pm-chip .pm-x:active{color:#e06c6c}

/* 大图覆盖 */
.viewer{position:fixed;inset:0;background:rgba(5,6,8,.96);z-index:99;display:none;
  align-items:center;justify-content:center;padding:12px;padding-top:calc(12px + var(--safe-t))}
.viewer.on{display:flex}
.viewer img{max-width:100%;max-height:88vh;border-radius:10px}
.viewer .close{position:absolute;top:calc(10px + var(--safe-t));right:12px;width:38px;height:38px;
  border-radius:50%;background:#252a33;border:1px solid var(--line);color:#fff;font-size:18px}

/* ── 「排队中」区块（生成页历史作品里，2026-10-03）──────── */
.q-block { margin: 10px 0 14px; background: #171a20; border-radius: 12px; padding: 12px 12px 6px; }
.q-title { font-size: 13.5px; color: #e9edf3; font-weight: 600; margin-bottom: 10px; }
.q-tip { float: right; font-weight: 400; font-size: 12px; color: #7b828e; }
.q-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid #20242b; }
.q-row:first-of-type { border-top: none; }
.q-th { width: 42px; height: 56px; object-fit: cover; border-radius: 6px; background: #22262e; flex: 0 0 auto; }
.q-mid { flex: 1; min-width: 0; }
.q-idx { font-size: 12.5px; color: #7aa8ff; }
.q-cap { font-size: 13px; color: #b9c0cb; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.q-top { flex: 0 0 auto; height: 30px; padding: 0 14px; border: none; border-radius: 8px;
  background: #262b34; color: #cfd5de; font-size: 13px; }
.q-top:active { opacity: .8; }
