:root{
  --bg:#F5F4F0;
  --surface:#FFFFFF;
  --surface-2:#FAF9F6;
  --ink:#1C1F1D;
  --ink-2:#4A504C;
  --muted:#7C827D;
  --line:#E5E3DC;
  --line-2:#EFEDE7;
  --primary:#2E5C4F;
  --primary-dark:#22453B;
  --primary-tint:#EAF1EE;
  --amber:#A8701E;
  --amber-tint:#FBF2E2;
  --red:#B1463C;
  --red-tint:#FBECEA;
  --blue:#2F5C86;
  --blue-tint:#EAF0F7;
  --radius:10px;
  --shadow-sm:0 1px 2px rgba(28,31,29,.05);
  --shadow-md:0 6px 24px rgba(28,31,29,.10);
  --shadow-lg:-14px 0 44px rgba(28,31,29,.14);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--ink);font-size:14px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#D7D4CB;border-radius:8px;border:3px solid transparent;background-clip:content-box}

/* ---------- layout ---------- */
.app{display:grid;grid-template-columns:236px 1fr;height:100vh;overflow:hidden}
.sidebar{
  background:var(--surface);border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:18px 14px 14px;
}
.brand{display:flex;gap:10px;align-items:center;padding:2px 6px 18px}
.brand-mark{
  width:34px;height:34px;border-radius:9px;background:var(--primary);color:#fff;
  display:grid;place-items:center;flex:0 0 auto;
}
.brand-text{display:flex;flex-direction:column;line-height:1.25}
.brand-text strong{font-size:13.5px;letter-spacing:.1px;white-space:nowrap}
.brand-text span{font-size:11px;color:var(--muted)}
.nav{display:flex;flex-direction:column;gap:2px;flex:1}
.nav-label{font-size:11px;color:var(--muted);letter-spacing:.6px;padding:14px 8px 6px}
.nav-item{
  display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;
  font-size:13.5px;color:var(--ink-2);text-align:left;width:100%;position:relative;
  transition:background .15s,color .15s;
}
.nav-item:hover{background:var(--surface-2);color:var(--ink)}
.nav-item.active{background:var(--primary-tint);color:var(--primary-dark);font-weight:500}
.nav-ico{width:16px;text-align:center;font-size:12px;opacity:.75}
.nav-dot{display:none;margin-left:auto;font-style:normal;font-size:11px;background:var(--red);color:#fff;border-radius:20px;padding:0 6px;min-width:18px;text-align:center;line-height:17px}
.nav-dot.on{display:block}
.side-foot{border-top:1px solid var(--line-2);padding-top:12px;display:flex;flex-direction:column;gap:8px}
.side-note{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);padding:0 2px}
.side-note small{margin-left:auto;color:#A8AEA9}
.dot-live{width:6px;height:6px;border-radius:50%;background:#4C9A73;box-shadow:0 0 0 3px rgba(76,154,115,.15)}
.reset-link{font-size:11px;color:#A8AEA9;text-align:center;padding:2px 0}
.reset-link:hover{color:var(--red)}

.main{display:flex;flex-direction:column;min-width:0;overflow:hidden}
.topbar{
  height:68px;flex:0 0 68px;display:flex;align-items:center;gap:16px;
  padding:0 26px;background:var(--surface);border-bottom:1px solid var(--line);
}
.tb-title h1{font-size:16px;font-weight:500;letter-spacing:.2px}
.tb-title p{font-size:11.5px;color:var(--muted)}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.search{display:flex;align-items:center;gap:7px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:8px;padding:0 10px;height:34px;color:var(--muted);width:238px}
.search input{border:0;background:none;outline:none;width:100%;font-size:13px}
.search span{font-size:14px}
.role-switch{display:flex;align-items:center;gap:6px;height:34px;border:1px solid var(--line);
  border-radius:8px;padding:0 4px 0 10px;background:var(--surface)}
.role-label{font-size:11px;color:var(--muted)}
.role-switch select{border:0;background:none;outline:none;font-size:13px;padding:0 4px;cursor:pointer}
.btn{
  height:34px;padding:0 14px;border-radius:8px;font-size:13px;display:inline-flex;
  align-items:center;justify-content:center;gap:6px;transition:.15s;white-space:nowrap;
  border:1px solid transparent;
}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-dark)}
.btn-ghost{background:var(--surface);border-color:var(--line);color:var(--ink-2)}
.btn-ghost:hover{border-color:#CFCBC0;color:var(--ink);background:var(--surface-2)}
.btn-danger{background:var(--surface);border-color:#E7C6C1;color:var(--red)}
.btn-danger:hover{background:var(--red-tint)}
.btn-sm{height:28px;padding:0 10px;font-size:12px;border-radius:7px}
.btn-block{width:100%}
.btn:disabled{opacity:.45;cursor:not-allowed}
.view{flex:1;overflow-y:auto;padding:22px 26px 60px}

/* ---------- generic ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}
.sec-head{display:flex;align-items:flex-end;gap:10px;margin:0 0 12px}
.sec-head h2{font-size:14px;font-weight:500}
.sec-head .sub{font-size:11.5px;color:var(--muted);margin-bottom:1px}
.sec-head .spacer{margin-left:auto}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;letter-spacing:-.2px}
.muted{color:var(--muted)}
.tiny{font-size:11.5px}
.field-note{font-size:11px;color:var(--muted);margin-top:5px;line-height:1.5}

/* ---------- 参考链接 ---------- */
.links{display:flex;flex-direction:column;gap:6px}
.link-row{display:flex;align-items:center;gap:7px;min-width:0;text-decoration:none;
  background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:7px 10px;
  font-size:12.5px;color:var(--blue);transition:.14s}
.link-row:hover{border-color:#C6D6E6;background:var(--blue-tint)}
.link-row .lk-ico{flex:none;width:16px;height:16px;display:grid;place-items:center;border-radius:4px;
  background:var(--blue-tint);color:var(--blue);font-size:10px;line-height:1;font-weight:600}
.link-row .lk-url{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:underline;text-underline-offset:2px}
.dlv-link{margin-top:-4px;margin-bottom:12px}
.hr{height:1px;background:var(--line-2);margin:16px 0}

/* ---------- stat cards ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;position:relative;overflow:hidden}
.stat .k{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}
.stat .v{font-size:26px;font-weight:500;letter-spacing:-.5px;margin-top:6px;line-height:1.1}
.stat .v small{font-size:12px;color:var(--muted);font-weight:400;margin-left:4px}
.stat .bar{position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent}
.stat.s-alert .bar{background:var(--red)}
.stat.s-warn .bar{background:var(--amber)}
.stat.s-ok .bar{background:#4C9A73}

/* ---------- 完成统计（按任务类型细分） ---------- */
.type-stats{margin-bottom:20px}
.ts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:10px;padding:14px 16px}
.ts-item{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px 9px;
  display:flex;flex-direction:column;gap:1px;text-align:left;transition:background .15s,border-color .15s}
.ts-item:hover{background:var(--primary-tint);border-color:#CBDCD6}
.ts-k{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-v{font-size:19px;font-weight:500;letter-spacing:-.3px;line-height:1.3;font-variant-numeric:tabular-nums}
.ts-v small{font-size:11px;color:var(--muted);font-weight:400;margin-left:3px}
.ts-bar{display:block;height:3px;border-radius:2px;background:var(--line-2);margin-top:6px;overflow:hidden}
.ts-bar b{display:block;height:100%;border-radius:2px;background:#4C9A73;transition:width .3s}
.ts-item.zero .ts-v{color:#C3C8C3}
.ts-item.zero .ts-bar b{background:var(--line)}

/* ---------- dashboard grid ---------- */
.dash-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;align-items:start}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.panel-h{display:flex;align-items:center;gap:8px;padding:13px 16px;border-bottom:1px solid var(--line-2)}
.panel-h h3{font-size:13.5px;font-weight:500}
.panel-h .spacer{margin-left:auto}
.panel-b{padding:6px 0}
.panel-b.pad{padding:14px 16px}

/* ---------- list rows ---------- */
.row{
  display:flex;align-items:center;gap:12px;padding:11px 16px;cursor:pointer;
  border-bottom:1px solid var(--line-2);transition:background .12s;
}
.row:last-child{border-bottom:0}
.row:hover{background:var(--surface-2)}
.row .thumb{width:44px;height:44px;border-radius:7px;object-fit:cover;border:1px solid var(--line);background:var(--surface-2);flex:0 0 auto}
.row .r-main{min-width:0;flex:1}
.row .r-t1{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:500}
.row .r-t2{font-size:11.5px;color:var(--muted);display:flex;gap:10px;margin-top:1px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.row .r-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:0 0 auto}

/* ---------- badges ---------- */
.badge{display:inline-flex;align-items:center;gap:4px;height:21px;padding:0 7px;border-radius:5px;
  font-size:11.5px;font-weight:500;letter-spacing:.2px;white-space:nowrap}
.b-pending{background:var(--amber-tint);color:var(--amber)}
.b-doing{background:var(--blue-tint);color:var(--blue)}
.b-review{background:#F1ECF8;color:#6A4C93}
.b-done{background:#E8F2EC;color:#35704F}
.b-returned{background:var(--red-tint);color:var(--red)}
.b-cancelled{background:#F0EFEB;color:#8A8F89}
.t-resend{background:#F6EDE4;color:#8A5A24}
.t-render{background:#EFEAF7;color:#5B4785}
.t-measure{background:#E7F0EE;color:#2E5C4F}
.t-final{background:var(--blue-tint);color:var(--blue)}
.t-main{background:#E9EFF9;color:#3A5A87}
.t-detail{background:#F3EBF6;color:#7A4E8A}
.t-avt{background:#FBEDE9;color:#9C5340}
.ty-mini{height:17px;font-size:10.5px;padding:0 5px;margin-top:3px;border-radius:4px}
.chip{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--ink-2);
  background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 7px}
.chip.warn{background:var(--amber-tint);border-color:#F0DEC0;color:var(--amber)}
.chip.late{background:var(--red-tint);border-color:#EFD2CD;color:var(--red)}
.chip.chg{background:#FDF3E8;border-color:#F2DFC7;color:#9A6415}

/* ---------- table ---------- */
.tbl-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:auto}
.tbl{width:100%;border-collapse:collapse;min-width:880px;table-layout:fixed}
.tbl thead th{
  text-align:left;font-size:11.5px;font-weight:500;color:var(--muted);letter-spacing:.3px;
  padding:10px 14px;background:var(--surface-2);border-bottom:1px solid var(--line);white-space:nowrap;
}
.tbl tbody td{padding:11px 14px;border-bottom:1px solid var(--line-2);font-size:13px;vertical-align:middle}
.tbl tbody tr{cursor:pointer;transition:background .12s}
.tbl tbody tr:hover{background:var(--surface-2)}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl .cell-sub{font-size:11.5px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl .cell-sub.mono{font-size:11px}
.tbl td.mono{white-space:nowrap}
.tbl .num{font-variant-numeric:tabular-nums}

/* ---------- 计时（待处理 / 处理中 / 待确认 实时走秒） ---------- */
.tm{font-variant-numeric:tabular-nums}
.tmb{display:flex;flex-direction:column;line-height:1.25;white-space:nowrap}
.tmb i{font-style:normal;font-size:10.5px;color:var(--muted);order:0}
.tmb .tmv{order:1}
.tmv{font-variant-numeric:tabular-nums;font-size:12px;font-weight:500;white-space:nowrap}
.tmv.wait{color:var(--amber)}
.tmv.work{color:var(--primary-dark)}
.tmv.chk{color:var(--blue)}
.tmv.done,.tmv.off{font-size:11.5px;font-weight:400;color:var(--muted)}
.dr-meta .tmv{font-size:12.5px}

/* ---------- toolbar / filters ---------- */
.toolbar{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.seg{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:3px;gap:2px}
.seg button{height:26px;padding:0 11px;border-radius:6px;font-size:12.5px;color:var(--ink-2)}
.seg button.active{background:var(--primary-tint);color:var(--primary-dark);font-weight:500}
.seg button em{font-style:normal;color:var(--muted);font-size:11px;margin-left:4px}
.seg button.active em{color:var(--primary)}
.toolbar .spacer{margin-left:auto}

/* ---------- kanban ---------- */
.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:start}
.kcol{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px;min-height:200px;min-width:0}
.kcol-h{display:flex;align-items:center;gap:7px;padding:2px 4px 10px;font-size:12.5px;font-weight:500}
.kcol-h em{font-style:normal;margin-left:auto;font-size:11px;color:var(--muted);background:var(--surface);
  border:1px solid var(--line);border-radius:20px;padding:0 7px;line-height:18px}
.kcard{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:10px 11px;
  margin-bottom:8px;cursor:pointer;transition:.14s;box-shadow:var(--shadow-sm);min-width:0;overflow:hidden}
.kcard:hover{border-color:#CFCBC0;transform:translateY(-1px);box-shadow:0 4px 12px rgba(28,31,29,.07)}
.kcard .kc-t{font-size:12.5px;font-weight:500;display:flex;gap:6px;align-items:center;justify-content:space-between}
.kcard .kc-o{font-size:11px;color:var(--muted);margin-top:3px;display:flex;gap:6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.kcard .kc-f{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:11px;color:var(--muted)}
.avatar{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;font-size:10px;color:#fff;flex:0 0 auto}
.av-wang{background:#3E6B5E}
.av-chen{background:#8A6A4B}
.av-cs{background:#5A6470}
.av-qiao{background:#7C6183}

/* ---------- drawer ---------- */
.overlay{position:fixed;inset:0;background:rgba(24,27,25,.32);opacity:0;pointer-events:none;transition:opacity .2s;z-index:40}
.overlay.on{opacity:1;pointer-events:auto}
.drawer{
  position:fixed;top:0;right:0;bottom:0;width:min(760px,94vw);background:var(--bg);
  transform:translateX(101%);transition:transform .26s cubic-bezier(.4,0,.2,1);z-index:50;
  display:flex;flex-direction:column;box-shadow:var(--shadow-lg);
}
.drawer.open{transform:translateX(0)}
.dr-head{background:var(--surface);border-bottom:1px solid var(--line);padding:16px 22px 0}
.dr-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.dr-title{font-size:16px;font-weight:500;letter-spacing:.2px}
.dr-close{margin-left:auto;width:30px;height:30px;border-radius:7px;font-size:18px;color:var(--muted);
  display:grid;place-items:center}
.dr-close:hover{background:var(--surface-2);color:var(--ink)}
.dr-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin:8px 0 12px}
.dr-meta b{font-weight:500}
.dr-tabs{display:flex;gap:2px}
.dr-tabs button{padding:9px 12px;font-size:12.5px;color:var(--muted);border-bottom:2px solid transparent}
.dr-tabs button.active{color:var(--ink);border-bottom-color:var(--primary);font-weight:500}
.dr-body{flex:1;overflow-y:auto;padding:18px 22px 24px}
.dr-foot{border-top:1px solid var(--line);background:var(--surface);padding:12px 22px;display:flex;gap:8px;align-items:center}
.dr-foot .hint{font-size:11.5px;color:var(--muted);margin-right:auto}

.blk{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:15px 16px;margin-bottom:14px}
.blk-h{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.blk-h h3{font-size:13px;font-weight:500}
.blk-h .spacer{margin-left:auto}
.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:9px 20px}
.kv .item{display:grid;grid-template-columns:76px 1fr;gap:8px;font-size:12.5px;min-width:0}
.kv .item>span:first-child{color:var(--muted);white-space:nowrap}
.kv .item>span:last-child{color:var(--ink);word-break:break-all}

.need-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.need-tbl th{text-align:left;font-size:11px;color:var(--muted);font-weight:500;padding:6px 8px;background:var(--surface-2);border-radius:4px}
.need-tbl td{padding:7px 8px;border-bottom:1px solid var(--line-2)}
.need-tbl tr:last-child td{border-bottom:0}
.need-tbl .err{color:var(--red)}
.need-tbl .err td{background:#FDF6F5}

.refs{display:flex;gap:8px;flex-wrap:wrap}
.ref{width:104px;border-radius:8px;overflow:hidden;border:1px solid var(--line);cursor:zoom-in;background:var(--surface-2)}
.ref img{width:100%;height:104px;object-fit:contain;background:#F4F2EE}
.ref p{font-size:10.5px;color:var(--muted);padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ref.big{width:auto;flex:1 1 200px;max-width:300px}
.ref.big img{height:auto;max-height:220px;object-fit:contain;background:#fff}

.vtabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.vtab{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:5px 10px;font-size:12px;color:var(--ink-2);display:flex;gap:6px;align-items:center}
.vtab.active{border-color:var(--primary);background:var(--primary-tint);color:var(--primary-dark);font-weight:500}
.vtab.rejected{opacity:.75}
.vtab .tag{font-size:10px;padding:0 4px;border-radius:3px;background:var(--red-tint);color:var(--red)}
.vmeta{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-bottom:10px}
.reason-box{background:var(--red-tint);border-left:2px solid var(--red);border-radius:0 6px 6px 0;
  padding:8px 11px;font-size:12.5px;color:#7E332B;margin-top:10px}
/* 客服的改版要求：效果图可能来回 2~3 轮 */
.rev-box{margin:2px 0 14px;padding:10px 12px;border:1px solid #F2DFC7;background:#FDFAF4;border-radius:8px}
.rev-h{display:flex;align-items:baseline;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.rev-h b{font-size:12.5px;color:#9A6415;font-weight:500}
.rev-item{display:flex;flex-direction:column;gap:1px;padding:6px 0;border-top:1px dashed #EFE3CE}
.rev-item:first-of-type{border-top:0;padding-top:2px}
.rev-t{font-size:12.5px;line-height:1.55;color:var(--ink-2);word-break:break-word}
.rev-item.new .rev-t{color:#7E4A0F;font-weight:500}
.rev-imgs{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 4px}
.rev-imgs .ri{width:96px;border-radius:7px;overflow:hidden;border:1px solid var(--line);background:#fff;cursor:zoom-in;flex:0 0 auto}
.rev-imgs .ri img{width:100%;height:88px;object-fit:contain;background:#F4F2EE;display:block}
.rev-imgs .ri span{display:block;font-size:10.5px;color:var(--muted);padding:2px 0 3px;text-align:center;background:var(--surface-2);border-top:1px solid var(--line)}
.rev-m{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.rev-k{font-style:normal;font-size:10px;line-height:1.5;padding:0 5px;border-radius:3px;background:#FDF1DE;color:#9A6415;border:1px solid #F2DFC7}
.rev-k.fk{background:var(--blue-tint);color:var(--blue);border-color:#D8E4F0}

.tl{position:relative;padding-left:18px}
.tl::before{content:"";position:absolute;left:4px;top:6px;bottom:6px;width:1px;background:var(--line)}
.tl-i{position:relative;padding:0 0 14px}
.tl-i:last-child{padding-bottom:0}
.tl-i::before{content:"";position:absolute;left:-18px;top:5px;width:9px;height:9px;border-radius:50%;
  background:var(--surface);border:1.5px solid #C9C5BA}
.tl-i.hl::before{border-color:var(--primary);background:var(--primary)}
.tl-i.bad::before{border-color:var(--red);background:var(--red)}
.tl-t{font-size:12.5px;display:flex;gap:8px;align-items:baseline}
.tl-t b{font-weight:500}
.tl-t time{font-size:11px;color:var(--muted);margin-left:auto;white-space:nowrap}
.tl-d{font-size:11.5px;color:var(--muted);margin-top:1px}

/* ---------- modal ---------- */
.modal-wrap{position:fixed;inset:0;background:rgba(24,27,25,.34);display:none;z-index:60;
  align-items:flex-start;justify-content:center;padding:40px 20px;overflow-y:auto}
.modal-wrap.on{display:flex}
.modal{background:var(--surface);border-radius:14px;width:min(700px,100%);box-shadow:var(--shadow-md);
  overflow:hidden;animation:pop .18s ease-out}
@keyframes pop{from{transform:translateY(8px);opacity:.6}to{transform:none;opacity:1}}
.md-head{display:flex;align-items:center;gap:8px;padding:16px 20px;border-bottom:1px solid var(--line-2)}
.md-head h3{font-size:15px;font-weight:500}
.md-head .dr-close{margin-left:auto}
.md-body{padding:18px 20px;max-height:calc(100vh - 210px);overflow-y:auto}
.md-foot{padding:13px 20px;border-top:1px solid var(--line-2);display:flex;gap:8px;justify-content:flex-end;background:var(--surface-2)}

/* 草稿提示条（恢复上次没写完的内容） */
.draft-bar{display:flex;align-items:center;gap:8px;padding:9px 20px;background:var(--primary-tint);
  border-bottom:1px solid var(--line);font-size:12px;color:var(--primary-dark);line-height:1.5}
.draft-bar .db-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);flex:none}
.draft-bar .db-txt{flex:1;min-width:0}
.draft-bar .db-btn{flex:none;border:1px solid rgba(46,92,79,.3);background:rgba(255,255,255,.9);color:var(--primary);
  font-size:11.5px;padding:3px 9px;border-radius:6px;cursor:pointer;transition:.14s;font-family:inherit}
.draft-bar .db-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}
/* 写到一半点空白：抖一下，不关窗 */
.modal.shake{animation:mshake .34s ease}
@keyframes mshake{0%,100%{transform:translateX(0)}18%{transform:translateX(-7px)}42%{transform:translateX(6px)}66%{transform:translateX(-3px)}84%{transform:translateX(2px)}}

.field{margin-bottom:14px}
.field>label{display:block;font-size:12px;color:var(--ink-2);margin-bottom:6px;font-weight:500}
.field>label em{font-style:normal;color:var(--red);margin-left:2px}
.field .tip{font-size:11px;color:var(--muted);font-weight:400;margin-left:5px}
.inp,select.inp,textarea.inp{
  width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 11px;font-size:13px;
  background:var(--surface);outline:none;transition:.14s;
}
.inp:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}
textarea.inp{resize:vertical;min-height:64px;line-height:1.6}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.grid3{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:0 10px}
.seg-inline{display:flex;gap:8px}
.seg-inline.four{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pick{border:1px solid var(--line);border-radius:9px;padding:11px 12px;flex:1;text-align:left;
  display:flex;gap:10px;align-items:flex-start;transition:.14s;background:var(--surface);min-width:0}
.pick:hover{border-color:#CFCBC0}
.pick.on{border-color:var(--primary);background:var(--primary-tint);box-shadow:0 0 0 1px var(--primary) inset}
.pick .pk-t{display:block;font-size:13px;font-weight:500}
.pick .pk-d{display:block;font-size:11px;color:var(--muted);margin-top:2px;line-height:1.4}
.pick .radio{width:15px;height:15px;border-radius:50%;border:1.5px solid #C9C5BA;flex:0 0 auto;margin-top:2px;position:relative}
.pick.on .radio{border-color:var(--primary)}
.pick.on .radio::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--primary)}
/* 指定美工：卡片式单选 */
.seg-inline.arts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.pick.art{align-items:center;padding:10px 12px}
.pick.art .pk-t{display:flex;align-items:center;gap:7px;font-weight:500}
.pick.art .avatar{display:inline-grid;font-style:normal}
/* 漏填时把那一块闪一下，免得在下面看不见 */
.field.flash{animation:flashBox 1.3s ease;border-radius:9px}
@keyframes flashBox{
  0%,100%{background:transparent;box-shadow:none}
  25%{background:var(--red-tint);box-shadow:0 0 0 2px rgba(177,70,60,.32)}
  60%{background:transparent;box-shadow:0 0 0 2px rgba(177,70,60,.20)}
}

.rows-editor{border:1px solid var(--line);border-radius:9px;overflow:hidden}
.re-head,.re-row{display:grid;grid-template-columns:70px 92px 1.4fr 54px 28px;gap:6px;align-items:center;padding:6px 8px}
.re-head{background:var(--surface-2);font-size:11px;color:var(--muted);border-bottom:1px solid var(--line)}
.re-row{border-bottom:1px solid var(--line-2)}
.re-row:last-child{border-bottom:0}
.re-row input{border:1px solid transparent;background:var(--surface-2);border-radius:6px;padding:5px 7px;font-size:12.5px;width:100%;outline:none}
.re-row input:focus{border-color:var(--primary);background:#fff}
.re-del{width:24px;height:24px;border-radius:6px;color:var(--muted);font-size:14px;display:grid;place-items:center}
.re-del:hover{background:var(--red-tint);color:var(--red)}
.re-add{border-top:1px solid var(--line-2);padding:7px 8px}
.re-add button{font-size:12px;color:var(--primary);font-weight:500}

.upload{border:1px dashed #D5D1C6;border-radius:9px;padding:16px;text-align:center;cursor:pointer;
  background:var(--surface-2);transition:.14s}
.upload:hover{border-color:var(--primary);background:var(--primary-tint)}
.upload p{font-size:12.5px;color:var(--ink-2)}
.upload p b{color:var(--primary-dark);font-weight:600}
.upload span{font-size:11px;color:var(--muted)}
.upload.slim{padding:11px 14px}
/* 附件（压缩包 / 源文件） */
.files{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.file-row{display:flex;align-items:center;gap:9px;background:var(--surface-2);border:1px solid var(--line);
  border-radius:8px;padding:7px 9px}
.f-ico{width:36px;height:24px;border-radius:5px;background:var(--primary-tint);color:var(--primary-dark);
  display:grid;place-items:center;font-size:9.5px;font-style:normal;font-weight:600;letter-spacing:.3px;
  flex:0 0 auto;border:1px solid #DDE7E2}
.f-main{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.f-main b{font-size:12.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f-main span{font-size:11px;color:var(--muted)}
.f-dl{font-size:11.5px;color:var(--primary);flex:0 0 auto}
.f-dl:hover{text-decoration:underline}
.f-del{width:20px;height:20px;border-radius:5px;color:var(--muted);font-size:15px;line-height:1;flex:0 0 auto}
.f-del:hover{background:#fff;color:var(--red)}

/* ---------- 具体尺寸：下拉 + 选项增改 ---------- */
.size-row{display:flex;gap:8px;align-items:center}
.size-row select{flex:1;min-width:0}
.size-row .btn{flex:0 0 auto}
.size-mgr{display:none;margin-top:8px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);padding:8px}
.size-mgr.on{display:block}
.sm-list{display:grid;grid-template-columns:1fr 1fr;gap:5px;max-height:172px;overflow-y:auto}
.sm-row{display:flex;align-items:center;gap:4px}
.sm-in{flex:1;min-width:0;border:1px solid transparent;background:var(--surface);border-radius:6px;
  padding:5px 8px;font-size:12.5px;outline:none;color:var(--ink)}
.sm-in:hover{border-color:var(--line)}
.sm-in:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-tint)}
.sm-del{width:22px;height:22px;border-radius:6px;color:var(--muted);font-size:13px;display:grid;place-items:center;flex:0 0 auto}
.sm-del:hover{background:var(--red-tint);color:var(--red)}
.sm-add{display:flex;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.sm-add .inp{height:30px;font-size:12.5px}
.sm-add .btn{flex:0 0 auto}

.assign-hint{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px dashed var(--line);
  border-radius:8px;padding:9px 12px;font-size:11.5px;color:var(--muted);margin-bottom:2px}
.assign-hint b{color:var(--ink-2);font-weight:500}

.who{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}
.claim-tag{display:inline-flex;align-items:center;height:19px;padding:0 7px;border-radius:5px;font-size:11px;
  color:var(--amber);background:var(--amber-tint);border:1px solid #F0DEC0;white-space:nowrap}
.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.thumbs .t{position:relative;width:72px;height:72px;border-radius:7px;overflow:hidden;border:1px solid var(--line);cursor:zoom-in}
.thumbs .t img{width:100%;height:100%;object-fit:contain;background:#F4F2EE}
.thumbs .t button{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;
  background:rgba(20,22,21,.62);color:#fff;font-size:12px;display:grid;place-items:center;line-height:1}

.order-pick{position:relative}
.order-drop{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--surface);border:1px solid var(--line);
  border-radius:9px;box-shadow:var(--shadow-md);z-index:5;max-height:210px;overflow-y:auto;display:none}
.order-drop.on{display:block}
.order-drop .oi{padding:9px 12px;font-size:12.5px;cursor:pointer;border-bottom:1px solid var(--line-2)}
.order-drop .oi:last-child{border-bottom:0}
.order-drop .oi:hover{background:var(--primary-tint)}
.order-drop .oi small{display:block;color:var(--muted);font-size:11px}

/* ---------- misc ---------- */
.empty{text-align:center;padding:52px 20px;color:var(--muted)}
.empty .e-ico{font-size:26px;opacity:.4;margin-bottom:8px}
.empty p{font-size:12.5px}
.sla{font-variant-numeric:tabular-nums;font-size:12px;display:inline-flex;align-items:center;gap:4px}
.sla.late{color:var(--red);font-weight:500}
.sla.warn{color:var(--amber)}
.toast-stack{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{background:#222624;color:#fff;font-size:12.5px;padding:9px 16px;border-radius:8px;box-shadow:var(--shadow-md);
  animation:up .22s ease-out;display:flex;gap:8px;align-items:center}
@keyframes up{from{transform:translateY(10px);opacity:0}to{transform:none;opacity:1}}

/* ---------- 站内提醒（新单 / 回传） ---------- */
.noti-stack{position:fixed;right:18px;bottom:18px;z-index:86;display:flex;flex-direction:column;gap:10px;
  width:min(348px,calc(100vw - 32px));pointer-events:none}
.noti{pointer-events:auto;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--primary);
  border-radius:12px;padding:12px 13px 11px;box-shadow:0 12px 34px rgba(28,31,29,.16);
  animation:notiIn .26s cubic-bezier(.2,.8,.3,1)}
.noti-returned{border-left-color:var(--amber)}
.noti-rejected,.noti-cancelled{border-left-color:var(--red)}
.noti-done{border-left-color:var(--primary)}
.noti-digest{border-left-color:var(--blue)}
.noti-stage{border-left-color:var(--blue)}
@keyframes notiIn{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
.noti-head{display:flex;align-items:flex-start;gap:9px}
.noti-ico{width:22px;height:22px;border-radius:50%;background:var(--primary-tint);color:var(--primary-dark);
  display:grid;place-items:center;font-size:12px;font-style:normal;flex:0 0 auto;margin-top:1px}
.noti-returned .noti-ico{background:var(--amber-tint);color:var(--amber)}
.noti-rejected .noti-ico,.noti-cancelled .noti-ico{background:var(--red-tint);color:var(--red)}
.noti-digest .noti-ico{background:var(--blue-tint);color:var(--blue)}
.noti-stage .noti-ico{background:var(--blue-tint);color:var(--blue)}
.noti-tt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.noti-tt b{font-size:13.5px;font-weight:600}
.noti-tt span{font-size:11px;color:var(--muted);margin-top:2px}
.noti-bell,.noti-x{width:20px;height:20px;border-radius:5px;color:var(--muted);display:grid;place-items:center;flex:0 0 auto}
.noti-bell{opacity:.5}
.noti-bell:hover{opacity:1;background:var(--surface-2)}
.noti-bell.off{opacity:.35}
.noti-x{font-size:15px;line-height:1}
.noti-x:hover{background:var(--surface-2);color:var(--ink)}
.noti-body{margin-top:8px;font-size:12.5px;color:var(--ink-2);line-height:1.6}
.noti-body p+p{margin-top:3px}
.noti-body .noti-meta{color:var(--muted);font-size:11.5px}
.noti-acts{display:flex;gap:8px;margin-top:10px}
@media (max-width:720px){
  .noti-stack{right:10px;left:10px;bottom:10px;width:auto}
}

.lightbox{position:fixed;inset:0;background:rgba(15,17,16,.86);z-index:90;display:none;place-items:center;padding:40px;overflow:auto}
.lightbox.on{display:grid}
.lightbox img{max-width:100%;max-height:88vh;border-radius:6px;cursor:zoom-in}
/* 双击再看 1:1 原图，设计稿上的小字能看清 */
.lightbox img.big{max-width:none;max-height:none;cursor:zoom-out}
.lightbox img.big+.lb-close{position:fixed}
.lb-close{position:absolute;top:18px;right:24px;color:#fff;font-size:26px;opacity:.8}
.note-strip{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;
  font-size:12.5px;color:var(--ink-2);line-height:1.65;white-space:pre-wrap}
.copy-btn{margin-left:8px;font-size:11px;color:var(--primary);font-weight:500}
.src-tag{font-size:10.5px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 4px}

/* ---------- 三步进度 ---------- */
.steps{display:grid;grid-template-columns:auto 1fr auto 1fr auto;align-items:center;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:13px 18px;margin-bottom:14px}
.step{display:flex;align-items:center;gap:9px;min-width:0}
.step i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;
  font-size:11.5px;font-style:normal;font-weight:500;background:var(--surface-2);
  border:1.5px solid var(--line);color:var(--muted)}
.step b{display:block;font-size:12.5px;font-weight:500;white-space:nowrap}
.step span{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.step.done i{background:var(--primary);border-color:var(--primary);color:#fff}
.step.done b{color:var(--ink)}
.step.active i{border-color:var(--primary);color:var(--primary);background:var(--primary-tint);
  box-shadow:0 0 0 3px rgba(46,92,79,.1)}
.step.active b{color:var(--primary-dark)}
.step-line{height:1px;background:var(--line);margin:0 16px}

/* ---------- 出效果图：两段式流程 ---------- */
.stg-flow{display:flex;align-items:center;flex-wrap:wrap;gap:4px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:11px 14px;margin-bottom:14px}
.stg-flow .sg{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;
  background:var(--surface-2);border:1px solid var(--line-2);color:var(--muted);font-size:11.5px;white-space:nowrap}
.stg-flow .sg i{font-style:normal;width:15px;height:15px;border-radius:50%;display:grid;place-items:center;
  font-size:9.5px;background:#fff;border:1px solid var(--line);color:var(--muted)}
.stg-flow .sg.done{background:var(--primary-tint);border-color:transparent;color:var(--primary-dark)}
.stg-flow .sg.done i{background:var(--primary);border-color:var(--primary);color:#fff}
.stg-flow .sg.active{background:#fff;border-color:var(--primary);color:var(--primary-dark);font-weight:500;
  box-shadow:0 0 0 3px rgba(46,92,79,.08)}
.stg-flow .sg.active i{background:var(--primary-tint);border-color:var(--primary);color:var(--primary-dark);font-weight:500}
.stg-flow .sg-line{width:12px;height:1px;background:var(--line);flex:0 0 auto}
.stg-flow .sg-ver{font-style:normal;font-weight:500;font-size:10.5px;line-height:1.5;padding:0 5px;border-radius:999px;
  border:1px solid currentColor;opacity:.8}
.stg-flow .sg.active .sg-ver{background:var(--primary-tint);opacity:1}
.stage-tag{font-size:11px;padding:2px 8px;border-radius:999px;background:var(--blue-tint);color:var(--blue);border:1px solid #D8E4F0}
/* 出图历史（客服要来回比好几版） */
.rounds{display:flex;flex-direction:column;gap:10px}
.round{border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;background:var(--surface-2)}
.round-h{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--muted);margin-bottom:8px}
.round-h b{font-size:12px;color:var(--ink-2);font-weight:500}
.round-h .sr{margin-left:auto}
.round .refs{margin:0}

.mini-h{font-size:11.5px;color:var(--muted);font-weight:500;margin-bottom:7px;letter-spacing:.2px}
.flow-hint{display:flex;flex-direction:column;gap:1px;font-size:10.5px;color:#A8AEA9;padding:0 2px;letter-spacing:.1px}
.shop-no{flex:0 0 26px;text-align:right;font-size:11.5px;color:#B4B9B4;font-variant-numeric:tabular-nums}

/* ---------- 个人业绩（概览） ---------- */
.perf{margin-bottom:20px}
.perf .panel-b{padding:0 16px 12px}
.seg.seg-sm{padding:2px}
.seg.seg-sm button{height:24px;padding:0 10px;font-size:12px}
/* 自定义日期范围 */
.perf-range{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:11px 16px 0;margin:0}
.perf-range .pr-lab{font-size:12px;color:var(--muted)}
.perf-range .pr-date{width:146px;height:30px;padding:0 9px;font-size:12.5px;font-variant-numeric:tabular-nums}
.perf-range .btn-sm{height:30px}
.perf-range .tiny{margin-left:2px}
.perf-sum{display:flex;gap:26px;padding:12px 0 12px;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.perf-sum div{display:flex;align-items:baseline;gap:7px}
.perf-sum span{font-size:11.5px;color:var(--muted)}
.perf-sum b{font-size:16px;font-weight:500;font-variant-numeric:tabular-nums}
.perf-tbl{width:100%;border-collapse:collapse;margin-top:2px}
.perf-tbl th{font-size:11px;font-weight:400;color:var(--muted);text-align:left;padding:9px 8px 7px;border-bottom:1px solid var(--line-2)}
.perf-tbl td{font-size:12.5px;padding:9px 8px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.perf-tbl tr:last-child td{border-bottom:0}
.perf-tbl tfoot td{font-size:11.5px;color:var(--muted);background:var(--surface-2);border-bottom:0}
.perf-tbl tfoot td:first-child{padding-left:8px}
.perf-tbl .ta-r{text-align:right;font-variant-numeric:tabular-nums}
.perf-tbl tr.mine td{background:var(--primary-tint)}
.perf-tbl tr.mine td:first-child{border-radius:6px 0 0 6px}
.perf-tbl tr.mine td:last-child{border-radius:0 6px 6px 0}
.perf-n{display:inline-block;min-width:26px;height:22px;padding:0 7px;border-radius:6px;
  background:var(--surface-2);border:1px solid var(--line);font-size:12.5px;font-weight:500;
  font-variant-numeric:tabular-nums;color:var(--ink);transition:.13s}
.perf-n:hover{background:var(--primary-tint);border-color:#CBDCD6;color:var(--primary-dark)}
.perf-tbl .pm{color:#C3C8C3;font-variant-numeric:tabular-nums}
.perf-tbl .pm2{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}
.role-tag{font-style:normal;font-size:10.5px;color:var(--muted);border:1px solid var(--line);
  border-radius:4px;padding:0 4px;margin-left:6px;font-weight:400}
.perf-tip{font-size:11px;color:var(--muted);padding:9px 2px 2px;line-height:1.6}
.b-cancel{background:#F3F2EE;color:#7C827D}
.quick-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:9px}
.chip-btn{font-size:11.5px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);
  border-radius:20px;padding:3px 10px;transition:.13s}
.chip-btn:hover{border-color:var(--primary);color:var(--primary-dark);background:var(--primary-tint)}

/* ---------- 详情内「美工回传」内联填写 ---------- */
.dlv{border:1px solid #DDE3DF;border-radius:10px;background:var(--surface-2);padding:13px 13px 11px}
.dlv-tip{display:flex;align-items:center;gap:7px;font-size:11.5px;color:#5E6A63;
  background:var(--surface);border:1px dashed #D5D1C6;border-radius:8px;padding:8px 10px}
.dlv-tip b{color:var(--primary-dark);font-weight:600}
.dlv .upload{padding:13px;background:var(--surface)}
.dlv .upload.dz p{font-size:12.5px}
.dlv .thumbs .t{width:64px;height:64px}
.dlv .thumbs:empty{display:none}
.dlv .field>label{font-size:11.5px}
.dlv .grid2 .field{margin-bottom:11px}
.dlv-foot{display:flex;align-items:center;gap:10px;justify-content:flex-end;
  border-top:1px solid var(--line);margin-top:2px;padding-top:11px}
.dlv-foot .tiny{margin-right:auto;font-size:11px}
.perf-tbl th:nth-child(n+2){width:92px}

/* ---------- 账号：顶栏身份 / 登录与审批 ---------- */
[hidden]{display:none!important}
.role-switch{border:1px solid var(--line);background:var(--surface)}
#meChip{padding:4px 8px 4px 6px;gap:8px}
#meChip .avatar{width:24px;height:24px;font-size:11px}
.me-text{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.me-text b{font-size:12.5px;font-weight:500;color:var(--ink)}
.me-text em{font-size:10.5px;font-style:normal;color:var(--muted)}
#meChip .btn{margin-left:4px}

.gate{position:fixed;inset:0;z-index:100;background:var(--bg);display:grid;place-items:center;padding:24px;
  background-image:radial-gradient(circle at 20% 15%,rgba(46,92,79,.07),transparent 55%),radial-gradient(circle at 85% 80%,rgba(176,138,98,.09),transparent 55%)}
.gate-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:16px;
  box-shadow:var(--shadow-md);padding:30px 28px 24px;text-align:center}
.gate-mark{margin:0 auto 14px;width:44px;height:44px;border-radius:12px;background:var(--primary);color:#fff;
  display:grid;place-items:center}
.gate-card h2{font-size:19px;font-weight:600;letter-spacing:.4px}
.gate-sub{font-size:12.5px;color:var(--muted);margin:6px 0 20px}
.gate-h{font-size:16px;font-weight:600;margin-bottom:8px}
.gate-lead{font-size:13px;color:var(--ink-2);line-height:1.7;text-align:left;margin-bottom:18px}
.gate-btn{width:100%;justify-content:center;height:40px;font-size:13.5px}
.gate-btn2{width:100%;justify-content:center;margin-top:8px}
.gate-err{font-size:12px;color:var(--red);background:var(--red-tint);border-radius:8px;padding:9px 11px;
  margin-top:12px;text-align:left;line-height:1.6}
.gate-note{font-size:11.5px;color:var(--muted);margin-top:16px;line-height:1.6}
a.btn{text-decoration:none}
a.gate-btn{display:flex}
.gate-note b,.gate-lead b{font-weight:600;color:var(--ink)}

/* ---------- 账号：邀请码 ---------- */
.inv-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;letter-spacing:1.5px;
  color:var(--primary-dark);background:var(--primary-tint);border-radius:5px;padding:1px 7px;font-weight:600}
.inv-big{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:30px;font-weight:700;letter-spacing:9px;
  color:var(--primary-dark);background:var(--primary-tint);border:1px dashed rgba(46,92,79,.35);
  border-radius:12px;padding:14px 4px 16px 14px;user-select:all}
.inv-input{text-align:center;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:20px;
  letter-spacing:6px;height:46px;margin-bottom:12px;text-transform:uppercase}
.gate-err{margin:0 0 10px}
.inv-input::placeholder{letter-spacing:1px;font-size:13.5px;font-family:inherit}

/* ---------- 效果确认 / 定稿依据 ---------- */
.vcards{display:flex;gap:9px;overflow-x:auto;padding:2px 2px 6px}
.vcard{position:relative;flex:0 0 auto;width:104px;padding:6px;border:1px solid var(--line);
  border-radius:9px;background:var(--surface);text-align:left;transition:.14s}
.vcard:hover{border-color:#C9CFCA}
.vcard.on{border-color:var(--primary);background:var(--primary-tint);box-shadow:0 0 0 2px rgba(46,92,79,.10)}
.vc-thumb{display:block;width:100%;height:64px;border-radius:6px;overflow:hidden;background:#F4F2EE;
  border:1px solid var(--line);margin-bottom:5px}
.vc-thumb img{width:100%;height:100%;object-fit:contain}
.vc-thumb i{display:grid;place-items:center;height:100%;font-size:11px;color:var(--muted);font-style:normal}
.vc-no{display:block;font-size:12px;font-weight:600;color:var(--ink)}
.vc-meta{display:block;font-size:10.5px;color:var(--muted);margin-top:1px}
.vc-tick{position:absolute;top:3px;right:5px;font-size:12px;color:#fff;background:var(--primary);
  width:16px;height:16px;border-radius:50%;display:grid;place-items:center;line-height:1}
.pimgs{display:flex;gap:8px;flex-wrap:wrap}
.pimg{position:relative;width:78px;height:78px;padding:0;border-radius:8px;overflow:hidden;
  border:1px solid var(--line);background:#F4F2EE;cursor:pointer;opacity:.5;transition:.14s;flex:0 0 auto}
.pimg img{width:100%;height:100%;object-fit:contain}
.pimg:hover{opacity:.85}
.pimg.on{opacity:1;border-color:var(--primary);box-shadow:0 0 0 2px rgba(46,92,79,.14)}
.pimg-no{position:absolute;left:4px;bottom:3px;font-size:10px;color:#fff;background:rgba(28,31,29,.55);
  border-radius:4px;padding:0 4px}
.pimg-tick{position:absolute;top:4px;right:4px;width:16px;height:16px;border-radius:50%;background:var(--primary);
  color:#fff;font-size:11px;display:none;place-items:center;line-height:1}
.pimg.on .pimg-tick{display:grid}
.fb-bar{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:8px 11px;border-radius:8px;
  background:var(--blue-tint);border:1px solid #D8E4F0}
.fb-bar b{font-size:12.5px;color:var(--blue)}
.fb-bar span{font-size:11px;color:var(--muted)}
.fb-note{background:#FDFAF4;border-color:#F2DFC7}

/* ---------- 图片下载按钮（每个贴图位置都能存回本地） ---------- */
.ref,.ri{position:relative}
.dl{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:6px;z-index:3;
  display:grid;place-items:center;color:#fff;background:rgba(24,27,25,.62);
  border:1px solid rgba(255,255,255,.32);opacity:.88;transition:opacity .14s,background .14s}
.ref:hover .dl,.ri:hover .dl,.t:hover .dl{opacity:1}
.dl:hover{background:var(--primary);border-color:var(--primary)}
.dl:active{transform:scale(.94)}
/* 表单里的小缩略图：删除在右上，下载放左下，一直可见 */
.thumbs .t .dl.bl{top:auto;bottom:2px;left:2px;right:auto;width:19px;height:19px;opacity:.92;border-radius:5px}
.thumbs .t .dl.bl svg{width:11px;height:11px}
/* 大图查看器里的下载 */
.lb-dl{position:fixed;top:16px;right:70px;padding:6px 12px;border-radius:8px;font-size:12.5px;color:#fff;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);backdrop-filter:blur(4px)}
.lb-dl:hover{background:rgba(255,255,255,.26)}
@media (hover:none){.dl{opacity:.9}}

/* ---------- 已取消单的删除键（仅管理员可见） ---------- */
.del-mini{margin-top:4px;font-size:11px;color:var(--red);border:1px solid #E8CFCB;background:#FFF8F7;
  border-radius:5px;padding:1px 7px;line-height:1.6;transition:.14s}
.del-mini:hover{background:var(--red-tint);border-color:var(--red)}
