/* =========================================================
   WAFER FLOW · 第二批组件样式
   登录 / 账号 / 录入（文本与照片）/ 多选批量 / 子工序 / 账户管理
   加载在 app.css 之后，用于覆盖与追加
   ========================================================= */

/* ================= 登录 ================= */
.auth-host{ display:none; }
.auth-host.is-on{ display:block; min-height:100dvh; }

.auth-screen{
  display:grid;
  grid-template-columns:minmax(0, 1.05fr) minmax(430px, .95fr);
  min-height:100dvh;
}
.auth-art{
  position:relative;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  gap:28px;
  padding:42px 46px;
  color:var(--bay-ink);
  background:radial-gradient(130% 120% at 0% 0%, #262014 0%, #1A1710 46%, #14120D 100%);
}
.auth-art::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background-image:
    linear-gradient(90deg, rgba(240,231,214,.05) 1px, transparent 1px),
    linear-gradient(rgba(240,231,214,.04) 1px, transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(120% 110% at 100% 0%, #000 0%, transparent 70%);
  mask-image:radial-gradient(120% 110% at 100% 0%, #000 0%, transparent 70%);
}
.auth-art > *{ position:relative; }

.auth-brand{ display:flex; align-items:center; gap:10px; }
.auth-brand .rail-mark{ width:28px; height:28px; color:#E0B570; }
.auth-brand-name{ font-size:16px; font-weight:640; letter-spacing:.14em; color:#F2EADB; }
.auth-brand-sub{ font-size:8px; letter-spacing:.16em; color:#8B8172; margin-left:2px; }

.auth-headline{
  font-size:clamp(22px, 2.4vw, 34px);
  line-height:1.38;
  font-weight:520;
  letter-spacing:-.012em;
  color:#E7DFCE;
  max-width:22ch;
}
.auth-headline b{ color:#E0B570; font-weight:600; }

.auth-art-foot{ display:flex; align-items:flex-end; justify-content:space-between; gap:26px; }
.auth-wafer-svg{ width:min(220px, 32vw); height:auto; flex:none; }
.auth-facts{ display:grid; grid-template-columns:1fr 1fr; gap:14px 22px; margin:0; }
.auth-facts > div{ display:flex; flex-direction:column; gap:3px; }
.auth-facts dt{
  font-family:var(--mono);
  font-size:9px; letter-spacing:.14em; text-transform:uppercase;
  color:#9C9180;
}
.auth-facts dd{ margin:0; font-size:15px; color:#EDE3D2; }

.auth-panel{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:26px;
  padding:44px clamp(24px, 5vw, 66px);
  background:var(--surface);
  border-left:1px solid var(--line);
}
.auth-form{ display:flex; flex-direction:column; gap:14px; max-width:390px; }
.auth-title{
  margin-top:4px;
  font-size:24px;
  font-weight:600;
  letter-spacing:-.015em;
  color:var(--ink);
}
.auth-sub{ font-size:12px; line-height:1.65; color:var(--mute); }
.auth-err{
  font-size:11.5px;
  color:var(--oxide);
  background:var(--oxide-soft);
  border:1px solid #E3C4C0;
  padding:7px 9px;
  border-radius:7px;
}
.auth-submit{ height:42px; margin-top:2px; }

.auth-demo{
  display:flex;
  flex-direction:column;
  gap:9px;
  max-width:430px;
  padding-top:18px;
  border-top:1px solid var(--line-soft);
}
.demo-list{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.demo-item{
  display:flex;
  align-items:center;
  gap:8px;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--surface-2);
  text-align:left;
  transition:border-color .16s, background .16s;
}
.demo-item:hover{ border-color:var(--line-ink); background:var(--surface); }
.demo-item:active{ transform:translateY(1px); }
.demo-name{ font-size:12px; color:var(--ink); }
.demo-user{ font-size:10px; color:var(--mute); font-family:var(--mono); }
.demo-item .chip{ margin-left:auto; }
.auth-note{ font-size:10px; line-height:1.65; color:var(--mute-2); }

/* ================= 顶栏账号 ================= */
.account{ position:relative; }
.acct-btn{
  display:flex;
  align-items:center;
  gap:8px;
  height:38px;
  padding:0 10px 0 5px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--surface);
  transition:border-color .16s;
}
.acct-btn:hover{ border-color:var(--line-ink); }
.acct-avatar{
  width:28px; height:28px;
  border-radius:50%;
  display:grid; place-items:center;
  font-size:10px;
  letter-spacing:.02em;
  background:var(--ink);
  color:#F4EAD8;
  flex:none;
}
.acct-main{ display:flex; flex-direction:column; line-height:1.15; text-align:left; }
.acct-main b{ font-size:11.5px; font-weight:560; color:var(--ink); }
.acct-main i{ font-style:normal; font-size:9px; color:var(--mute); }
.acct-caret{ width:12px; height:12px; color:var(--mute); }
.acct-menu{
  position:absolute;
  top:calc(100% + 8px);
  right:0;
  min-width:214px;
  padding:6px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface);
  box-shadow:var(--shadow-soft);
  z-index:40;
  animation:fadeUp .2s var(--ease) both;
}
.acct-menu-head{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:8px 10px 10px;
  margin-bottom:4px;
  border-bottom:1px solid var(--line-soft);
}
.acct-menu-name{ font-size:13px; font-weight:560; color:var(--ink); }
.acct-menu-sub{ font-size:9.5px; color:var(--mute); }
.acct-item{
  display:flex;
  align-items:center;
  gap:8px;
  width:100%;
  padding:8px 10px;
  border-radius:7px;
  font-size:12px;
  color:var(--ink-2);
  transition:background .14s;
}
.acct-item:hover{ background:var(--surface-2); }
.acct-item .ic{ color:var(--mute); }
.acct-item.is-danger{ color:var(--oxide); }
.acct-item.is-danger .ic{ color:var(--oxide); }
.acct-item.is-danger:hover{ background:var(--oxide-soft); }

/* ================= 录入面板 ================= */
.intake-form{ display:block; }
.seg-block{ display:flex; width:100%; margin-bottom:12px; }
.seg-block .seg-btn{ flex:1; justify-content:center; gap:5px; }
#intakeForm textarea{
  font-family:var(--mono);
  font-size:11.5px;
  letter-spacing:.045em;
  line-height:1.7;
}
.intake-preview{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin:2px 0 12px;
  min-height:40px;
}
.intake-count{ font-size:10.5px; color:var(--mute); }
.intake-count b{ font-size:12px; color:var(--ink); }
.intake-count .ok{ color:var(--teal); }
.sn-chips{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  max-height:92px;
  overflow:auto;
}
.sn-chip{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:1px 6px;
  border-radius:5px;
  border:1px solid var(--line-soft);
  background:var(--surface-2);
  font-size:10px;
  color:var(--ink-2);
  line-height:17px;
}
.sn-chip[data-ok="0"]{
  background:var(--oxide-soft);
  border-color:#E3C4C0;
  color:#8C332B;
  text-decoration:line-through;
}
.sn-chip i{ font-style:normal; font-size:9px; text-decoration:none; opacity:.9; }
.sn-more{ font-size:10px; color:var(--mute); align-self:center; }
.intake-empty{ font-size:11px; color:var(--mute-2); }
.intake-attrs{ display:flex; flex-direction:column; gap:10px; margin:12px 0; }

/* 照片识别 */
.ocr-panel{ display:flex; flex-direction:column; gap:9px; }
.ocr-actions{ display:flex; gap:6px; flex-wrap:wrap; }
.ocr-file{ position:relative; overflow:hidden; cursor:pointer; }
.ocr-drop{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:4px;
  padding:20px 12px;
  border:1px dashed var(--line-ink);
  border-radius:10px;
  background:var(--surface-2);
  text-align:center;
}
.ocr-drop p{ font-size:11.5px; color:var(--ink-3); }
.ocr-drop p.mono{ font-size:9.5px; color:var(--mute); }
.ocr-drop-ic{ color:var(--mute); margin-bottom:2px; }
.ocr-stage{
  border:1px solid var(--line);
  border-radius:10px;
  overflow:hidden;
  background:#141310;
}
.ocr-preview{ display:block; width:100%; height:auto; max-height:196px; object-fit:contain; }
.ocr-result{ display:flex; flex-direction:column; gap:4px; }
.ocr-result-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:10.5px;
  color:var(--mute);
}
.ocr-result-head b{ font-size:12px; color:var(--ink); }
.ocr-mini{ display:flex; gap:10px; }
.ocr-row{
  display:grid;
  grid-template-columns:15px minmax(0, 1fr) 32px;
  gap:8px;
  align-items:center;
  padding:3px 6px;
  border:1px solid var(--line-soft);
  border-radius:7px;
  background:var(--surface);
}
.ocr-row:focus-within{ border-color:var(--line-ink); }
.ocr-row input[type="checkbox"]{ width:14px; height:14px; accent-color:var(--amber-2); margin:0; }
.ocr-sn{
  width:100%;
  height:26px;
  border:1px solid transparent;
  border-radius:5px;
  background:none;
  font-family:var(--mono);
  font-size:11.5px;
  color:var(--ink);
  padding:0 4px;
}
.ocr-sn:focus{ border-color:var(--amber); background:var(--surface-2); outline:none; }
.ocr-score{ font-size:9.5px; color:var(--mute); text-align:right; }
.ocr-empty{ font-size:11px; line-height:1.55; color:var(--oxide); }
.linkbtn{ font-size:10.5px; color:var(--amber-2); padding:0 2px; }
.linkbtn:hover{ text-decoration:underline; }
.ic-xs{ width:12px; height:12px; }

/* ================= 多选与批量 ================= */
.c-check{ width:34px; }
.check-btn{
  display:grid; place-items:center;
  width:22px; height:22px;
  border-radius:5px;
  color:var(--mute);
  transition:background .14s, color .14s;
}
.check-btn:hover{ background:var(--surface-3); color:var(--ink); }
.check-wrap input{ width:14px; height:14px; accent-color:var(--amber-2); margin:0; display:block; }
tr.row.is-sel{ background:var(--amber-wash); }
tr.row.is-sel:hover{ background:#F8EDD8; }
.tbl-wafers{ min-width:960px; }

.batchbar{
  position:sticky;
  bottom:0;
  z-index:5;
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  padding:9px 14px;
  border-top:1px solid var(--line);
  background:rgba(250,251,251,.97);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  animation:fadeUp .22s var(--ease) both;
}
.batchbar-count{ font-size:11.5px; color:var(--ink-3); }
.batchbar-count b{ font-size:14px; color:var(--ink); margin-right:2px; }
.batchbar-sep{ width:1px; height:18px; background:var(--line); }
.batch-field{ display:flex; align-items:center; gap:5px; font-size:10px; color:var(--mute); }
.batch-clear{ margin-left:auto; }
.batch-confirm{ width:100%; }
.btn-xs{ height:24px; padding:0 8px; font-size:11px; border-radius:6px; }
.btn-xs .ic{ width:11px; height:11px; }
.btn-ghost{ border-color:transparent; color:var(--ink-3); }
.btn-ghost:hover{ background:var(--surface-3); }

.skip-list{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:3px;
  font-size:11px;
  color:var(--ink-3);
}
.skip-list li{ display:flex; gap:8px; }
.skip-list li .mono{ min-width:112px; color:var(--ink); }
.skip-list .more{ color:var(--mute); }

/* 分组标签 */
.lot-chip{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:0 6px;
  margin:1px 4px 1px 0;
  border-radius:4px;
  border:1px solid var(--line-soft);
  background:var(--surface-2);
  font-family:var(--mono);
  font-size:9.5px;
  line-height:16px;
  color:var(--ink-3);
}
.lot-chip i{ width:4px; height:4px; border-radius:50%; background:var(--line-ink); }
.lot-chip[data-hue="amber"] i{ background:#C4862A; }
.lot-chip[data-hue="teal"] i{ background:#4E8B7C; }
.lot-chip[data-hue="oxide"] i{ background:#A9504A; }
.lot-chip[data-hue="steel"] i{ background:#8A9AA0; }
.muted-inline{ font-size:10.5px; color:var(--mute-2); }

/* ================= 工序轨道：工序分组 + 子工序节点 ================= */
.rail-track{ padding:2px 0 4px; }
.rail-track .track-inner{
  display:flex;
  gap:10px;
  align-items:stretch;
  min-width:100%;
}
.stage-block{
  display:flex;
  flex-direction:column;
  min-width:0;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
  overflow:hidden;
  transition:border-color .18s, box-shadow .18s;
}
.stage-block[data-s="live"]{
  border-color:#E0BE86;
  box-shadow:0 0 0 3px rgba(196,134,42,.08);
}
.stage-block[data-s="done"]{ border-color:#C6DCD6; }
.stage-cap{
  display:flex;
  align-items:center;
  gap:6px;
  padding:6px 8px;
  border-bottom:1px solid var(--line-soft);
  background:var(--surface-2);
}
.stage-block[data-s="live"] .stage-cap{ background:var(--amber-wash); }
.stage-block[data-s="done"] .stage-cap{ background:var(--teal-soft); }
.stage-cap .stage-code{
  font-size:9.5px;
  padding:0 5px;
  border-radius:4px;
  background:var(--ink-3);
  color:#F4F7F7;
  line-height:16px;
  letter-spacing:.04em;
}
.stage-block[data-s="live"] .stage-cap .stage-code{ background:var(--amber); color:#231A08; }
.stage-block[data-s="done"] .stage-cap .stage-code{ background:var(--teal); color:#F3FAF8; }
.stage-name{
  font-size:10.5px;
  color:var(--ink-3);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.stage-count{ margin-left:auto; font-size:9px; color:var(--mute); }
.stage-ops{
  display:flex;
  align-items:stretch;
  padding:0 3px;
  flex:1;
}
.stage-empty{
  font-size:10px;
  color:var(--mute-2);
  padding:14px 10px;
  white-space:nowrap;
}
.op-node{
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  padding:0 5px;
  min-width:76px;
  flex:1;
  animation:fadeUp .35s var(--ease) backwards;
  animation-delay:calc(var(--i, 0) * 18ms);
}
.op-node::before{
  content:"";
  position:absolute;
  top:28px;
  left:0; right:0;
  height:1px;
  background-image:linear-gradient(90deg, var(--line-ink) 0 4px, transparent 4px 8px);
  background-size:8px 1px;
  background-repeat:repeat-x;
}
.op-node:first-child::before{ left:50%; }
.op-node:last-child::before{ right:50%; }
.op-node[data-s="done"]::before{
  background-image:linear-gradient(90deg, #BFD5CE 0, #BFD5CE 100%);
  background-size:auto;
}
.op-idx{
  height:12px;
  line-height:12px;
  margin-top:6px;
  font-size:9px;
  color:var(--mute-2);
}
.op-dot{
  position:relative;
  z-index:1;
  width:14px; height:14px;
  margin-top:3px;
  display:grid;
  place-items:center;
}
.op-dot > i{
  width:8px; height:8px;
  border-radius:50%;
  border:1.5px solid var(--line-ink);
  background:var(--surface);
  transition:background .2s, border-color .2s;
}
.op-node[data-s="done"] .op-dot > i{ background:#6FA396; border-color:#6FA396; }
.op-node[data-s="live"] .op-dot > i{ background:var(--amber); border-color:var(--amber); }
.op-node[data-s="live"] .op-dot::after{
  content:"";
  position:absolute;
  inset:-2px;
  border-radius:50%;
  border:1px solid var(--amber);
  animation:ping 2.6s var(--ease) infinite;
}
.op-node[data-s="queue"] .op-dot > i{ border-color:var(--ink-3); }
.op-node[data-s="hold"] .op-dot > i{ background:#C9B48A; border-color:#B29A69; }
.op-node[data-s="bad"] .op-dot > i{ background:var(--oxide); border-color:var(--oxide); }
.op-name{
  margin-top:6px;
  font-size:11px;
  line-height:1.3;
  color:var(--ink-2);
  max-width:100%;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  min-height:29px;
  word-break:break-all;
}
.op-node[data-s="todo"] .op-name{ color:var(--mute); }
.op-node[data-s="live"] .op-name{ color:var(--ink); font-weight:560; }
.op-type{
  margin-top:1px;
  font-style:normal;
  font-size:8.5px;
  color:var(--mute-2);
  letter-spacing:.02em;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.op-chips{
  display:flex;
  flex-wrap:wrap;
  gap:3px;
  justify-content:center;
  align-items:center;
  margin-top:5px;
  padding-bottom:6px;
  min-height:11px;
}
.track.is-dense .stage-block{ border-radius:8px; }
.track.is-dense .op-node{ min-width:62px; }
.track.is-dense .op-name{ font-size:10px; min-height:26px; }

/* 表格 / 记录里的阶段编号标签 */
.stepref b.stage-code{
  font-size:9.5px;
  padding:0 4px;
  border-radius:4px;
  background:var(--surface-3);
  color:var(--ink-2);
  line-height:15px;
  border:0;
  letter-spacing:.03em;
}
.stepref i.op-type{
  font-style:normal;
  font-size:9px;
  color:var(--mute);
  border:1px solid var(--line-soft);
  border-radius:3px;
  padding:0 3px;
  line-height:14px;
}
.stage-code{ font-family:var(--mono); }
.row-step .c-idx{ width:76px; }
.op-type-tag{
  font-style:normal;
  font-size:8.5px;
  color:var(--mute);
  margin-left:3px;
}
.rec-list{ list-style:none; margin:10px 0 0; padding:0; display:flex; flex-direction:column; gap:3px; }
.rec-row{
  display:grid;
  grid-template-columns:40px minmax(0, 1fr) minmax(0, 1.1fr) auto;
  gap:8px;
  align-items:center;
  padding:4px 6px;
  border:1px solid var(--line-soft);
  border-radius:6px;
  background:var(--surface-2);
  font-size:11px;
}
.rec-pos{ font-size:9.5px; color:var(--ink-3); }
.rec-name{ color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rec-val{ color:#8F5C18; background:var(--amber-wash); border:1px solid #EBD7B2; border-radius:4px; padding:0 5px; font-size:10px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rec-meta{ font-size:9px; color:var(--mute); white-space:nowrap; }
.op-rows{ display:flex; flex-direction:column; gap:5px; }
.op-row{
  display:grid;
  grid-template-columns:minmax(0, 1fr) 84px auto 26px;
  gap:6px;
  align-items:center;
}
.op-input{
  width:100%;
  height:30px;
  border:1px solid var(--line);
  border-radius:6px;
  padding:0 8px;
  font-size:12px;
  color:var(--ink);
  background:var(--surface);
}
.op-type{
  height:30px;
  border:1px solid var(--line);
  border-radius:6px;
  background:var(--surface);
  font-size:11px;
  color:var(--ink-2);
  padding:0 4px;
}
.load-stage{
  display:inline-block;
  margin-right:6px;
  font-size:9px;
  color:var(--mute);
  border:1px solid var(--line-soft);
  border-radius:3px;
  padding:0 3px;
}
.bay-stage-note{
  margin-top:10px;
  padding-top:9px;
  border-top:1px solid #302819;
  font-size:10px;
  color:#8B8172;
  letter-spacing:.02em;
}
.tbl-ledger .c-stage{ width:66px; }
.tbl-ledger .c-step .op-type{ border:0; color:#9AA7AC; font-size:9px; margin-left:4px; }
.tbl-ledger .c-data{ max-width:160px; }

/* ================= 子工序 ================= */
.node-meta{  margin-top:1px;
  font-size:8.5px;
  color:var(--mute-2);
  letter-spacing:.03em;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.node-ticks{ display:inline-flex; gap:2px; margin-top:4px; }
.node-ticks i{
  width:6px; height:2px;
  border-radius:1px;
  background:var(--line-ink);
  opacity:.45;
}
.node-ticks i[data-on="1"]{ background:var(--amber); opacity:1; }
.node[data-s="done"] .node-ticks i{ background:#6FA396; opacity:.8; }
.node[data-s="live"] .node-ticks i[data-on="1"]{ background:var(--amber); }
.node[data-s="todo"] .node-ticks i{ opacity:.3; }

.sub-chips{ display:flex; flex-wrap:wrap; gap:4px; }
.sub-chip{
  display:inline-flex;
  align-items:center;
  gap:3px;
  padding:0 5px;
  border-radius:4px;
  border:1px solid var(--line-soft);
  background:var(--surface-2);
  font-size:10px;
  color:var(--ink-3);
  line-height:17px;
}
.sub-chip i{ font-style:normal; font-size:8.5px; color:var(--mute); }
.sub-list{ display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; align-items:center; }
.sub-item{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:3px 8px;
  border-radius:6px;
  border:1px dashed var(--line-ink);
  font-size:11px;
  color:var(--mute);
}
.sub-item i{ font-style:normal; font-size:9px; }
.sub-item[data-on="1"]{
  border-style:solid;
  border-color:var(--amber);
  background:var(--amber-wash);
  color:#8F5C18;
}
.sub-editor{ display:flex; flex-direction:column; gap:6px; }
.sub-editor-head{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.sub-rows{ display:flex; flex-direction:column; gap:5px; }
.sub-row{ display:grid; grid-template-columns:14px minmax(0, 1fr) auto 26px; gap:6px; align-items:center; }
.sub-rec{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:0 6px;
  height:30px;
  border:1px solid var(--line);
  border-radius:6px;
  font-size:10px;
  color:var(--mute);
  cursor:pointer;
  user-select:none;
  white-space:nowrap;
  transition:border-color .14s, background .14s, color .14s;
}
.sub-rec input{ width:12px; height:12px; margin:0; accent-color:var(--amber-2); }
.sub-rec:has(input:checked){
  border-color:#E3C68D;
  background:var(--amber-wash);
  color:#8F5C18;
  font-weight:560;
}
.check-field{
  display:flex;
  align-items:center;
  gap:6px;
  align-self:end;
  height:36px;
  padding:0 10px;
  border:1px solid var(--line);
  border-radius:8px;
  font-size:11px;
  color:var(--ink-3);
  background:var(--surface);
  cursor:pointer;
  white-space:nowrap;
}
.check-field input{ width:13px; height:13px; margin:0; accent-color:var(--amber-2); }
.sub-chip[data-rec="1"]{
  border-color:#E3C68D;
  background:var(--amber-wash);
  color:#8F5C18;
}
.rec-dot{
  width:4px; height:4px;
  border-radius:50%;
  background:var(--amber);
  margin-left:2px;
}
.sub-val{
  font-size:9.5px;
  color:var(--ink-2);
  border:1px solid var(--line);
  border-radius:3px;
  padding:0 4px;
  background:var(--surface);
}
.sub-item[data-on="1"] .sub-val{ border-color:#E3C68D; color:#8F5C18; }
.sub-need{ font-size:9px; color:var(--amber-2); letter-spacing:.02em; }
.trace-data{
  align-self:flex-start;
  font-size:10px;
  color:#8F5C18;
  background:var(--amber-wash);
  border:1px solid #EBD7B2;
  border-radius:4px;
  padding:0 6px;
  line-height:17px;
}
.bay-data{ grid-column:span 2; margin-top:9px; }
.bay-data[data-need="1"] > span{ color:var(--amber); }
.bay-data[data-need="1"] input{ border-color:#5A4A2C; }
.bay-data[data-need="1"] input:focus{ border-color:var(--amber); }
.bay-data[data-need="1"] input::placeholder{ color:#7A6A4E; }
.tbl-ledger .c-data{ font-size:11px; color:var(--ink-2); max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sub-drag{ font-size:9px; color:var(--mute-2); letter-spacing:-2px; text-align:center; }
.sub-input{
  width:100%;
  height:30px;
  border:1px solid var(--line);
  border-radius:6px;
  padding:0 8px;
  font-size:12px;
  color:var(--ink);
  background:var(--surface);
}
.trace-sub{
  font-size:9.5px;
  color:var(--mute);
  border:1px solid var(--line);
  border-radius:4px;
  padding:0 4px;
  line-height:15px;
}
.c-sub{ font-size:10.5px; color:var(--mute); }
.stepref-sub{
  font-style:normal;
  font-size:9px;
  color:var(--mute);
  border:1px solid var(--line-soft);
  border-radius:3px;
  padding:0 3px;
}

/* ================= 流转台批量 ================= */
.bay-modes{
  display:inline-flex;
  gap:2px;
  padding:3px;
  border-radius:9px;
  border:1px solid #332C1D;
  background:rgba(255,255,255,.04);
  margin-bottom:14px;
}
.bay-mode{
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:26px;
  padding:0 13px;
  border-radius:6px;
  font-size:11.5px;
  color:#9C9180;
  transition:background .16s, color .16s;
}
.bay-mode:hover{ color:#EDE3D2; }
.bay-mode.is-on{ background:var(--amber); color:#1A1508; font-weight:600; }
.bay-mode .mono{ font-size:9.5px; opacity:.85; }

.bay-picker{
  display:flex;
  flex-direction:column;
  gap:8px;
  padding:10px;
  margin-bottom:14px;
  border:1px solid #332C1D;
  border-radius:11px;
  background:rgba(255,255,255,.018);
}
.bay-picker-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.bay-search{ min-width:190px; background:#100E09; border-color:#3A3222; }
.bay-search input{ background:none; color:#EDE3D2; }
.bay-search input::placeholder{ color:#6B6252; }
.bay-search .ic{ color:#7E7362; }
.bay-picker-acts{ display:flex; align-items:center; gap:10px; font-size:10px; color:#8B8172; }
.pick-list{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));
  gap:4px;
  max-height:170px;
  overflow:auto;
}
.pick-row{
  display:grid;
  grid-template-columns:14px minmax(0, .85fr) minmax(0, 1fr) auto;
  gap:8px;
  align-items:center;
  padding:5px 7px;
  border:1px solid #2E281A;
  border-radius:6px;
  background:rgba(255,255,255,.012);
  cursor:pointer;
}
.pick-row:hover{ border-color:#4A3E28; }
.pick-row.is-on{ border-color:rgba(196,134,42,.6); background:rgba(196,134,42,.1); }
.pick-row input{ width:13px; height:13px; accent-color:var(--amber); margin:0; }
.pick-sn{ font-size:10.5px; color:#EDE3D2; overflow:hidden; text-overflow:ellipsis; }
.pick-step{
  font-size:9.5px;
  color:#8B8172;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.bay-lot-pick{ flex-direction:row; align-items:center; gap:8px; }
.bay-lot-pick > span{ font-size:9.5px; color:#8B8172; white-space:nowrap; }
.bay-lot-pick select{
  height:30px;
  min-width:210px;
  border-radius:7px;
  border:1px solid #3A3222;
  background:#100E09;
  color:#EDE3D2;
  font-size:11.5px;
  padding:0 8px;
}
.lot-peek{ display:flex; flex-wrap:wrap; gap:4px; max-height:76px; overflow:auto; }
.peek-chip{
  font-size:9.5px;
  padding:1px 6px;
  border-radius:4px;
  border:1px solid #38301F;
  color:#C9BFA9;
}
.peek-chip[data-tone="live"]{ border-color:#4E3C1F; color:#E9C47F; }
.peek-chip[data-tone="warn"]{ border-color:#5A4A2C; color:#D9C6A0; }
.peek-chip[data-tone="ok"]{ border-color:#354C46; color:#A9C7BE; }
.peek-chip[data-tone="bad"]{ border-color:#4E2B26; color:#E0A7A1; }
.batch-mix{ margin-top:12px; padding-top:11px; border-top:1px solid #302819; }
.batch-mix-row{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
  font-size:10.5px;
  color:#9C9180;
}
.batch-mix-row b{ color:#EDE3D2; }
.batch-mix-row .chip-dot{ margin-left:9px; }
.batch-mix-row .chip-dot:first-child{ margin-left:0; }
.batch-steps{ display:flex; flex-wrap:wrap; gap:4px; margin-top:10px; max-height:64px; overflow:auto; }
.bay-perm{ display:flex; align-items:center; gap:5px; margin-top:9px; font-size:9.5px; color:#8B8172; }
.bay-note{ margin-top:9px; }
.bay-skip{ margin-top:10px; padding-top:10px; border-top:1px solid #302819; }
.bay-skip .skip-list{ color:#C9BFA9; }
.bay-skip .skip-list li .mono{ color:#9C9180; }
.pv-sub{
  font-size:9.5px;
  color:#9C9180;
  border:1px solid #3A3222;
  border-radius:3px;
  padding:0 4px;
}

.target-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(210px, 1fr));
  gap:6px;
}
.target-chip{
  display:flex;
  align-items:center;
  gap:8px;
  padding:6px 9px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--surface-2);
  text-align:left;
  transition:border-color .14s, background .14s;
}
.target-chip:hover{ border-color:var(--line-ink); background:var(--surface); }
.target-sn{ font-size:10.5px; color:var(--ink); }
.target-step{
  margin-right:auto;
  font-size:9.5px;
  color:var(--mute);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

/* ================= 账户管理 ================= */
.tbl-users{ min-width:780px; }
.c-user{ min-width:180px; }
.c-role{ width:96px; }
.c-state{ width:88px; }
.c-ref{ width:70px; text-align:right; font-size:11px; color:var(--ink-3); }
.user-cell{ display:flex; align-items:center; gap:9px; }
.user-avatar{
  width:28px; height:28px;
  border-radius:50%;
  display:grid; place-items:center;
  font-size:10px;
  background:var(--surface-3);
  color:var(--ink-3);
  flex:none;
}
.user-avatar[data-role="admin"]{ background:var(--ink); color:#F4EAD8; }
.user-text{ display:flex; flex-direction:column; line-height:1.25; }
.user-text b{ font-size:12.5px; font-weight:560; color:var(--ink); }
.user-text span{ font-size:9.5px; color:var(--mute); }
.tag-self{
  font-style:normal;
  font-size:9px;
  margin-left:5px;
  padding:0 4px;
  border-radius:3px;
  border:1px solid #EBD7B2;
  background:var(--amber-wash);
  color:#8F5C18;
  vertical-align:1px;
}
.inline-confirm{ display:inline-flex; gap:4px; }
.row-static{ cursor:default; }
.row-static:hover{ background:transparent; }

.policy-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.policy-col{
  border:1px solid var(--line);
  border-radius:10px;
  padding:12px 14px;
  background:var(--surface-2);
}
.policy-col[data-role="admin"]{ background:var(--amber-wash); border-color:#EBD7B2; }
.policy-head{
  display:flex;
  align-items:center;
  gap:6px;
  margin-bottom:6px;
  font-size:12px;
  font-weight:600;
  color:var(--ink);
}
.policy-col[data-role="admin"] .policy-head{ color:#8F5C18; }
.policy-col ul{ margin:0; padding-left:14px; display:flex; flex-direction:column; gap:3px; }
.policy-col li{ font-size:11px; line-height:1.55; color:var(--ink-3); }

/* ================= 响应式 ================= */
@media (max-width:1024px){
  .auth-screen{ grid-template-columns:1fr; }
  .auth-art{ padding:28px 24px; gap:16px; }
  .auth-art-foot{ justify-content:flex-start; }
  .auth-wafer-svg{ width:150px; }
  .auth-panel{ border-left:0; border-top:1px solid var(--line); padding:28px 24px 40px; }
  .auth-headline{ font-size:22px; max-width:32ch; }
}
@media (max-width:880px){
  .batchbar{ position:static; }
  .batch-clear{ margin-left:0; }
  .pick-list{ grid-template-columns:1fr; }
  .policy-grid{ grid-template-columns:1fr; }
  .auth-facts{ grid-template-columns:1fr 1fr; }
  .acct-main{ display:none; }
  .acct-btn{ padding:0 6px; }
}
@media (max-width:560px){
  .demo-list{ grid-template-columns:1fr; }
  .ocr-result-head{ flex-wrap:wrap; }
  .bay-mode{ padding:0 9px; font-size:11px; }
  .target-grid{ grid-template-columns:1fr; }
}
