/* =========================================================
   WAFER FLOW · 统一层
   加载在 app.css / components.css 之后：
   一套容器、间距、控件高度与状态色，覆盖前面的散装规则
   ========================================================= */

/* ---------- 0. hidden 必须真的隐藏（布局类用了 display 会盖掉 UA 规则） ---------- */
[hidden]{ display:none !important; }

/* ---------- 1. 栅格与容器间距（全站唯一一套） ---------- */
.view{ max-width:1560px; }
.layout-side{
  display:grid;
  grid-template-columns:330px minmax(0, 1fr);
  gap:16px;
  align-items:start;
}
.col-side{ min-width:0; }
.col-side > * + *{ margin-top:16px; }
.view > .block + .block,
.view > * + .block{ margin-top:16px; }
.view > .kpi-strip + .block{ margin-top:16px; }

.block{ background:var(--surface); border:1px solid var(--line); border-radius:12px; }
.block-head{ min-height:52px; padding:12px 16px; gap:12px; }
.block-body{ padding:16px; }
.block-flush{ padding:0; }
.block-foot{ padding:10px 16px; }

/* 一个容器内的分段：用线隔开，不再堆多个容器 */
.panel-seg + .panel-seg{ border-top:1px solid var(--line); }
.segs-3{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); }
.segs-3 > .panel-seg + .panel-seg{ border-top:0; border-left:1px solid var(--line); }
.segs-3 .block-head{ min-height:48px; padding:11px 14px; }
.segs-3 .alert-row,
.segs-3 .load-row,
.segs-3 .stream-row{ padding-left:14px; padding-right:14px; }

/* ---------- 2. 工具栏：所有控件同高同基线 ---------- */
.toolbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.toolbar > *{ flex:none; }
.toolbar .search,
.toolbar .mini-select,
.toolbar .btn{ height:32px; }
.toolbar .search{ display:inline-flex; align-items:center; padding:0 10px; }
.toolbar .search input{ height:30px; line-height:30px; }
.toolbar .seg{ display:inline-flex; align-items:center; height:32px; padding:3px; }
.toolbar .seg-btn{ height:26px; line-height:26px; }
.toolbar .toggle{ height:32px; display:inline-flex; align-items:center; }
.block-head-filter{ align-items:center; }
.block-head-aside{ display:flex; align-items:center; gap:10px; flex:none; }

/* ---------- 3. 表格 ---------- */
.tbl th{ height:38px; padding:0 12px; }
.tbl tbody td{ padding:10px 12px; }
.tbl-wafers{ min-width:1000px; }
.tbl-wafers .c-step{ min-width:200px; }
.tbl-wafers .stepref i.op-type{ display:none; }
.tbl-wafers .stepref span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tbl-ledger{ min-width:940px; }
.tbl-ledger .c-stage{ width:70px; }
.tbl-ledger .c-data{ max-width:160px; }
.tbl-ledger .c-step .op-type{ border:0; color:var(--mute); font-size:9px; margin-left:4px; }
.tbl-steps .c-idx{ width:82px; }
.tbl-users{ min-width:780px; }
.c-time, .stream-time{ color:var(--ink-3); }
.sn-wrap{ display:inline-flex; align-items:center; gap:6px; }
.sn-wrap .tag-hot{ margin-left:0; }

/* 贴边表格：首末列与容器标题同一条竖线 */
.block-flush .tbl th:first-child,
.block-flush .tbl td:first-child{ padding-left:16px; }
.block-flush .tbl th:last-child,
.block-flush .tbl td:last-child{ padding-right:16px; }

/* 账户表：列宽固定，别把空白都堆在姓名列 */
.tbl-users{ table-layout:fixed; }
.tbl-users .c-user{ width:32%; min-width:0; }
.tbl-users .c-role{ width:92px; }
.tbl-users .c-state{ width:84px; }
.tbl-users .c-ref{ width:74px; text-align:left; }
.tbl-users .c-time{ width:132px; }
.tbl-users .c-ops{ width:198px; }
.tbl-users .c-ops .btn + .btn{ margin-left:6px; }
.tbl-users .user-text{ min-width:0; }
.tbl-users .user-text b, .tbl-users .user-text span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* 表格内的按钮按中线对齐：带图标的按钮否则会被基线抬高 */
.tbl .btn{ vertical-align:middle; }

/* 删除类按钮平时低调，悬停才转红 */
.btn-danger-ghost{ border-color:var(--line); color:var(--ink-3); }
.btn-danger-ghost:hover{ border-color:#E0C2BF; color:var(--oxide); background:var(--oxide-soft); }

/* 角色分工说明：小字用更实的墨色，避免发蓝 */
.policy-col li{ color:var(--ink-2); }

/* ---------- 4. 分页 ---------- */
.pager{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 16px;
  border-top:1px solid var(--line-soft);
  background:var(--surface-2);
  border-radius:0 0 11px 11px;
  flex-wrap:wrap;
}
.pager-info{ font-size:10.5px; color:var(--mute); }
.pager-btns{ display:flex; align-items:center; gap:3px; }
.pager-btn{
  min-width:26px; height:26px;
  padding:0 6px;
  border:1px solid var(--line);
  border-radius:6px;
  background:var(--surface);
  font-family:var(--mono);
  font-size:11px;
  color:var(--ink-3);
  transition:background .14s, border-color .14s, color .14s;
}
.pager-btn:hover{ border-color:var(--line-ink); color:var(--ink); }
.pager-btn.is-on{ background:var(--ink); border-color:var(--ink); color:#F4F7F7; }
.pager-btn[disabled]{ opacity:.4; cursor:not-allowed; }
.pager-gap{ font-size:11px; color:var(--mute); padding:0 2px; }
.mini-pager{ display:inline-flex; align-items:center; gap:4px; }
.mini-pager-info{ font-size:10px; color:var(--mute); min-width:34px; text-align:center; }
.mini-pager .pager-btn{ height:24px; min-width:24px; }

/* ---------- 5. 工序轨道（工序卡片 + 子工序节点） ---------- */
.rail-track .track-inner{ display:flex; gap:10px; align-items:stretch; min-width:100%; }
.stage-block{
  flex:calc(var(--ops, 1) + 1.15) 1 0;
  min-width:150px;
  display:flex;
  flex-direction:column;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
  overflow:hidden;
}
.stage-block[data-s="live"]{ border-color:#DFC08A; box-shadow:0 0 0 3px rgba(196,134,42,.08); }
.stage-block[data-s="done"]{ border-color:#C6DCD6; }
.stage-block[data-s="hold"]{ border-color:#C6CFD1; }
.stage-cap{
  display:flex; align-items:center; gap:6px;
  padding:7px 9px;
  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:#E5EFEC; }
.stage-block[data-s="hold"] .stage-cap{ background:#EEF1F2; }
.stage-cap .stage-code{
  font-size:9.5px; padding:0 5px; border-radius:4px;
  background:var(--surface-3); color:var(--ink-2); line-height:16px;
}
.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-soft); color:#215C51; }
.stage-block[data-s="hold"] .stage-cap .stage-code{ background:#DFE4E6; color:#4C585D; }
.stage-name{ font-size:10.5px; color:var(--ink-2); 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:flex-start; flex:1; padding:0 3px; }
.op-node{
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  flex:1;
  min-width:0;
  padding:0 6px 14px;
}
.op-node:first-child{ padding-left:9px; }
.op-node:last-child{ padding-right:9px; }
.op-node::before{
  content:"";
  position:absolute;
  top:28px; left:0; right:0;
  height:1px;
  background-image:linear-gradient(90deg, #AEB9BD 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, #93BDB2 0, #93BDB2 100%); background-size:auto; }
.op-idx{ height:12px; line-height:12px; margin-top:7px; 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); }
.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="todo"] .op-dot > i{ border-color:#8E9BA0; }
.op-node[data-s="queue"] .op-dot > i{ border-color:var(--ink-3); }
.op-node[data-s="hold"] .op-dot > i{ background:#A9B5B9; border-color:#95A2A7; }
.op-node[data-s="bad"] .op-dot > i{ background:var(--oxide); border-color:var(--oxide); }
.op-name{
  margin-top:7px;
  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{
  display:inline-flex; align-items:center; justify-content:center; gap:3px;
  margin-top:3px;
  min-height:12px;
  font-style:normal;
  font-size:9px;
  color:var(--mute);
  max-width:100%;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.op-type .rec-dot{ width:4px; height:4px; margin:0; }
.op-chips{ display:flex; flex-wrap:wrap; gap:3px; justify-content:center; align-items:center; margin-top:6px; min-height:10px; }
.wchip{ width:9px; height:9px; border-radius:50%; flex:none; }
.wchip[data-tone="live"]{ background:#C9862D; }
.wchip[data-tone="idle"]{ background:#C4CDD0; }
.wchip[data-tone="warn"]{ background:#A9B5B9; }
.wchip[data-tone="ok"]{ background:#5F9B8C; }
.wchip[data-tone="bad"]{ background:#A9504A; }
.wmore{ font-size:9px; color:var(--ink-3); }
.rail-legend{ display:flex; align-items:center; gap:16px; padding:10px 14px 0; font-size:10.5px; color:var(--mute); flex-wrap:wrap; }
.rail-legend .lg{ display:inline-flex; align-items:center; gap:6px; }
.rail-legend .lg-note{ margin-left:auto; color:var(--mute-2); font-size:10px; }

/* ---------- 6. 子工序 chips / 行内编辑控件 ---------- */
.sub-chips{ display:flex; flex-wrap:wrap; gap:5px; }
.sub-chip{
  display:inline-flex; align-items:center; gap:5px;
  height:21px; padding:0 7px;
  border:1px solid var(--line); border-radius:5px;
  background:var(--surface);
  color:var(--ink-2);
  font-size:10.5px;
  white-space:nowrap;
}
.sub-chip .mono{ font-size:9px; color:var(--mute); }
.sub-chip .op-type-tag{ font-style:normal; font-size:9.5px; color:#5C6A70; }
.sub-chip[data-rec="1"]{ border-color:#DFC08A; background:var(--amber-wash); color:#83541A; }
.rec-dot{ width:4px; height:4px; border-radius:50%; background:var(--amber); flex:none; }
.addstep-foot{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:12px; flex-wrap:wrap; }
.addstep-grid{ display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:10px; align-items:end; }
.check-field{
  display:inline-flex; align-items:center; gap:6px;
  height:34px; padding:0 10px;
  border:1px solid var(--line); border-radius:8px;
  background:var(--surface); font-size:11px; color:var(--ink-3);
  cursor:pointer; white-space:nowrap;
}
.check-field input{ width:13px; height:13px; margin:0; accent-color:var(--amber-2); }
.check-field:has(input:checked){ border-color:#DFC08A; background:var(--amber-wash); color:#83541A; }
.check-row{ display:flex; flex-wrap:wrap; gap:8px; }
/* 表单纵向堆叠时，勾选项靠左，不要被 components.css 的 align-self:end 推到右边 */
.stack > .check-field,
.stack > .check-row,
.check-row > .check-field{ align-self:flex-start; }
.check-row + .field-help, .check-field + .field-help{ margin-top:8px; }

.op-rows{ display:flex; flex-direction:column; gap:6px; }
.op-row{ display:grid; grid-template-columns:minmax(0, 1fr) 92px auto 26px; gap:6px; align-items:center; }
.op-input{
  width:100%; height:32px;
  border:1px solid var(--line-ink); border-radius:8px;
  background:#FCFDFD; padding:0 10px;
  font-size:12.5px; color:var(--ink);
}
.op-type-sel{
  width:100%; height:32px;
  border:1px solid var(--line-ink); border-radius:8px;
  background:#FCFDFD; padding:0 6px;
  font-size:12px; color:var(--ink-2);
}
.sub-rec{
  display:inline-flex; align-items:center; gap:4px;
  height:32px; padding:0 8px;
  border:1px solid var(--line); border-radius:8px;
  font-size:10.5px; color:var(--mute);
  cursor:pointer; user-select:none; white-space:nowrap;
}
.sub-rec input{ width:12px; height:12px; margin:0; accent-color:var(--amber-2); }
.sub-rec:has(input:checked){ border-color:#DFC08A; background:var(--amber-wash); color:#83541A; }

/* ---------- 7. 表单控件 ---------- */
.field input, .field select, .field textarea,
.inline-field select, .mini-select, .search, .field-scan .scanbox{
  border-color:var(--line-ink);
  background:#FCFDFD;
}
.field input, .field select{ height:34px; }
.field textarea{ padding:10px 11px; line-height:1.65; }
#intakeForm textarea{ padding:11px 12px; }
.field input:focus, .field select:focus, .field textarea:focus{
  border-color:var(--amber);
  background:var(--surface);
  box-shadow:0 0 0 3px rgba(196,134,42,.13);
}
.field-row{ gap:10px; }

.intake-submit-bar{
  margin:16px -16px -16px -16px;
  padding:14px 16px 16px;
  border-top:1px solid var(--line);
  background:var(--surface-2);
  border-radius:0 0 11px 11px;
}
.intake-submit-bar .btn-block{ height:42px; }

/* ---------- 8. 状态色 ---------- */
.chip[data-tone="idle"]{ background:#EDF0F1; color:#3D4A50; border-color:#CBD4D6; }
.chip[data-tone="ok"]{ background:#D8E7E2; color:#174F45; border-color:#B7CFC8; }
.chip[data-tone="bad"]{ background:#EFDFDD; color:#7A2C26; border-color:#DCBFBB; }
.chip[data-tone="live"]{ background:#F9EFD9; color:#7F5316; border-color:#E5CB9E; }
.chip[data-tone="warn"]{ background:#ECF0F1; color:#3F4D53; border-color:#BFC9CC; border-style:dashed; }
.act[data-tone="bad"]{ background:#EFDFDD; color:#7A2C26; border-color:#DCBFBB; }
.act[data-tone="warn"]{ background:#F3EDDE; color:#6F5A31; border-color:#D8C9A6; }
.alert-flag[data-tone="warn"]{ background:#ECF0F1; color:#3F4D53; border-color:#BFC9CC; }
.lotbar i[data-tone="warn"]{ background:#A9B5B9; }
.alert-row{ padding:10px 16px; grid-template-columns:46px minmax(0, 1fr) auto 13px; gap:11px; }
.load-bar i{ background:linear-gradient(90deg, #CDA263, #BE8434); }
.load-stage, .load-pos{
  display:inline-block; margin-right:6px;
  font-size:9px; color:var(--mute);
  border:1px solid var(--line-soft); border-radius:3px; padding:0 3px;
}
.load-row{ grid-template-columns:minmax(0, 1fr) 1fr 26px; }

/* ---------- 9. 流转操作台：浅色卡片 + 一张深色身份卡 ---------- */
.bay{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:12px;
  padding:0;
  box-shadow:none;
  margin-bottom:16px;
  overflow:hidden;
}
.bay::before{ display:none; }
.bay-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:20px;
  padding:14px 16px;
  margin:0;
  border-bottom:1px solid var(--line);
}
.bay-eyebrow{ color:var(--mute); }
.bay-title{ color:var(--ink); font-size:16px; margin-top:4px; }
.bay-hint{ color:var(--mute); font-size:11px; max-width:46ch; }
.bay-hint .mono{ color:var(--ink-2); }

.bay-modes{
  display:inline-flex;
  gap:2px;
  margin:14px 16px 0;
  padding:3px;
  border:0;
  border-radius:9px;
  background:var(--surface-3);
}
.bay-mode{ height:26px; padding:0 13px; border-radius:6px; font-size:11.5px; color:var(--ink-3); }
.bay-mode:hover{ color:var(--ink); }
.bay-mode.is-on{
  background:var(--surface);
  color:var(--ink);
  font-weight:560;
  box-shadow:0 1px 3px rgba(16,22,25,.08);
}
.bay-mode .mono{ font-size:9.5px; color:var(--mute); }

.bay-top{ padding:12px 16px 0; gap:14px; }
.bay-scan{
  height:40px;
  border:1px solid var(--line-ink);
  border-radius:9px;
  background:#FCFDFD;
}
.bay-scan-mark{ color:var(--mute); }
.bay-scan input{ color:var(--ink); font-size:13px; }
.bay-scan input::placeholder{ color:var(--mute-2); }
.bay-scan-go{ height:28px; background:var(--ink); color:#F4F7F7; }
.bay-quick-label{ color:var(--mute-2); }
.bay-quick-chip{
  border:1px solid var(--line);
  background:var(--surface-2);
  color:var(--ink-3);
}
.bay-quick-chip:hover{ border-color:var(--line-ink); color:var(--ink); }
.bay-quick-chip.is-on{ border-color:var(--amber); background:var(--amber-wash); color:#83541A; }

.bay-picker{
  margin:12px 16px 0;
  padding:11px 12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface-2);
}
.bay-search{ background:var(--surface); border-color:var(--line-ink); }
.bay-search input{ color:var(--ink); }
.bay-search input::placeholder{ color:var(--mute-2); }
.bay-search .ic{ color:var(--mute); }
.bay-picker-acts{ color:var(--mute); }
.linkbtn{ color:var(--amber-2); }
.pick-row{
  border:1px solid var(--line);
  background:var(--surface);
}
.pick-row:hover{ border-color:var(--line-ink); }
.pick-row.is-on{ border-color:var(--amber); background:var(--amber-wash); }
.pick-sn{ color:var(--ink); }
.pick-step{ color:var(--mute); }
.peek-chip{ border:1px solid var(--line); color:var(--ink-3); background:var(--surface); }
.bay-lot-pick > span{ color:var(--mute); }
.bay-lot-pick select{ background:var(--surface); border-color:var(--line-ink); color:var(--ink); }

.bay-grid{ padding:14px 16px 16px; gap:14px; align-items:stretch; }

/* 唯一的深色块：身份卡 */
.bay-id{
  padding:14px 15px 15px;
  border:1px solid #2C3136;
  border-radius:11px;
  background:linear-gradient(180deg, #23272B 0%, #1A1D21 100%);
}
.bay-id .bay-id-label{ color:#98A2A8; }
.bay-id .bay-sn{ color:#F4F6F7; }
.bay-id .bay-proc{ color:#B6C0C6; }
.bay-id .bay-auto{ margin-top:5px; font-size:10px; color:#D6BA85; letter-spacing:.03em; }
.bay-id .bay-op{ border-top-color:#3A4046; }
.bay-id .bay-op-idx{ color:var(--amber); }
.bay-id .bay-op-main b{ color:#EAEDEF; }
.bay-id .bay-op-main span{ color:#B6C0C6; }
.bay-id .bay-op-note{ border-top-color:#3A4046; color:#A3ADB3; }
.bay-id .bay-link{ color:#B6C0C6; }
.bay-id .bay-link:hover{ color:var(--amber); }
.bay-id .chip[data-tone="live"]{ background:rgba(196,134,42,.18); color:#EBC780; border-color:#5A4520; }
.bay-id .chip[data-tone="idle"]{ background:rgba(255,255,255,.08); color:#C0C9CE; border-color:#4A5259; }
.bay-id .chip[data-tone="warn"]{ background:rgba(214,222,224,.12); color:#CFD7DA; border-color:#55606A; border-style:dashed; }
.bay-id .chip[data-tone="ok"]{ background:rgba(78,139,124,.18); color:#AFCDC5; border-color:#3F5852; }
.bay-id .chip[data-tone="bad"]{ background:rgba(169,80,74,.18); color:#E3ACA6; border-color:#5A332D; }
.bay-id .bay-flag[data-tone="ok"]{ color:#AFCDC5; border-color:#3F5852; background:rgba(78,139,124,.12); }
.bay-id .bay-flag[data-tone="warn"]{ color:#E6C383; border-color:#5A4520; background:rgba(196,134,42,.12); }
.bay-id .bay-flag[data-tone="bad"]{ color:#E3ACA6; border-color:#5A332D; background:rgba(169,80,74,.14); }
.bay-id .batch-mix-row{ color:#A3ADB3; }
.bay-id .batch-mix-row b{ color:#EAEDEF; }

/* 动作与表单：浅色，与全站一致 */
.bay-actions,
.bay-form{ padding:13px 14px 14px; border:1px solid var(--line); border-radius:11px; background:var(--surface); }
.bay-id-label{ color:var(--mute); }
.act-btn{
  border:1px solid var(--line);
  background:var(--surface);
}
.act-btn:hover{ background:var(--surface-2); border-color:var(--line-ink); }
.act-btn .act-ic{ border-color:var(--line); color:var(--ink-3); }
.act-btn .act-text b{ color:var(--ink); }
.act-btn .act-text i{ color:var(--mute); }
.act-btn[aria-pressed="true"]{
  border-color:var(--amber);
  background:var(--amber-wash);
  box-shadow:none;
}
.act-btn[aria-pressed="true"] .act-ic{ border-color:#DFC08A; color:var(--amber-2); }
.act-btn[aria-pressed="true"] .act-text b{ color:#83541A; }
.act-btn[data-locked="1"]{ background:var(--surface-2); border-color:var(--line); opacity:.75; cursor:not-allowed; }
.act-btn[data-locked="1"] .act-ic{ opacity:.45; }
.act-btn[data-locked="1"] .act-text b{ color:var(--mute); }
.act-btn[data-locked="1"] .act-text i{ color:var(--mute-2); }
.bay-perm{ color:var(--mute); }

.bay-field > span{ color:var(--mute); }
.bay-field input, .bay-field select{
  background:#FCFDFD;
  border-color:var(--line-ink);
  color:var(--ink);
}
.bay-field input::placeholder{ color:var(--mute-2); }
.bay-field input:focus, .bay-field select:focus{
  border-color:var(--amber);
  box-shadow:0 0 0 3px rgba(196,134,42,.13);
  background:var(--surface);
}
.bay-submit{ background:var(--amber); color:#1A1508; }
.bay-submit[disabled]{ background:var(--surface-3); color:var(--mute-2); }
.bay-err{ background:var(--oxide-soft); border:1px solid #E3C4C0; color:#7A2C26; }
.bay-preview{
  display:flex;
  align-items:center;
  gap:11px;
  flex-wrap:wrap;
  margin-top:0;
  padding:12px 16px 14px;
  border-top:1px solid var(--line);
}
.bay-preview .bay-id-label{ margin-bottom:0; }
.pv-item b{ color:var(--ink); }
.pv-item > span:not(.chip){ color:var(--ink-2); }
.pv-k{ color:var(--mute); }
.pv-note{ color:var(--mute); }
.pv-arrow{ color:var(--mute-2); }
.bay-skip{ margin-top:0; padding:12px 16px 14px; border-top:1px solid var(--line); }
.bay-skip .skip-list{ color:var(--ink-3); }
.bay-skip .skip-list li .mono{ color:var(--ink); }
.bay-empty{ padding:34px 16px 26px; }
.bay-target{ border-color:var(--line-ink); color:var(--mute); }
.bay-target i{ background:linear-gradient(90deg, transparent, var(--amber), transparent); }
.bay-empty-title{ color:var(--ink); }
.bay-empty-desc{ color:var(--mute); }

/* ---------- 10. 抽屉：当前工序 + 工序进度 ---------- */
.flow-now{
  margin-top:10px;
  padding:12px 13px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface-2);
}
.flow-now-top{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.flow-now-name{ font-size:14px; font-weight:600; color:var(--ink); }
.flow-progress{
  position:relative;
  height:6px;
  margin:12px 0 8px;
  border-radius:3px;
  background:#DDE3E4;
  overflow:hidden;
}
.flow-progress i{
  display:block;
  height:100%;
  width:100%;
  min-width:6px;
  transform-origin:left center;
  transform:scaleX(var(--p, 0.02));
  background:var(--amber);
  border-radius:3px;
}
.flow-meta{ font-size:10.5px; color:var(--mute); }
.flow-neighbor{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:10px;
  font-size:11px;
  color:var(--mute);
}
.flow-neighbor b{ color:var(--ink-2); font-weight:600; }
.stage-rows{ list-style:none; margin:10px 0 0; padding:0; display:flex; flex-direction:column; }
.stage-rows li{
  display:grid;
  grid-template-columns:48px minmax(0, 1fr) auto;
  gap:10px;
  align-items:center;
  padding:7px 2px;
  border-top:1px solid var(--line-soft);
  font-size:11.5px;
  color:var(--mute);
}
.stage-rows li:first-child{ border-top:0; }
.stage-rows li .stage-code{
  font-size:9.5px; padding:0 5px; border-radius:4px; text-align:center;
  background:var(--surface-3); color:var(--ink-3); line-height:16px;
}
.stage-rows li[data-s="done"] .stage-code{ background:var(--teal-soft); color:#1F574D; }
.stage-rows li[data-s="live"] .stage-code{ background:var(--amber); color:#231A08; }
.stage-row-name{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ink-2); }
.stage-rows li[data-s="todo"] .stage-row-name{ color:var(--mute); }
.stage-row-count{ font-size:10px; color:var(--mute); }
.rec-row{ padding:5px 8px; gap:9px; }
.rec-list{ gap:4px; margin-top:11px; }
.trace-sub{ font-size:9.5px; color:var(--mute); border:1px solid var(--line); border-radius:4px; padding:0 4px; line-height:15px; }

/* ---------- 11. 分组视图（盒式） ---------- */
.cassette-grid{ padding:14px; gap:14px; }
.cassette{ border-radius:11px; }
.cassette-head{ min-height:22px; }
.cassette .foup{ margin-top:12px; }
.slot-sn{ max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.slot:focus-visible{ outline:2px solid var(--amber); outline-offset:2px; }

/* 状态圆点按 tone 上色（状态徽标、成组视图共用） */
.chip-dot[data-tone="live"]{ background:#C9862D; }
.chip-dot[data-tone="idle"]{ background:#C4CDD0; }
.chip-dot[data-tone="warn"]{ background:#A9B5B9; }
.chip-dot[data-tone="ok"]{ background:#5F9B8C; }
.chip-dot[data-tone="bad"]{ background:#A9504A; }

/* ---------- 12. 品牌与登录 ---------- */
.rail-name{
  font-size:9px;
  letter-spacing:.16em;
  font-weight:640;
  line-height:1.3;
  text-align:center;
  color:var(--ink);
}
.rail-sub{ font-size:7.5px; letter-spacing:.06em; color:var(--mute-2); text-align:center; }
.auth-brand-name{ font-size:15px; letter-spacing:.18em; }
.auth-brand-sub{ font-size:9px; letter-spacing:.14em; color:#8B8172; }
.auth-demo{ border-top:1px solid var(--line-soft); }

/* ---------- 13. 响应式 ---------- */
@media (max-width:1240px){
  .layout-side{ grid-template-columns:290px minmax(0, 1fr); }
  .segs-3{ grid-template-columns:1fr; }
  .segs-3 > .panel-seg + .panel-seg{ border-left:0; border-top:1px solid var(--line); }
  .addstep-grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:880px){
  .layout-side{ grid-template-columns:1fr; }
  .col-side > * + *{ margin-top:16px; }
  .stage-block{ min-width:132px; }
  .bay{ padding:14px; }
  .cassette-grid{ grid-template-columns:1fr; padding:12px; }
  .toolbar .search{ flex:1 1 100%; }
}

/* ---------- 14. 顶栏账号条 ---------- */
.acct-btn{ padding-right:10px; }
.acct-main{ min-width:0; max-width:104px; }
.acct-main b,
.acct-main i{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ---------- 15. 动作按钮三态：可点 / 选中 / 禁用 ---------- */
.act-btn:not([data-locked]):not([aria-pressed="true"]){ border-color:var(--line-ink); }
.act-btn:not([data-locked]):hover{ background:var(--surface-2); border-color:var(--ink-3); }
.act-btn[aria-pressed="true"]:hover{ background:#F8EDD8; }
.bay-id .chip,
.bay-id .bay-flag{ border-radius:999px; }
