/* 聚客工作台 /workbench 深色皮肤 v1.14.0
   只在云端构建产物里加载，顺序在 8777 内联 <style> 之后；
   源文件 console/static/index.html 一行都不改，界面结构/流程与本地完全一致。 */
:root{
  --bg:#0b0e12;--panel:#141920;--ink:#f1f3f5;--muted:#98a4b3;--line:#2a323d;
  --brand:#d6ff68;--brand-d:#b9e055;--chip:#20291c;
  --done:#8edfbb;--run:#d6ff68;--human:#e8c26a;--fail:#ff9696;--pend:#3a4451;
  color-scheme:dark;
}

/* 全屏外壳：顶栏 + 状态条 + 铺满剩余视口的 8777 工作台 */
html,body{height:100%}
body{display:flex;flex-direction:column;overflow:hidden;background:#0b0e12;color:#f1f3f5}
.wb-top{height:60px;flex:0 0 60px;display:flex;align-items:center;gap:22px;padding:0 24px;border-bottom:1px solid #2a323d;background:#0b0e12}
.wb-top .wb-brand{font-weight:800;font-size:19px;white-space:nowrap;color:#f1f3f5}
.wb-top .wb-brand span{color:#d6ff68;margin-left:3px}
.wb-top nav{display:flex;gap:20px;flex:1;font-size:14px;color:#98a4b3;min-width:0}
.wb-top nav a:hover{color:#d6ff68}
.wb-status{font-size:12px;color:#98a4b3;display:flex;align-items:center;gap:8px;white-space:nowrap}
.wb-status .dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:#e8c26a}
.wb-status.ok .dot{background:#8edfbb}
.wb-status.bad .dot{background:#ff9696}
.wb-banner{flex:0 0 auto;margin:0;padding:9px 24px;font-size:12px;background:#2a2519;border-bottom:1px solid #ae8d4a;color:#f1f3f5}
.wb-banner b{color:#d6ff68}
.wrap{flex:1;min-height:0;width:100%;display:flex;overflow:hidden}
.side{width:200px;flex:0 0 200px;height:auto;position:static;overflow:auto;background:#141920;border-right:1px solid #2a323d;padding:18px 12px}
.main{flex:1;min-width:0;height:100%;overflow:auto;background:#0b0e12;padding:18px 22px}

/* 按钮与状态色 */
.btn{color:#151b13}
.btn.ghost{background:#171d24;color:#f1f3f5;border:1px solid #2a323d}
.btn:hover{background:#b9e055;color:#151b13}
.btn.ghost:hover{background:#202a33;color:#d6ff68;border-color:#d6ff68}
th{background:#141920;color:#98a4b3}
tr:hover td{background:#1b222b}
.pill.done,.badge-ok,.setstatus.ok{background:#16332a}
.pill.need_human,.badge-warn{background:#332b1c}
.pill.failed,.setstatus.err{background:#331d20}
.pill.pending,.bar{background:#29323c}
.fnode .ball{border-color:#0b0e12;box-shadow:0 0 0 1px #2a323d}
.drawer{background:#141920;box-shadow:-4px 0 24px rgba(0,0,0,.5)}
.mask{background:rgba(0,0,0,.55)}
.logbox{background:#070b10}

/* 所有表单控件统一深色（8777 里部分规则写死 #fff） */
input[type=text],input[type=password],input[type=number],input[type=file],select,textarea{
  background:#0e1319;color:#f1f3f5;border-color:#2a323d;
}
.frm input[type=text],.frm input[type=password],.frm input[type=number],.frm select,.frm textarea,
.fileadd input,.drow input[type=number],.drow select,.swl-edit textarea,
.nodecap input[type=number],.nodecap textarea,.copyedit{
  background:#0e1319;color:#f1f3f5;border-color:#2a323d;
}
.nodecap .siminfo.high{background:#331d20;color:#ff9696}

/* tab / 提示条 */
.ktab:hover{background:#1b222b}
.kpane .tip{background:#15232b;border:1px solid #2a3a30;color:#a9c9ff}
.setstatus.info{background:#20291c;color:#d6ff68}

/* 列表与目录面板 */
.swl-list,.flist,.dirpanel,.result-list{background:#0e1319}
.swl-item:hover,.fsitem:hover{background:#1b222b}
.swl-btns,.swl-count{background:#141920}
.flist.dragover,.dirpanel .ditem:hover{background:#1b2a22}
.dirpanel .dhead,.fscur,.fspickbar{background:#171d24}
.dirpanel .ditem{border-bottom:1px dashed #2a323d}

/* 本地文件选择弹窗 */
.fsmask{background:rgba(0,0,0,.6)}
.fsmodal{background:#141920;box-shadow:0 12px 40px rgba(0,0,0,.6)}
.fstree{background:#111820}
.fstree .tnode{color:#c9d4e2}
.fstree .tnode:hover{background:#1b222b}
.fstree .tnode.cur{background:#25331f}
.fstree .tcaret{color:#98a4b3}
.fsitem.sel{background:#25331f}
.fscard{background:#141920}
.fscard .th{background:#070b10 center/cover no-repeat;color:#5b6b85}
.fscard .fscb{background:#141920}
.fsx:hover{color:#ff9696}

/* 文案库 / 成片库卡片 */
.libcard,.libfile{background:#141920}
.libcard .tag{background:#1b2630;color:#a9c9ff}
.libcard .tag.hot{background:#331d20;color:#ff9696}
.libcard .tag.use{background:#16332a;color:#8edfbb}
.libcard .tag.done{background:#16303a;color:#8ec9ff}
.copybody,.copyedit{background:#0e1319}

/* 云端一键成片面板（唯一与本地不同的 tab） */
.wb-cloud .setbox{border-color:#2a323d}
.wb-cloud textarea{min-height:170px}
.wb-cloud .decision{border:1px solid #ae8d4a;background:#2a2519;padding:12px;border-radius:8px;margin-top:10px}

/* ==== 云端任务卡片（2026-11-10 老大反馈「杂乱」后重做）====
   旧版直接用 .job + 裸 <small>，状态、阶段、时间、百分比、错误挤成四行黑字，
   现在改成「标题+状态徽章 / 阶段·时间 / 进度条 / 百分比+操作」四段式卡片，
   主操作收敛成右上角一个醒目的「停止任务」，不再是一行小灰字。 */
.wb-cloud-hd{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.wb-cloud-hd h3{margin:0;font-size:15px;color:#eef2f7}
.wb-cloud-sum{font-size:12px;color:#8b97a7;margin-left:auto;white-space:nowrap}
#wb-jobs{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.job-card{background:#141920;border:1px solid #232a34;border-radius:12px;padding:12px 14px}
.job-card.is-live{border-color:#3d4a2b}
.job-hd{display:flex;align-items:center;gap:10px}
.job-title{flex:1;min-width:0;font-size:14px;font-weight:600;color:#e8edf4;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.job-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:2px 9px;
  border-radius:999px;background:#1b222c;color:#9aa7ba;white-space:nowrap}
.job-pill i{display:block;width:6px;height:6px;border-radius:50%;background:currentColor}
.job-pill.live{background:rgba(214,255,104,.12);color:#d6ff68}
.job-pill.ok{background:rgba(90,214,149,.12);color:#6fd6a0}
.job-pill.info{background:rgba(120,170,255,.12);color:#8fb6ff}
.job-pill.warn{background:rgba(232,194,106,.14);color:#e8c26a}
.job-pill.err{background:rgba(255,120,120,.12);color:#ff9696}
.job-meta{margin-top:6px;font-size:12px;color:#8b97a7}
.job-bar{height:6px;margin:10px 0 8px;border-radius:999px;background:#232a34;overflow:hidden}
.job-bar i{display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,#6f8f2a,#d6ff68);transition:width .4s ease}
.job-bar.is-done i{background:linear-gradient(90deg,#2f8f63,#6fd6a0)}
.job-bar.is-fail i{background:linear-gradient(90deg,#8f3b3b,#ff9696)}
.job-ft{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.job-pct{min-width:42px;font-size:13px;font-weight:700;color:#d6ff68}
.job-err{max-width:46%;font-size:12px;color:#ff9696;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.job-ok{font-size:12px;color:#8edfbb}
.job-actions{margin-left:auto;display:flex;gap:8px}
.btn.danger{background:#3a1f22;color:#ffb3b3;border:1px solid #5b2b2f}
.btn.danger:hover{background:#4a262a;color:#ffc9c9}

/* ==== 品牌确认卡片（替掉浏览器原生 confirm / alert）==== */
.jsq-mask{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;
  background:rgba(6,9,13,.62);animation:jsq-fade .14s ease}
.jsq-dialog{width:min(520px,calc(100vw - 48px));padding:22px 22px 18px;border-radius:16px;
  background:#151a21;border:1px solid #2a323d;box-shadow:0 24px 64px rgba(0,0,0,.55);
  animation:jsq-pop .16s ease}
.jsq-dialog-title{margin-bottom:10px;font-size:16px;font-weight:700;color:#eef2f7}
.jsq-dialog-body{max-height:46vh;overflow:auto;font-size:13.5px;line-height:1.75;
  color:#aab6c6;white-space:pre-wrap;word-break:break-word}
.jsq-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.jsq-btn{padding:9px 18px;border:none;border-radius:10px;font-family:inherit;
  font-size:13px;font-weight:600;cursor:pointer}
.jsq-btn.ghost{background:#1e242c;color:#aab6c6;border:1px solid #2c3540}
.jsq-btn.ghost:hover{background:#252d37;color:#dfe6ef}
.jsq-btn.primary{background:#d6ff68;color:#12160f}
.jsq-btn.primary:hover{background:#e4ff8c}
@keyframes jsq-fade{from{opacity:0}to{opacity:1}}
@keyframes jsq-pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}

/* 需求5（2026-11-07 老大拍板）：一键成片界面与本地 8777 完全一致。
   旧规则「#kp-oneclick > :not(.wb-cloud-host){display:none}」（只留云端面板、藏掉本地全部
   配置区）已废除——云端面板（wb-cloud-host）现在只是追加在 pane 末尾的两块信息，其余
   子块照常显示，与 8777 同构。 */

/* 顶部「有新版本」按钮：只在执行器发现云端新版本时出现，品牌绿实心，一眼能看到。
   平时 display:none，渲染逻辑在 workbench-bridge.js 的 renderUpdate（无版本不放空按钮）。 */
.wb-update{background:#d6ff68;color:#12161c;border-color:#d6ff68;font-weight:600}
.wb-update:hover{filter:brightness(1.06)}
.wb-update:disabled{opacity:.72;cursor:default}
