/*
 * KZNO 界面改版视觉层（2026-10-22）
 * 参考稿与验收标准：docs/frontend/redesign_20261022/README.md
 * 本文件最后加载，只负责外观；菜单数据、权限和行为不在这里。
 * 规则：颜色只用 --ws-* / --ui-* 变量；不用渐变、毛玻璃、阴影卡片。
 */

/* ---------- 1. 变量 ---------- */
html body.workspace-ui {
  --ui-page: #f4f6f5;
  --ui-text-2: #3d4448;
  --ui-row-line: #eef0ef;
  --ui-head-bg: #f8f9f8;
  --ui-chip-line: #dfe3e2;
  --ui-header-h: 60px;
  --ws-header-height: 60px;
  /* 状态色：进行中 / 等待他人 / 中性 / 完成 / 问题 */
  --ui-run-bg: #eaf2f1;  --ui-run-fg: #135e63;  --ui-run-dot: #19767a;
  --ui-wait-bg: #fbf1e2; --ui-wait-fg: #7d4f12; --ui-wait-dot: #a66b18;
  --ui-neutral-bg: #eef0ef; --ui-neutral-fg: #3d4448; --ui-neutral-dot: #61676b;
  --ui-done-bg: #e8f3ed; --ui-done-fg: #23704f; --ui-done-dot: #287c5a;
  --ui-bad-bg: #f9ecec;  --ui-bad-fg: #9e3b38;  --ui-bad-dot: #b14c49;
  background: var(--ui-page);
}

html body.workspace-ui .ui-icon { flex: none; display: block; }

/* ---------- 2. 顶部栏 ---------- */
html body.workspace-ui .app-header {
  background: #fff;
  border-bottom: 1px solid var(--ws-line);
  box-shadow: none;
}
html body.workspace-ui .topbar {
  min-height: var(--ui-header-h);
  height: var(--ui-header-h);
  gap: 20px;
  padding: 0 20px;
}
html body.workspace-ui .brand {
  position: relative;
  min-width: 0;
  gap: 0;
  padding-right: 20px;
}
html body.workspace-ui .brand::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 1px;
  height: 24px;
  margin-top: -12px;
  background: var(--ws-line);
}
html body.workspace-ui .brand img { width: auto; height: 30px; }
html body.workspace-ui .brand .brand-text,
html body.workspace-ui .brand > span { display: none; }

/* 中心标签 */
html body.workspace-ui .workspace-system-tabs { align-self: stretch; margin-left: 0; gap: 4px; }
html body.workspace-ui .workspace-center-links { display: flex; align-items: stretch; align-self: stretch; gap: 4px; }
html body.workspace-ui .workspace-system-tabs > a,
html body.workspace-ui .workspace-system-tabs a[data-section] {
  min-height: 0;
  height: 100%;
  max-width: none;
  padding: 0 10px;
  border: 0;
  border-bottom: 0;
  background: transparent;
  color: var(--ui-text-2);
  font-size: 14px;
  font-weight: 400;
  white-space: nowrap;
  box-shadow: none;
}
html body.workspace-ui .workspace-system-tabs > a:hover,
html body.workspace-ui .workspace-system-tabs a[data-section]:hover {
  background: transparent;
  color: var(--ws-ink);
  box-shadow: inset 0 -2px 0 var(--ws-line-strong);
}
html body.workspace-ui .workspace-system-tabs a[data-section].is-active,
html body.workspace-ui .workspace-system-tabs a[data-section][aria-current="page"],
html body.workspace-ui .workspace-system-tabs a[data-section][aria-current="true"],
html body.workspace-ui[data-workspace-section="company"] .workspace-system-tabs a[data-section="company"],
html body.workspace-ui[data-workspace-section="production"] .workspace-system-tabs a[data-section="production"],
html body.workspace-ui[data-workspace-section="centers"] .workspace-system-tabs a[data-section="centers"],
html body.workspace-ui[data-workspace-section="qhse"] .workspace-system-tabs a[data-section="qhse"],
html body.workspace-ui[data-workspace-section="projects"] .workspace-system-tabs a[data-section="projects"],
html body.workspace-ui[data-workspace-section="system"] .workspace-system-tabs a[data-section="system"] {
  background: transparent;
  border-bottom: 0;
  color: var(--ws-accent-dark);
  font-weight: 700;
  box-shadow: inset 0 -2px 0 var(--ws-accent);
}
html body.workspace-ui .workspace-center-more { align-self: center; }
html body.workspace-ui .workspace-center-more > summary {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 34px;
  padding: 0 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--ui-text-2);
  font-weight: 600;
  cursor: pointer;
  list-style: none;
}
html body.workspace-ui .workspace-center-more > summary::-webkit-details-marker { display: none; }
html body.workspace-ui .workspace-center-more > summary::after {
  content: "";
  width: 6px;
  height: 6px;
  margin-left: 2px;
  border-right: 1.6px solid currentColor;
  border-bottom: 1.6px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
}
html body.workspace-ui .workspace-center-more > summary:hover { background: var(--ws-surface-soft); }
html body.workspace-ui .workspace-center-menu {
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(16, 24, 32, .12);
  padding: 6px;
}
html body.workspace-ui .workspace-center-menu a[data-section] {
  height: 36px;
  padding: 0 10px;
  border-radius: 6px;
  box-shadow: none !important;
}
html body.workspace-ui .workspace-center-menu a[data-section]:hover { background: var(--ws-surface-soft); }

/* 右侧工具 */
html body.workspace-ui .topbar-actions { gap: 6px; }
html body.workspace-ui .home-icon,
html body.workspace-ui .notification-icon {
  position: relative;
  width: 38px;
  height: 38px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--ui-text-2);
}
html body.workspace-ui .home-icon:hover,
html body.workspace-ui .notification-icon:hover { background: var(--ws-surface-soft); color: var(--ws-ink); }
html body.workspace-ui .home-icon svg { width: 19px; height: 19px; }
html body.workspace-ui .notification-count {
  position: absolute;
  top: 3px;
  right: 2px;
  min-width: 17px;
  height: 17px;
  padding: 0 4px;
  box-sizing: border-box;
  border: 2px solid #fff;
  border-radius: 999px;
  background: var(--ws-danger);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  line-height: 13px;
  text-align: center;
}
html body.workspace-ui .language-form {
  display: flex;
  gap: 0;
  margin: 0 6px;
  padding: 3px;
  border-radius: 6px;
  background: #eef0ef;
}
html body.workspace-ui .language-form .language-button {
  width: 36px;
  height: 28px;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--ws-muted);
  font-size: 12px;
  font-weight: 700;
  box-shadow: none;
}
html body.workspace-ui .language-form .language-button:hover { color: var(--ws-ink); background: transparent; }
html body.workspace-ui .language-form .language-button.is-active {
  background: #fff;
  color: var(--ws-ink);
  box-shadow: 0 1px 2px rgba(16, 24, 32, .14);
}

/* 账号菜单 */
html body.workspace-ui .account-menu > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 40px;
  min-height: 0;
  padding: 0 8px 0 4px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--ws-ink);
  box-shadow: none;
}
html body.workspace-ui .account-menu > summary:hover { background: var(--ws-surface-soft); }
html body.workspace-ui .account-avatar {
  width: 32px;
  height: 32px;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: var(--ws-accent);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
}
html body.workspace-ui .account-menu-name {
  max-width: 140px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 600;
}
html body.workspace-ui .account-menu-panel {
  min-width: 240px;
  padding: 6px;
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(16, 24, 32, .12);
}
html body.workspace-ui .account-menu-panel > a,
html body.workspace-ui .account-menu-panel .logout-form > button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 36px;
  padding: 0 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--ws-ink);
  font: inherit;
  text-align: left;
  width: 100%;
}
html body.workspace-ui .account-menu-panel > a:hover,
html body.workspace-ui .account-menu-panel .logout-form > button:hover { background: var(--ws-surface-soft); text-decoration: none; }
html body.workspace-ui .account-menu-panel .logout-form > button { color: var(--ui-bad-fg); }
html body.workspace-ui .account-menu-panel > label { display: block; padding: 6px 10px 2px; color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .account-menu-panel .page-zoom-select {
  width: calc(100% - 20px);
  height: 34px;
  margin: 0 10px 6px;
  border: 1px solid var(--ws-control-border);
  border-radius: 6px;
  background: #fff;
  color: var(--ws-ink);
}
html body.workspace-ui .account-menu-panel .translation-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 36px;
  padding: 0 10px;
}
html body.workspace-ui .account-menu-panel .translation-toggle button {
  height: 28px;
  padding: 0 10px;
  border: 1px solid var(--ws-control-border);
  border-radius: 6px;
  background: #fff;
  color: var(--ws-ink);
  font-size: 12px;
  font-weight: 600;
}
html body.workspace-ui .account-menu-identity {
  padding: 8px 10px 10px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--ui-row-line);
}
html body.workspace-ui .account-menu-divider { margin: 4px 6px; background: var(--ui-row-line); }

/* ---------- 3. 侧栏 ---------- */
html body.workspace-ui .workspace-body {
  grid-template-columns: 232px minmax(0, 1fr);
  min-height: calc(100vh - var(--ui-header-h));
  background: var(--ui-page);
}
html body.workspace-ui[lang="ru"] .workspace-body,
html:lang(ru) body.workspace-ui .workspace-body { grid-template-columns: 252px minmax(0, 1fr); }
html body.workspace-ui .workspace-sidebar {
  top: var(--ui-header-h);
  height: calc(100vh - var(--ui-header-h));
  padding: 16px 10px 24px;
  background: #fff;
  border-right: 1px solid var(--ws-line);
}
html body.workspace-ui .workspace-sidebar .nav-section + .nav-section {
  margin-top: 18px;
  padding-top: 0;
  border-top: 0;
}
html body.workspace-ui .workspace-sidebar .nav-section > .nav-link:first-child { margin-top: 0; }
html body.workspace-ui .workspace-sidebar .nav-title {
  margin: 0 0 4px;
  padding: 0 12px;
  color: var(--ws-subtle);
  font-size: 12px;
  font-weight: 600;
}
html body.workspace-ui .workspace-sidebar .nav-link {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 38px;
  margin: 2px 0;
  padding: 4px 12px;
  border: 0;
  border-radius: 6px;
  color: var(--ws-ink);
  font-size: 14px;
  font-weight: 400;
}
html body.workspace-ui .workspace-sidebar .nav-link .ui-icon { color: var(--ws-muted); }
html body.workspace-ui .workspace-sidebar .nav-link-label { flex: 1; min-width: 0; }
html body.workspace-ui .workspace-sidebar .nav-link:hover {
  background: var(--ws-surface-soft);
  color: var(--ws-ink);
  text-decoration: none;
}
html body.workspace-ui .workspace-sidebar .nav-link.is-active,
html body.workspace-ui .workspace-sidebar .nav-link[aria-current="page"] {
  background: var(--ws-surface-teal);
  color: var(--ws-accent-dark);
  font-weight: 700;
  border: 0;
  box-shadow: none;
}
html body.workspace-ui .workspace-sidebar .nav-link.is-active .ui-icon,
html body.workspace-ui .workspace-sidebar .nav-link[aria-current="page"] .ui-icon { color: currentColor; }
html body.workspace-ui .workspace-sidebar .nav-link--home { margin-bottom: 14px; }
html body.workspace-ui .workspace-sidebar .nav-count {
  min-width: 22px;
  height: 20px;
  padding: 0 6px;
  box-sizing: border-box;
  border-radius: 999px;
  background: var(--ws-danger);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  line-height: 20px;
  text-align: center;
}
/* 车间切换 */
html body.workspace-ui .workspace-sidebar .workshop-switcher { padding: 0 2px; }
html body.workspace-ui .workspace-sidebar .workshop-switcher select {
  width: 100%;
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--ws-control-border);
  border-radius: 6px;
  background: #fff;
  color: var(--ws-ink);
  font: inherit;
  font-weight: 600;
}
html body.workspace-ui .workspace-sidebar .nav-empty { padding: 8px 12px; color: var(--ws-muted); }

/* ---------- 4. 内容区 ---------- */
html body.workspace-ui .content { background: var(--ui-page); }
html body.workspace-ui .workspace-body > .content > main::after { display: none; }

/* ---------- 5. 手机（≤ 760px） ---------- */
@media (max-width: 760px) {
  html body.workspace-ui { --ui-header-h: 56px; }
  html body.workspace-ui .topbar { height: auto; min-height: 56px; gap: 4px; padding: 0 8px; }
  html body.workspace-ui .brand { padding-right: 0; }
  html body.workspace-ui .brand::after { display: none; }
  html body.workspace-ui .brand img { height: 26px; }
  html body.workspace-ui .workspace-menu-toggle {
    width: 44px;
    height: 44px;
    border: 0;
    background: transparent;
  }
  html body.workspace-ui .workspace-body { grid-template-columns: minmax(0, 1fr); }
  html body.workspace-ui .workspace-sidebar { top: 0; height: 100vh; }
  html body.workspace-ui .workspace-sidebar .nav-link { min-height: 44px; }
  html body.workspace-ui .home-icon,
  html body.workspace-ui .notification-icon { width: 44px; height: 44px; }
}

/* ---------- 6. 通用页面组件（ui-*） ---------- */
html body.workspace-ui .ui-page {
  max-width: 1160px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
html body.workspace-ui .ui-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
html body.workspace-ui .ui-breadcrumb { display: flex; align-items: center; gap: 6px; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .ui-breadcrumb a { display: inline-flex; align-items: center; gap: 6px; color: var(--ws-accent); }
html body.workspace-ui .ui-breadcrumb .ui-breadcrumb-sep { color: #899397; }
html body.workspace-ui .ui-breadcrumb [aria-current] { color: var(--ws-ink); }
html body.workspace-ui .ui-page-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin: 0;
  padding: 0;
  border: 0;
}
html body.workspace-ui .ui-page-title { display: flex; flex-direction: column; gap: 4px; max-width: 720px; }
html body.workspace-ui .ui-page-title h1 { margin: 0; font-size: 24px; line-height: 1.3; font-weight: 700; color: var(--ws-ink); }
html body.workspace-ui .ui-page-kicker { margin: 0; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .ui-page-sub { margin: 0; color: var(--ws-muted); font-size: 14px; }
html body.workspace-ui .ui-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
html body.workspace-ui .ui-note { margin: 0; font-size: 13px; }

/* 按钮 */
html body.workspace-ui .ui-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 38px;
  min-height: 0;
  padding: 0 14px;
  box-sizing: border-box;
  border: 1px solid var(--ws-control-border);
  border-radius: 6px;
  background: #fff;
  color: var(--ws-ink);
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  box-shadow: none;
}
html body.workspace-ui .ui-btn:hover { background: var(--ws-surface-soft); color: var(--ws-ink); text-decoration: none; }
html body.workspace-ui .ui-btn .ui-icon { color: var(--ws-muted); }
html body.workspace-ui .ui-btn--primary { border-color: #202326; background: #202326; color: #fff; padding: 0 16px; }
html body.workspace-ui .ui-btn--primary .ui-icon { color: currentColor; }
html body.workspace-ui .ui-btn--primary:hover { background: #33383b; border-color: #33383b; color: #fff; }
html body.workspace-ui .ui-btn--danger { border-color: var(--ws-danger); background: var(--ws-danger); color: #fff; }
html body.workspace-ui .ui-btn--sm { height: 32px; padding: 0 10px 0 12px; gap: 2px; font-size: 13px; }
html body.workspace-ui .ui-btn--sm .ui-icon { color: currentColor; }
html body.workspace-ui .ui-link { color: var(--ws-accent); font-weight: 600; padding: 0 4px; }

/* 分类标签 */
html body.workspace-ui .ui-tabs {
  display: flex;
  gap: 20px;
  margin: 0;
  padding: 0;
  border: 0;
  border-bottom: 1px solid #dfe3e2;
  overflow-x: auto;
  background: transparent;
}
html body.workspace-ui .ui-tabs a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 44px;
  padding: 0 4px;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ui-text-2);
  font-size: 14px;
  font-weight: 600;
  white-space: nowrap;
  text-decoration: none;
  box-shadow: none;
}
html body.workspace-ui .ui-tabs a b {
  min-width: 20px;
  padding: 0 6px;
  box-sizing: border-box;
  border-radius: 999px;
  background: #e8ebea;
  color: var(--ui-text-2);
  font-size: 12px;
  font-weight: 600;
  line-height: 18px;
  text-align: center;
}
html body.workspace-ui .ui-tabs a:hover { color: var(--ws-ink); }
html body.workspace-ui .ui-tabs a.active,
html body.workspace-ui .ui-tabs a[aria-current="page"] { color: var(--ws-accent-dark); font-weight: 700; box-shadow: inset 0 -2px 0 var(--ws-accent); background: transparent; }
html body.workspace-ui .ui-tabs a.active b,
html body.workspace-ui .ui-tabs a[aria-current="page"] b { background: var(--ws-accent); color: #fff; }

/* 面板 */
html body.workspace-ui .ui-panel {
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
  box-shadow: none;
  margin: 0;
  padding: 0;
}
html body.workspace-ui .ui-panel-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px 12px 20px;
  border-top: 1px solid var(--ws-line);
  background: #fbfcfb;
  color: var(--ws-muted);
  font-size: 13px;
}
html body.workspace-ui .ui-pager { display: flex; align-items: center; gap: 6px; margin: 0; }
html body.workspace-ui .ui-pager a,
html body.workspace-ui .ui-pager span {
  display: inline-flex;
  align-items: center;
  height: 32px;
  padding: 0 10px;
  border: 1px solid var(--ws-line);
  border-radius: 6px;
  background: #fff;
  color: var(--ws-ink);
  font-size: 13px;
}
html body.workspace-ui .ui-pager span { border-color: #202326; background: #202326; color: #fff; font-weight: 700; }
html body.workspace-ui .ui-empty { margin: 0; padding: 36px 20px; color: var(--ws-muted); text-align: center; }

/* 快捷筛选胶囊 */
html body.workspace-ui .ui-chips { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 16px 0; }
html body.workspace-ui .ui-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 30px;
  padding: 0 12px 0 10px;
  box-sizing: border-box;
  border: 1px solid var(--ui-chip-line);
  border-radius: 999px;
  background: #fff;
  color: var(--ws-ink);
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  text-decoration: none;
}
html body.workspace-ui .ui-chip:first-child { padding-left: 12px; }
html body.workspace-ui .ui-chip:hover { background: var(--ws-surface-soft); text-decoration: none; color: var(--ws-ink); }
html body.workspace-ui .ui-chip--bad { color: var(--ui-bad-fg); }
html body.workspace-ui .ui-chip.is-on { border-color: #202326; background: #202326; color: #fff; }
html body.workspace-ui .ui-chip.is-on .ui-dot { box-shadow: 0 0 0 1.5px #fff; }
html body.workspace-ui .ui-dot { width: 7px; height: 7px; flex: none; border-radius: 999px; background: var(--ui-neutral-dot); font-style: normal; }
html body.workspace-ui .ui-dot--run { background: var(--ui-run-dot); }
html body.workspace-ui .ui-dot--wait { background: var(--ui-wait-dot); }
html body.workspace-ui .ui-dot--done { background: var(--ui-done-dot); }
html body.workspace-ui .ui-dot--bad { background: var(--ui-bad-dot); }

/* 筛选行 */
html body.workspace-ui .ui-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 12px 16px 14px;
  border: 0;
  border-bottom: 1px solid var(--ws-line);
  background: transparent;
  box-shadow: none;
}
html body.workspace-ui .ui-filters select,
html body.workspace-ui .ui-more-filters-body select {
  width: auto;
  max-width: 220px;
  height: 38px;
  min-height: 0;
  padding: 0 28px 0 10px;
  border: 1px solid var(--ws-control-border);
  border-radius: 6px;
  background-color: #fff;
  color: var(--ws-ink);
  font-size: 14px;
}
html body.workspace-ui .ui-search {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 240px;
  height: 38px;
  margin: 0;
  padding: 0 12px;
  box-sizing: border-box;
  border: 1px solid var(--ws-control-border);
  border-radius: 6px;
  background: #fff;
  color: var(--ws-muted);
}
html body.workspace-ui .ui-search:focus-within { border-color: var(--ws-accent); box-shadow: 0 0 0 3px rgba(25, 118, 122, .14); }
html body.workspace-ui .ui-search input,
html body.workspace-ui main .ui-search input:not([type="checkbox"]) {
  flex: 1;
  min-width: 0;
  height: 100%;
  min-height: 0;
  padding: 0;
  border: 0 !important;
  background: transparent;
  box-shadow: none !important;
  outline: none;
  font: inherit;
  color: var(--ws-ink);
}
html body.workspace-ui .ui-more-filters { position: relative; }
html body.workspace-ui .ui-more-filters > summary { list-style: none; }
html body.workspace-ui .ui-more-filters > summary::-webkit-details-marker { display: none; }
html body.workspace-ui .ui-more-filters[open] > summary { background: var(--ws-surface-teal); border-color: var(--ws-accent); color: var(--ws-accent-dark); }
html body.workspace-ui .ui-more-filters-body {
  position: absolute;
  z-index: 30;
  top: calc(100% + 6px);
  left: 0;
  display: grid;
  gap: 8px;
  width: 280px;
  padding: 12px;
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(16, 24, 32, .12);
}
html body.workspace-ui .ui-more-filters-body select { max-width: none; width: 100%; }
html body.workspace-ui .ui-more-filters-body label { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 14px; color: var(--ws-ink); }

/* 表格（div 网格，整行可点） */
html body.workspace-ui .ui-table { display: block; margin: 0; border: 0; border-radius: 0; background: #fff; overflow-x: auto; box-shadow: none; }
html body.workspace-ui .ui-table .ui-tr {
  display: grid;
  grid-template-columns: minmax(260px, 2.6fr) minmax(170px, 1.3fr) 96px 120px 128px 92px 92px;
  align-items: center;
  min-width: 980px;
  margin: 0;
  padding: 0;
  border: 0;
  border-bottom: 1px solid var(--ui-row-line);
  border-radius: 0;
  background: #fff;
  color: var(--ws-ink);
  font-size: 13px;
  text-decoration: none;
  box-shadow: none;
}
html body.workspace-ui .ui-table .ui-tr:last-child { border-bottom: 0; }
html body.workspace-ui .ui-table .ui-thead {
  background: var(--ui-head-bg);
  border-bottom: 1px solid var(--ws-line);
  color: var(--ws-muted);
  font-size: 12px;
  font-weight: 600;
}
html body.workspace-ui .ui-table .ui-thead > span { padding: 10px 12px; }
html body.workspace-ui .ui-table .ui-thead > span:first-child { padding-left: 20px; }
html body.workspace-ui .ui-table a.ui-tr:hover { background: #fafbfa; text-decoration: none; }
html body.workspace-ui .ui-table a.ui-tr:hover .ui-btn--sm { background: var(--ws-surface-soft); }
html body.workspace-ui .ui-table .ui-td { display: block; min-width: 0; padding: 13px 12px; line-height: 1.35; overflow-wrap: anywhere; }
html body.workspace-ui .ui-table .ui-td-main { padding-left: 20px; }
html body.workspace-ui .ui-table .is-overdue .ui-td-main { box-shadow: inset 3px 0 0 var(--ws-danger); }
html body.workspace-ui .ui-table .ui-td-main > strong { display: block; color: var(--ws-ink); font-size: 14px; font-weight: 600; }
html body.workspace-ui .ui-table .ui-td-main > small { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 3px; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .ui-table .ui-td-main > small i { font-style: normal; color: #c4cacb; }
html body.workspace-ui .ui-tag { padding: 0 6px; border-radius: 4px; background: #f1f3f2; color: var(--ui-text-2); font-style: normal; font-size: 12px; line-height: 20px; }
html body.workspace-ui .ui-flags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
html body.workspace-ui .ui-table .ui-td-action { text-align: right; padding-right: 16px; }
html body.workspace-ui .ui-muted { color: var(--ws-muted); }

/* 责任人 */
html body.workspace-ui .ui-person { display: flex; align-items: center; gap: 8px; min-width: 0; }
html body.workspace-ui .ui-person > span { display: flex; flex-direction: column; min-width: 0; line-height: 1.35; }
html body.workspace-ui .ui-person b { font-weight: 400; color: var(--ws-ink); }
html body.workspace-ui .ui-person small { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .ui-avatar {
  width: 26px;
  height: 26px;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: #e3eeec;
  color: var(--ws-accent-dark);
  font-size: 12px;
  font-style: normal;
  font-weight: 700;
}
html body.workspace-ui .ui-person.is-empty .ui-avatar { box-sizing: border-box; border: 1px dashed var(--ws-control-border); background: transparent; }
html body.workspace-ui .ui-person.is-empty b { color: var(--ui-wait-fg); font-weight: 600; }

/* 优先级信号条 */
html body.workspace-ui .ui-prio { display: inline-flex; align-items: flex-end; gap: 2px; white-space: nowrap; }
html body.workspace-ui .ui-prio i { width: 3px; border-radius: 1px; background: #d3d8d9; }
html body.workspace-ui .ui-prio i:nth-child(1) { height: 6px; }
html body.workspace-ui .ui-prio i:nth-child(2) { height: 10px; }
html body.workspace-ui .ui-prio i:nth-child(3) { height: 14px; margin-right: 6px; }
html body.workspace-ui .ui-prio--1 i:nth-child(1) { background: var(--ws-muted); }
html body.workspace-ui .ui-prio--2 i:nth-child(-n+2) { background: var(--ws-warning); }
html body.workspace-ui .ui-prio--3 i { background: var(--ws-danger); }
html body.workspace-ui .ui-prio--3 { color: var(--ui-bad-fg); font-weight: 600; }

/* 截止日期 */
html body.workspace-ui .ui-due b { display: block; font-weight: 400; color: var(--ws-ink); white-space: nowrap; }
html body.workspace-ui .ui-due small { display: flex; align-items: center; gap: 4px; font-size: 12px; color: var(--ws-muted); white-space: nowrap; }
html body.workspace-ui .ui-due--over small { color: var(--ui-bad-fg); font-weight: 600; }
html body.workspace-ui .ui-due--soon small { color: var(--ui-wait-fg); font-weight: 600; }

/* 状态胶囊 */
html body.workspace-ui .ui-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 2px 10px 2px 8px;
  border-radius: 999px;
  background: var(--ui-neutral-bg);
  color: var(--ui-neutral-fg);
  font-size: 12px;
  font-style: normal;
  font-weight: 600;
  line-height: 1.4;
  white-space: nowrap;
}
html body.workspace-ui .ui-pill .ui-dot { width: 6px; height: 6px; background: var(--ui-neutral-dot); }
html body.workspace-ui .ui-pill--run { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .ui-pill--run .ui-dot { background: var(--ui-run-dot); }
html body.workspace-ui .ui-pill--wait { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .ui-pill--wait .ui-dot { background: var(--ui-wait-dot); }
html body.workspace-ui .ui-pill--done { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .ui-pill--done .ui-dot { background: var(--ui-done-dot); }
html body.workspace-ui .ui-pill--bad { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui .ui-pill--bad .ui-dot { background: var(--ui-bad-dot); }

/* 内容区留白 */
html body.workspace-ui .content > main { padding: 22px 36px 56px; }

@media (max-width: 760px) {
  html body.workspace-ui .content > main { padding: 16px 16px 40px; }
  html body.workspace-ui .ui-page { gap: 12px; }
  html body.workspace-ui .ui-page-title h1 { font-size: 20px; }
  html body.workspace-ui .ui-page-sub { display: none; }
  html body.workspace-ui .ui-btn { height: 44px; }
  html body.workspace-ui .ui-actions .ui-btn:not(.ui-btn--primary) { display: none; }
  html body.workspace-ui .ui-page-head { align-items: center; flex-wrap: nowrap; }
  html body.workspace-ui .ui-tabs { gap: 16px; }
  html body.workspace-ui .ui-chips { flex-wrap: nowrap; overflow-x: auto; padding: 12px 12px 0; }
  html body.workspace-ui .ui-filters { padding: 10px 12px 12px; }
  html body.workspace-ui .ui-filters > select { display: none; }
  html body.workspace-ui .ui-filters .ui-search { height: 44px; }
  html body.workspace-ui .ui-more-filters-body { left: auto; right: 0; }
  html body.workspace-ui .ui-table .ui-thead { display: none; }
  html body.workspace-ui .ui-table .ui-tr {
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "main main" "who who" "status due";
    gap: 6px 10px;
    padding: 12px 14px;
  }
  html body.workspace-ui .ui-table .ui-td { padding: 0; }
  html body.workspace-ui .ui-table .ui-td-main { grid-area: main; padding-left: 0; }
  html body.workspace-ui .ui-table .is-overdue .ui-td-main { box-shadow: none; }
  html body.workspace-ui .ui-table .is-overdue { box-shadow: inset 3px 0 0 var(--ws-danger); }
  html body.workspace-ui .ui-table .ui-td:nth-child(2) { grid-area: who; }
  html body.workspace-ui .ui-table .ui-td:nth-child(3),
  html body.workspace-ui .ui-table .ui-td:nth-child(6),
  html body.workspace-ui .ui-table .ui-td-action { display: none; }
  html body.workspace-ui .ui-table .ui-td:nth-child(4) { grid-area: due; text-align: right; }
  html body.workspace-ui .ui-table .ui-td:nth-child(4) small { justify-content: flex-end; }
  html body.workspace-ui .ui-table .ui-td:nth-child(5) { grid-area: status; }
  html body.workspace-ui .ui-panel { margin: 0 -16px; border-radius: 0; border-left: 0; border-right: 0; }
}

/* 旧页面样式的高权重规则在这里显式压住 */
html body.workspace-ui .ui-search input { background: transparent !important; height: 100% !important; min-height: 0 !important; min-width: 0 !important; padding: 0 !important; }
html body.workspace-ui .ui-table .ui-td,
html body.workspace-ui .ui-table .ui-td span { color: inherit; font-size: inherit; }
html body.workspace-ui .ui-table .ui-prio { display: inline-flex; color: var(--ws-ink); font-size: 13px; }
html body.workspace-ui .ui-table .ui-prio--3 { color: var(--ui-bad-fg); }
html body.workspace-ui .ui-table .ui-person,
html body.workspace-ui .ui-table .ui-pill,
html body.workspace-ui .ui-table .ui-flags,
html body.workspace-ui .ui-table .ui-btn { display: inline-flex; }
html body.workspace-ui .ui-table .ui-person { display: flex; }
html body.workspace-ui .ui-table .ui-person > span { display: flex; gap: 0; }
html body.workspace-ui .ui-table .ui-person small,
html body.workspace-ui .ui-table .ui-td-main small { font-size: 12px; }
html body.workspace-ui .ui-table .ui-td-main > small { font-size: 13px; }
html body.workspace-ui .ui-table .ui-pill { font-size: 12px; }
html body.workspace-ui .ui-table .ui-pill--run { color: var(--ui-run-fg); }
html body.workspace-ui .ui-table .ui-pill--wait { color: var(--ui-wait-fg); }
html body.workspace-ui .ui-table .ui-pill--done { color: var(--ui-done-fg); }
html body.workspace-ui .ui-table .ui-pill--bad { color: var(--ui-bad-fg); }
html body.workspace-ui .ui-table .ui-pill--neutral { color: var(--ui-neutral-fg); }

/* 列宽：状态、截止按内容自适应，俄文长词不挤出 */
html body.workspace-ui .ui-table .ui-tr {
  grid-template-columns: minmax(240px, 2.4fr) minmax(150px, 1.3fr) max-content max-content max-content 84px max-content;
}
html body.workspace-ui .ui-table .ui-tr > .ui-td:nth-child(6),
html body.workspace-ui .ui-table .ui-thead > span:nth-child(6) { white-space: nowrap; }
html body.workspace-ui .ui-table .ui-td-action { padding-left: 4px; }
html body.workspace-ui .ui-table .ui-td::before,
html body.workspace-ui .ui-table .ui-td[data-label]::before { display: none !important; content: none !important; }

@media (max-width: 760px) {
  html body.workspace-ui .ui-table .ui-tr { grid-template-columns: minmax(0, 1fr) auto; }
  html body.workspace-ui .workspace-menu-toggle,
  html body.workspace-ui .workspace-tools-toggle {
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    box-shadow: none;
  }
}

/* 行与表头共用一套列（subgrid），保证各行对齐 */
@media (min-width: 761px) {
  html body.workspace-ui .ui-table {
    display: grid;
    grid-template-columns: minmax(220px, 2.2fr) minmax(190px, 1.4fr) max-content max-content max-content max-content max-content;
  }
  html body.workspace-ui .ui-table .ui-tr {
    grid-column: 1 / -1;
    grid-template-columns: subgrid;
    min-width: 0;
  }
}

/* ---------- 7. 工作台 ---------- */
html body.workspace-ui .ui-workbench { max-width: 1140px; gap: 26px; }
html body.workspace-ui .ui-segmented { display: flex; padding: 3px; margin: 0; border: 0; border-radius: 6px; background: #e8ebea; gap: 0; }
html body.workspace-ui .ui-segmented button {
  height: 32px;
  min-height: 0;
  padding: 0 14px;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--ws-muted);
  font: inherit;
  font-weight: 600;
  box-shadow: none;
  cursor: pointer;
}
html body.workspace-ui .ui-segmented button.is-active { background: #fff; color: var(--ws-ink); box-shadow: 0 1px 2px rgba(16, 24, 32, .14); }
html body.workspace-ui .ui-workbench .no-script-link { display: none; }

html body.workspace-ui .ui-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  margin: 0;
  padding: 0;
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
  gap: 0;
}
html body.workspace-ui .ui-stat {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 0;
  padding: 18px 20px;
  border: 0;
  border-right: 1px solid var(--ws-line);
  border-radius: 0;
  background: #fff;
  color: var(--ws-ink);
  text-decoration: none;
  box-shadow: none;
}
html body.workspace-ui .ui-stat:last-child { border-right: 0; }
html body.workspace-ui .ui-stat:hover { background: #fafbfa; text-decoration: none; }
html body.workspace-ui .ui-stat-icon { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border-radius: 8px; background: var(--ui-neutral-bg); color: var(--ui-neutral-fg); }
html body.workspace-ui .ui-stat-icon--bad { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui .ui-stat-icon--wait { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .ui-stat-icon--run { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .ui-stat-icon--done { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .ui-stat-text { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.35; }
html body.workspace-ui .ui-stat-text > span { color: var(--ws-muted); font-size: 14px; }
html body.workspace-ui .ui-stat-text small { color: var(--ws-subtle); font-size: 12px; }
html body.workspace-ui .ui-stat-text small.is-bad { color: var(--ui-bad-fg); font-weight: 600; }
html body.workspace-ui .ui-stat-text small.is-wait { color: var(--ui-wait-fg); font-weight: 600; }
html body.workspace-ui .ui-stat-text small.is-done { color: var(--ui-done-fg); font-weight: 600; }
html body.workspace-ui .ui-stat > strong { font-size: 28px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; color: var(--ws-ink); }

html body.workspace-ui .ui-columns { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 28px; }
html body.workspace-ui .ui-col-main { flex: 1 1 560px; min-width: 0; display: flex; flex-direction: column; gap: 14px; margin: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui .ui-col-side { flex: 1 1 300px; max-width: 360px; min-width: 0; display: flex; flex-direction: column; gap: 24px; }
html body.workspace-ui .ui-col-side > section { display: flex; flex-direction: column; gap: 14px; margin: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui .ui-section-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 12px; margin: 0; padding: 0; border: 0; }
html body.workspace-ui .ui-section-head h2 { margin: 0; font-size: 18px; font-weight: 700; color: var(--ws-ink); }
html body.workspace-ui .ui-section-note { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .ui-more-link { display: inline-flex; align-items: center; gap: 4px; color: var(--ws-accent); font-weight: 600; font-size: 14px; }

html body.workspace-ui .ui-list-group {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  background: #f8f9f8;
  border-bottom: 1px solid var(--ws-line);
  color: var(--ui-text-2);
  font-size: 13px;
  font-weight: 700;
}
html body.workspace-ui .ui-list-row + .ui-list-group { border-top: 1px solid var(--ws-line); }
html body.workspace-ui .ui-list-group--bad { background: #fbf5f5; border-bottom-color: #f0dede; color: var(--ui-bad-fg); }
html body.workspace-ui .ui-list .ui-list-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 120px 112px max-content;
  align-items: center;
  gap: 16px;
  margin: 0;
  padding: 14px 20px;
  border: 0;
  border-bottom: 1px solid var(--ui-row-line);
  border-radius: 0;
  background: #fff;
  color: var(--ws-ink);
  text-decoration: none;
  box-shadow: none;
}
html body.workspace-ui .ui-list .ui-list-row:last-child { border-bottom: 0; }
html body.workspace-ui .ui-list .ui-list-row:hover { background: #fafbfa; text-decoration: none; }
html body.workspace-ui .ui-list .ui-list-row.is-overdue { box-shadow: inset 3px 0 0 var(--ws-danger); }
html body.workspace-ui .ui-list-main { display: flex; flex-direction: column; min-width: 0; gap: 2px; }
html body.workspace-ui .ui-list-main strong { font-weight: 600; font-size: 14px; color: var(--ws-ink); }
html body.workspace-ui .ui-list-main small { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .ui-list-main .ui-next { color: var(--ui-text-2); font-size: 12px; }
html body.workspace-ui .ui-list .ui-due { font-size: 13px; }
html body.workspace-ui .ui-list-row > span { color: inherit; font-size: inherit; }

html body.workspace-ui .ui-apps {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2px;
  padding: 6px;
}
html body.workspace-ui .ui-app {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--ws-ink);
  text-decoration: none;
  box-shadow: none;
}
html body.workspace-ui .ui-app:hover { background: var(--ws-surface-soft); text-decoration: none; }
html body.workspace-ui .ui-app-icon { width: 34px; height: 34px; flex: none; display: grid; place-items: center; border-radius: 8px; background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .ui-app:nth-child(2) .ui-app-icon { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .ui-app:nth-child(3) .ui-app-icon,
html body.workspace-ui .ui-app:nth-child(5) .ui-app-icon { background: var(--ui-neutral-bg); color: var(--ui-neutral-fg); }
html body.workspace-ui .ui-app:nth-child(4) .ui-app-icon { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .ui-app-text { min-width: 0; display: flex; flex-direction: column; line-height: 1.3; }
html body.workspace-ui .ui-app-text b { font-weight: 600; }
html body.workspace-ui .ui-app-text small { color: var(--ws-muted); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

html body.workspace-ui .ui-feed { list-style: none; margin: 0; padding: 16px 16px 4px; }
html body.workspace-ui .ui-feed li { position: relative; display: flex; gap: 12px; padding-bottom: 14px; }
html body.workspace-ui .ui-feed-dot { width: 9px; height: 9px; flex: none; margin-top: 6px; border-radius: 999px; background: var(--ui-neutral-dot); }
html body.workspace-ui .ui-feed-dot--run { background: var(--ui-run-dot); }
html body.workspace-ui .ui-feed-dot--wait { background: var(--ui-wait-dot); }
html body.workspace-ui .ui-feed-dot--done { background: var(--ui-done-dot); }
html body.workspace-ui .ui-feed-dot--bad { background: var(--ui-bad-dot); }
html body.workspace-ui .ui-feed-text { display: flex; flex-direction: column; min-width: 0; font-size: 13px; line-height: 1.4; }
html body.workspace-ui .ui-feed-text small { color: var(--ws-muted); font-size: 12px; }

html body.workspace-ui .ui-folds { display: flex; flex-direction: column; border-top: 1px solid var(--ws-line); }
html body.workspace-ui .ui-fold { margin: 0; padding: 0; border: 0; border-bottom: 1px solid var(--ws-line); border-radius: 0; background: transparent; box-shadow: none; }
html body.workspace-ui .ui-fold > summary {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 52px;
  margin: 0;
  padding: 0;
  border: 0;
  cursor: pointer;
  list-style: none;
}
html body.workspace-ui .ui-fold > summary::-webkit-details-marker { display: none; }
html body.workspace-ui .ui-fold > summary::before {
  content: "";
  width: 7px;
  height: 7px;
  border-right: 1.6px solid var(--ws-muted);
  border-bottom: 1.6px solid var(--ws-muted);
  transform: rotate(-45deg);
  transition: transform .15s;
}
html body.workspace-ui .ui-fold[open] > summary::before { transform: rotate(45deg); }
html body.workspace-ui .ui-fold > summary h2 { margin: 0; font-size: 16px; font-weight: 700; }
html body.workspace-ui .ui-fold-meta { color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .ui-fold > .ui-panel,
html body.workspace-ui .ui-fold > .ui-snapshot,
html body.workspace-ui .ui-fold > p { margin: 0 0 16px; }
html body.workspace-ui .ui-snapshot { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 0; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; overflow: hidden; }
html body.workspace-ui .ui-snapshot > div { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; border-right: 1px solid var(--ws-line); background: #fff; border-radius: 0; }
html body.workspace-ui .ui-snapshot > div:last-child { border-right: 0; }
html body.workspace-ui .ui-snapshot span { color: var(--ws-muted); }
html body.workspace-ui .ui-snapshot strong { font-size: 20px; }

@media (max-width: 760px) {
  html body.workspace-ui .ui-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  html body.workspace-ui .ui-stat { padding: 14px; gap: 10px; border-bottom: 1px solid var(--ws-line); }
  html body.workspace-ui .ui-stat-icon { display: none; }
  html body.workspace-ui .ui-stat > strong { font-size: 24px; }
  html body.workspace-ui .ui-list .ui-list-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "main main" "status due"; gap: 6px 10px; padding: 12px 14px; }
  html body.workspace-ui .ui-list-main { grid-area: main; }
  html body.workspace-ui .ui-list .ui-due { grid-area: due; text-align: right; }
  html body.workspace-ui .ui-list .ui-due small { justify-content: flex-end; }
  html body.workspace-ui .ui-list-status { grid-area: status; }
  html body.workspace-ui .ui-list .ui-list-row > .ui-btn { display: none; }
  html body.workspace-ui .ui-col-side { max-width: none; }
  html body.workspace-ui .ui-workbench .ui-page-head { flex-wrap: wrap; }
}
html body.workspace-ui .company-workbench.company-workbench--focused .workbench-heading.ui-page-head { padding: 0; margin: 0; border: 0; background: transparent; align-items: flex-end; }
html body.workspace-ui .ui-segmented.view-mode-switch button,
html body.workspace-ui .company-workbench .ui-segmented.view-mode-switch button { background: transparent !important; color: var(--ws-muted) !important; border: 0 !important; font-weight: 600; box-shadow: none !important; }
html body.workspace-ui .ui-segmented.view-mode-switch button.is-active,
html body.workspace-ui .company-workbench .ui-segmented.view-mode-switch button.is-active { background: #fff !important; color: var(--ws-ink) !important; box-shadow: 0 1px 2px rgba(16, 24, 32, .14) !important; }
@media (min-width: 761px) {
  html body.workspace-ui .ui-list { display: grid; grid-template-columns: minmax(0, 1fr) max-content max-content max-content; }
  html body.workspace-ui .ui-list > .ui-list-group { grid-column: 1 / -1; }
  html body.workspace-ui .ui-list .ui-list-row { grid-column: 1 / -1; grid-template-columns: subgrid; column-gap: 24px; }
}
@media (min-width: 761px) {
  html body.workspace-ui .ui-list { grid-template-columns: minmax(0, 1fr) max-content minmax(0, 190px) max-content; }
  html body.workspace-ui .ui-list .ui-pill { white-space: normal; }
}

/* ---------- 8. 右侧抽屉（统一操作窗口） ---------- */
html body.workspace-ui .oa-action-modal { color: var(--ws-ink); border-radius: 8px; box-shadow: -12px 0 32px rgba(16, 24, 32, .16); }
html body.workspace-ui .oa-action-modal::backdrop { background: rgba(32, 35, 38, .36); backdrop-filter: none; }
html body.workspace-ui .oa-action-modal.is-drawer { border-radius: 0; }
html body.workspace-ui .oa-action-modal.is-drawer::backdrop { background: rgba(32, 35, 38, .36); }
html body.workspace-ui .oa-action-header { padding: 12px 16px 12px 20px; border-bottom: 1px solid var(--ws-line); background: #fff; }
html body.workspace-ui .oa-action-kicker { color: var(--ws-muted); font-size: 12px; font-weight: 600; }
html body.workspace-ui .oa-action-header h2 { font-size: 18px; font-weight: 700; color: var(--ws-ink); }
html body.workspace-ui .oa-action-toolbar .button.secondary {
  height: 34px;
  padding: 0 12px;
  border: 1px solid var(--ws-control-border);
  border-radius: 6px;
  background: #fff;
  color: var(--ws-ink);
  font-size: 13px;
  font-weight: 600;
  box-shadow: none;
}
html body.workspace-ui .oa-action-close { width: 36px; height: 36px; border: 0; border-radius: 6px; background: transparent; color: var(--ui-text-2); font-size: 22px; }
html body.workspace-ui .oa-action-close:hover { background: var(--ws-surface-soft); color: var(--ws-ink); }
html body.workspace-ui .oa-action-frame-wrap,
html body.workspace-ui .oa-action-loading { background: #fff; color: var(--ws-muted); }

/* ---------- 9. 任务详情（抽屉与独立页共用） ---------- */
html body.workspace-ui .task-detail-page { max-width: 1040px; margin: 0 auto; display: flex; flex-direction: column; gap: 20px; }
html body.workspace-ui .task-detail-page .detail-breadcrumb { display: flex; gap: 6px; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .task-detail-page .detail-breadcrumb a { color: var(--ws-accent); }
html body.workspace-ui .task-detail-page .detail-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin: 0;
  padding: 0 0 16px;
  border: 0;
  border-bottom: 1px solid var(--ws-line);
  border-radius: 0;
  background: transparent;
}
html body.workspace-ui .task-detail-page .detail-heading .workbench-kicker { margin: 0 0 4px; color: var(--ws-muted); font-size: 13px; font-weight: 600; }
html body.workspace-ui .task-detail-page .detail-heading h1 { margin: 0 0 6px; font-size: 22px; line-height: 1.35; font-weight: 700; }
html body.workspace-ui .task-detail-page .detail-heading .workbench-subtitle { margin: 0; color: var(--ui-text-2); }
html body.workspace-ui .task-detail-page .detail-status {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
html body.workspace-ui .task-detail-page .detail-status strong {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 12px 3px 10px;
  border-radius: 999px;
  background: var(--ui-run-bg);
  color: var(--ui-run-fg);
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
}
html body.workspace-ui .task-detail-page .detail-status strong::before { content: ""; width: 6px; height: 6px; border-radius: 999px; background: var(--ui-run-dot); }
html body.workspace-ui .task-detail-page .detail-status span { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .task-detail-page .list-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
html body.workspace-ui .task-detail-page .message,
html body.workspace-ui .task-detail-page .message-warning {
  margin: 0;
  padding: 12px 16px;
  border: 1px solid #efd9b4;
  border-left: 3px solid var(--ws-warning);
  border-radius: 6px;
  background: #fdf8ef;
  color: var(--ui-wait-fg);
}
html body.workspace-ui .task-detail-page .message p { margin: 4px 0 0; color: var(--ui-text-2); }
html body.workspace-ui .task-detail-page .detail-meta-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 14px 24px;
  margin: 0;
  padding: 16px;
  border: 0;
  border-radius: 8px;
  background: #f8f9f8;
}
html body.workspace-ui .task-detail-page .detail-meta-grid > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui .task-detail-page .detail-meta-grid > div > span { color: var(--ws-muted); font-size: 12px; font-weight: 400; }
html body.workspace-ui .task-detail-page .detail-meta-grid > div > strong { color: var(--ws-ink); font-size: 14px; font-weight: 400; overflow-wrap: anywhere; }
html body.workspace-ui .task-detail-page .workbench-section { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
html body.workspace-ui .task-detail-page .section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 0 0 10px; padding: 0; border: 0; }
html body.workspace-ui .task-detail-page .section-heading h2 { margin: 0; font-size: 16px; font-weight: 700; }
html body.workspace-ui .task-detail-page .section-heading p { margin: 2px 0 0; color: var(--ws-muted); font-size: 13px; }
/* 流程进度：圆点步骤条 */
html body.workspace-ui .task-detail-page .task-progress { display: none; }
html body.workspace-ui .task-detail-page .workflow-steps {
  display: flex;
  gap: 0;
  margin: 4px 0 0;
  padding: 0;
  counter-reset: step;
}
html body.workspace-ui .task-detail-page .workflow-steps > span {
  position: relative;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  min-width: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ws-muted);
  font-size: 12px;
  font-weight: 400;
  text-align: center;
  box-shadow: none;
}
html body.workspace-ui .task-detail-page .workflow-steps > span::before {
  content: "";
  position: relative;
  z-index: 1;
  width: 18px;
  height: 18px;
  box-sizing: border-box;
  border: 2px solid #d3d8d9;
  border-radius: 999px;
  background: #fff;
}
html body.workspace-ui .task-detail-page .workflow-steps > span::after {
  content: "";
  position: absolute;
  top: 8px;
  left: calc(50% + 12px);
  right: calc(-50% + 12px);
  height: 2px;
  background: #d3d8d9;
}
html body.workspace-ui .task-detail-page .workflow-steps > span:last-child::after { display: none; }
html body.workspace-ui .task-detail-page .workflow-steps > span.active { color: var(--ws-accent-dark); font-weight: 700; }
html body.workspace-ui .task-detail-page .workflow-steps > span.active::before { border-color: var(--ws-accent); box-shadow: inset 0 0 0 3px #fff; background: var(--ws-accent); }
html body.workspace-ui .task-detail-page .workflow-steps > span:has(~ span.active)::before { border-color: var(--ws-accent); background: var(--ws-accent); }
html body.workspace-ui .task-detail-page .workflow-steps > span:has(~ span.active)::after { background: var(--ws-accent); }
html body.workspace-ui .task-detail-page .workflow-steps > span:has(~ span.active) { color: var(--ui-text-2); }
/* 可执行操作 */
html body.workspace-ui .task-detail-page .action-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
html body.workspace-ui .task-detail-page .action-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 0;
  padding: 14px 16px;
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  box-shadow: none;
}
html body.workspace-ui .task-detail-page .action-card h3 { margin: 0; font-size: 15px; font-weight: 700; }
html body.workspace-ui .task-detail-page .action-card label { display: flex; flex-direction: column; gap: 4px; color: var(--ui-text-2); font-size: 13px; font-weight: 600; }
html body.workspace-ui .task-detail-page .action-card textarea { min-height: 84px; }
html body.workspace-ui .task-detail-page :is(.primary-button, .secondary-button, .action-card button[type="submit"]) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 38px;
  padding: 0 14px;
  border: 1px solid var(--ws-control-border);
  border-radius: 6px;
  background: #fff;
  color: var(--ws-ink);
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  box-shadow: none;
  cursor: pointer;
}
html body.workspace-ui .task-detail-page :is(.primary-button, .action-card button[type="submit"]) { border-color: #202326; background: #202326; color: #fff; }
html body.workspace-ui .task-detail-page .action-card button[type="submit"] { align-self: flex-start; }
/* 附件、记录 */
html body.workspace-ui .task-detail-page .attachment-list { display: flex; flex-direction: column; border: 1px solid var(--ws-line); border-radius: 8px; overflow: hidden; }
html body.workspace-ui .task-detail-page .attachment-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 0; border-bottom: 1px solid var(--ui-row-line); background: #fff; }
html body.workspace-ui .task-detail-page .attachment-row:last-child { border-bottom: 0; }
html body.workspace-ui .task-detail-page .event-list { list-style: none; margin: 0; padding: 0; }
html body.workspace-ui .task-detail-page .event-list > li { position: relative; margin: 0; padding: 0 0 12px 22px; border: 0; background: transparent; }
html body.workspace-ui .task-detail-page .event-list > li::before { content: ""; position: absolute; left: 0; top: 6px; width: 9px; height: 9px; border-radius: 999px; background: #c4cacb; }
html body.workspace-ui .task-detail-page .event-list > li::after { content: ""; position: absolute; left: 4px; top: 18px; bottom: 0; width: 1px; background: var(--ws-line); }
html body.workspace-ui .task-detail-page .event-list > li:first-child::before { background: var(--ws-accent); }
html body.workspace-ui .task-detail-page .event-list > li:last-child::after { display: none; }
html body.workspace-ui .task-detail-page .result-box { padding: 12px 14px; border-radius: 6px; background: #f8f9f8; border: 0; }
html body.workspace-ui .task-detail-page .detail-columns { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; }
@media (max-width: 760px) {
  html body.workspace-ui .task-detail-page .detail-heading { flex-direction: column; }
  html body.workspace-ui .task-detail-page .detail-status { align-items: flex-start; }
  html body.workspace-ui .task-detail-page .workflow-steps { overflow-x: auto; }
  html body.workspace-ui .task-detail-page .workflow-steps > span { min-width: 72px; }
}
html body.workspace-ui .task-detail-page .workbench-section.message,
html body.workspace-ui .task-detail-page .workbench-section.message-warning {
  padding: 12px 16px;
  border: 1px solid #efd9b4;
  border-left: 3px solid var(--ws-warning);
  border-radius: 6px;
  background: #fdf8ef;
}

/* ---------- 10. 旧页面通用结构统一（.toolbar / .panel / .card / 表格 / 按钮） ---------- */
html body.workspace-ui main > .toolbar:first-child,
html body.workspace-ui main > .messages + .toolbar,
html body.workspace-ui main > p[data-language-feedback] + .toolbar {
  align-items: flex-end;
  margin: 0 0 18px;
}
html body.workspace-ui main > .toolbar h1,
html body.workspace-ui main .toolbar > h1 { margin: 0; font-size: 24px; line-height: 1.3; font-weight: 700; color: var(--ws-ink); }
html body.workspace-ui main .toolbar > .actions { display: flex; flex-wrap: wrap; gap: 8px; }
html body.workspace-ui .button {
  min-height: 38px;
  padding: 0 14px;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 600;
  gap: 6px;
}
html body.workspace-ui .button:not(.secondary):not(.danger) { background: #202326; border: 1px solid #202326; color: #fff; }
html body.workspace-ui .button:not(.secondary):not(.danger):hover { background: #33383b; }
html body.workspace-ui .button.secondary { border: 1px solid var(--ws-control-border); background: #fff; color: var(--ws-ink); }
html body.workspace-ui .button.secondary:hover { background: var(--ws-surface-soft); }
html body.workspace-ui .button.small { min-height: 32px; padding: 0 10px; font-size: 13px; }
html body.workspace-ui main table :is(.button, button) { min-height: 32px; padding: 0 10px; font-size: 13px; }

html body.workspace-ui:not([data-workspace-section="production"]) main :is(.panel, .card) {
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  box-shadow: none;
}
html body.workspace-ui:not([data-workspace-section="production"]) main .panel { padding: 16px; margin-bottom: 16px; }
/* 筛选表单：一行排开，不再整行拉满 */
html body.workspace-ui:not([data-workspace-section="production"]) main form[method="get"]:is(.toolbar, .meeting-filters, .procurement-filter, .delivery-filter, .center-tasks-filter, .permission-filter, .md-filters, .b4-filters, .wi-filters) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  margin: 0;
}
html body.workspace-ui:not([data-workspace-section="production"]) main form[method="get"]:is(.toolbar, .meeting-filters, .procurement-filter, .delivery-filter, .center-tasks-filter, .permission-filter, .md-filters, .b4-filters, .wi-filters) > :is(select, input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"])) {
  width: auto;
  min-width: 160px;
  max-width: 260px;
  height: 38px;
  min-height: 0;
  flex: 0 1 auto;
}
html body.workspace-ui:not([data-workspace-section="production"]) main form[method="get"]:is(.toolbar, .meeting-filters, .procurement-filter, .delivery-filter, .center-tasks-filter, .permission-filter, .md-filters, .b4-filters, .wi-filters) > :is(input[type="search"], input[name="q"], input[type="text"]:first-child) {
  flex: 1 1 260px;
  max-width: none;
}
/* 表格放进白底面板感 */
html body.workspace-ui:not([data-workspace-section="production"]) main > table,
html body.workspace-ui:not([data-workspace-section="production"]) main .panel > table {
  border: 1px solid var(--ws-line);
  border-collapse: separate;
  border-spacing: 0;
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}
html body.workspace-ui main table th { background: var(--ui-head-bg); color: var(--ws-muted); font-size: 12px; font-weight: 600; border-bottom: 1px solid var(--ws-line); }
html body.workspace-ui main table td { border-bottom: 1px solid var(--ui-row-line); }
html body.workspace-ui main table tbody tr:last-child td { border-bottom: 0; }
html body.workspace-ui main table tbody tr:hover,
html body.workspace-ui main table tbody tr:hover td { background: #fafbfa; background-color: #fafbfa; }
/* 通用徽标改成中性胶囊 */
html body.workspace-ui main .badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border: 0;
  border-radius: 999px;
  background: var(--ui-neutral-bg);
  color: var(--ui-neutral-fg);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.4;
}

/* ---------- 11. 任务中心批量操作（第 2 阶段结构） ---------- */
html body.workspace-ui .ui-table .ui-tr { position: relative; }
html body.workspace-ui .ui-row-link { color: var(--ws-ink); text-decoration: none; }
html body.workspace-ui .ui-row-link::after { content: ""; position: absolute; inset: 0; z-index: 0; }
html body.workspace-ui .ui-row-link:hover { color: var(--ws-ink); text-decoration: none; }
html body.workspace-ui .ui-row-link:focus-visible { outline: none; }
html body.workspace-ui .ui-row-link:focus-visible::after { outline: 2px solid var(--ws-accent); outline-offset: -2px; }
html body.workspace-ui .ui-table div.ui-tr:hover { background: #fafbfa; }
html body.workspace-ui .ui-table div.ui-tr:hover .ui-btn--sm { background: var(--ws-surface-soft); }
html body.workspace-ui .ui-td-check { position: relative; z-index: 1; display: flex !important; flex-direction: column; align-items: center; gap: 6px; padding-left: 16px !important; padding-right: 0 !important; }
html body.workspace-ui .ui-td-check input[type="checkbox"] { width: 17px; height: 17px; margin: 0; accent-color: var(--ws-accent); cursor: pointer; }
html body.workspace-ui .ui-td-check select { width: 64px; height: 28px; min-height: 0; padding: 0 4px; font-size: 12px; }
html body.workspace-ui .ui-bulkbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 10px 16px;
  border-bottom: 1px solid var(--ws-line);
  background: #f8f9f8;
}
html body.workspace-ui .ui-bulkbar-title { color: var(--ui-text-2); font-size: 13px; font-weight: 700; margin-right: 4px; }
html body.workspace-ui .ui-bulkbar label { margin: 0; }
html body.workspace-ui .ui-bulkbar select { width: auto; max-width: 220px; height: 34px; min-height: 0; padding: 0 28px 0 10px; border: 1px solid var(--ws-control-border); border-radius: 6px; background-color: #fff; font-size: 13px; }
html body.workspace-ui .ui-bulkbar-note { flex: 1 1 200px; }
html body.workspace-ui main .ui-bulkbar textarea { width: 100%; height: 34px; min-height: 0; padding: 6px 10px; resize: none; border: 1px solid var(--ws-control-border); border-radius: 6px; font-size: 13px; line-height: 20px; }
html body.workspace-ui .ui-bulkbar .ui-btn { height: 34px; font-size: 13px; }
@media (min-width: 761px) {
  html body.workspace-ui .ui-table.has-bulk {
    grid-template-columns: 40px minmax(220px, 2.2fr) minmax(190px, 1.4fr) max-content max-content max-content max-content max-content;
  }
  html body.workspace-ui .ui-table.has-bulk .ui-td-main { padding-left: 10px; }
  html body.workspace-ui .ui-table.has-bulk .ui-thead > span:nth-child(2) { padding-left: 10px; }
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td:nth-child(7),
  html body.workspace-ui .ui-table.has-bulk .ui-thead > span:nth-child(7) { white-space: nowrap; }
}
@media (max-width: 760px) {
  html body.workspace-ui .ui-table.has-bulk .ui-tr { grid-template-columns: 28px minmax(0, 1fr) auto; grid-template-areas: "check main main" "check who who" "check status due"; }
  html body.workspace-ui .ui-table.has-bulk .ui-td-check { grid-area: check; padding: 0 !important; align-items: flex-start; }
  html body.workspace-ui .ui-table.has-bulk .ui-td:nth-child(2) { grid-area: main; }
  html body.workspace-ui .ui-table.has-bulk .ui-td:nth-child(3) { grid-area: who; display: block; }
  html body.workspace-ui .ui-table.has-bulk .ui-td:nth-child(4),
  html body.workspace-ui .ui-table.has-bulk .ui-td:nth-child(7),
  html body.workspace-ui .ui-table.has-bulk .ui-td-action { display: none; }
  html body.workspace-ui .ui-table.has-bulk .ui-td:nth-child(5) { grid-area: due; text-align: right; display: block; }
  html body.workspace-ui .ui-table.has-bulk .ui-td:nth-child(6) { grid-area: status; display: block; }
  html body.workspace-ui .ui-bulkbar { padding: 10px 12px; }
  html body.workspace-ui .ui-bulkbar-note { flex-basis: 100%; }
}
html body.workspace-ui .ui-table.has-bulk .is-overdue .ui-td-main { box-shadow: none; }
html body.workspace-ui .ui-table.has-bulk .is-overdue > .ui-td-check { box-shadow: inset 3px 0 0 var(--ws-danger); }
html body.workspace-ui main .ui-bulkbar select { height: 34px !important; min-height: 0 !important; font-size: 13px !important; }
@media (max-width: 760px) {
  html body.workspace-ui .ui-table.has-bulk .is-overdue > .ui-td-check { box-shadow: none; }
  html body.workspace-ui main .ui-bulkbar select { flex: 1 1 140px; max-width: none; }
  html body.workspace-ui .ui-bulkbar label:not(.ui-bulkbar-note) { flex: 1 1 140px; }
  html body.workspace-ui .ui-bulkbar label select { width: 100%; }
}

/* 状态列封顶、允许换行，避免俄文长状态把操作列挤出面板 */
@media (min-width: 761px) {
  html body.workspace-ui .ui-table { grid-template-columns: minmax(220px, 2.2fr) minmax(170px, 1.4fr) max-content max-content minmax(110px, 190px) 84px max-content; }
  html body.workspace-ui .ui-table.has-bulk { grid-template-columns: 40px minmax(200px, 2.2fr) minmax(160px, 1.4fr) max-content max-content minmax(110px, 180px) 84px max-content; }
  html body.workspace-ui .ui-table .ui-pill { white-space: normal; }
  html body.workspace-ui .ui-table .ui-tr > .ui-td:nth-last-child(2) { white-space: normal; }
}
html body.workspace-ui .ui-table .ui-pill { border-radius: 10px; }

/* ---------- 12. 各中心首页（center_workbench） ---------- */
html body.workspace-ui .center-workbench { max-width: 1140px; margin: 0 auto; display: flex; flex-direction: column; gap: 20px; }
html body.workspace-ui .center-workbench-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px 16px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
html body.workspace-ui .center-workbench-heading > div { margin-right: auto; }
html body.workspace-ui .center-workbench-context { margin: 0 0 4px; color: var(--ws-muted); font-size: 13px; font-weight: 400; }
html body.workspace-ui .center-workbench-heading h1 { margin: 0; font-size: 24px; line-height: 1.3; font-weight: 700; }
html body.workspace-ui .center-workbench > p { margin: 0; font-size: 13px; }
html body.workspace-ui .center-workbench-summary { margin: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui .center-workbench-summary > summary { margin: 0 0 10px; color: var(--ws-muted); font-size: 13px; font-weight: 600; cursor: pointer; }
html body.workspace-ui .center-workbench-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 0;
  margin: 0;
  padding: 0;
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}
html body.workspace-ui .center-workbench-metrics > a {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 2px 8px;
  min-height: 0;
  padding: 16px 18px;
  border: 0;
  border-right: 1px solid var(--ws-line);
  border-radius: 0;
  background: #fff;
  color: var(--ws-ink);
  text-decoration: none;
  box-shadow: none;
}
html body.workspace-ui .center-workbench-metrics > a:last-child { border-right: 0; }
html body.workspace-ui .center-workbench-metrics > a:hover { background: #fafbfa; }
html body.workspace-ui .center-workbench-metrics > a > span { color: var(--ws-muted); font-size: 14px; }
html body.workspace-ui .center-workbench-metrics > a > strong { font-size: 26px; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
html body.workspace-ui .center-workbench-metrics .workbench-overdue { flex-basis: 100%; color: var(--ui-bad-fg); font-size: 12px; font-weight: 600; }
html body.workspace-ui .center-workbench-queues { display: flex; flex-direction: column; gap: 20px; }
html body.workspace-ui .center-workbench-queue {
  margin: 0;
  padding: 0;
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
  box-shadow: none;
}
html body.workspace-ui .center-workbench-queue > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0;
  padding: 12px 16px 12px 20px;
  border-bottom: 1px solid var(--ws-line);
  background: #fff;
}
html body.workspace-ui .center-workbench-queue > header h2 { margin: 0; font-size: 16px; font-weight: 700; }
html body.workspace-ui .center-workbench-queue > header a { color: var(--ws-accent); font-weight: 600; font-size: 14px; }
html body.workspace-ui .center-workbench-queue > ul { list-style: none; margin: 0; padding: 4px 20px 12px; }
html body.workspace-ui .center-workbench-queue > ul > li { padding: 8px 0; border-bottom: 1px solid var(--ui-row-line); color: var(--ws-muted); }
html body.workspace-ui .center-workbench-queue > ul > li:last-child { border-bottom: 0; }
html body.workspace-ui .center-workbench-table-wrap { border: 0; border-radius: 0; }
html body.workspace-ui main .center-workbench-table { border: 0; border-radius: 0; }
html body.workspace-ui main .center-workbench-table th:first-child,
html body.workspace-ui main .center-workbench-table td:first-child { padding-left: 20px; }
html body.workspace-ui main .center-workbench-table td { padding-top: 12px; padding-bottom: 12px; }
html body.workspace-ui main .center-workbench-table tr.is-overdue td:first-child { box-shadow: inset 3px 0 0 var(--ws-danger); }
html body.workspace-ui .workbench-task-title strong { display: block; font-weight: 600; font-size: 14px; color: var(--ws-ink); }
html body.workspace-ui .workbench-task-title small { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .workbench-task-title a { color: inherit; text-decoration: none; }
html body.workspace-ui .workbench-task-date small.workbench-overdue { display: block; color: var(--ui-bad-fg); font-size: 12px; font-weight: 600; }
html body.workspace-ui .center-workbench-empty { margin: 0; padding: 32px 20px; border: 1px dashed var(--ws-line-strong); border-radius: 8px; color: var(--ws-muted); text-align: center; background: #fff; }
html body.workspace-ui .center-workbench-professions { display: flex; flex-wrap: wrap; gap: 8px; }

/* ---------- 13. 采购申请进度线（阶段 5 结构：ol.procurement-log > li[data-purchase-milestone]） ---------- */
html body.workspace-ui ol.procurement-log:has(> li[data-purchase-milestone]) {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  margin: 8px 0 0;
  padding: 0;
  list-style: none;
}
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone] {
  position: relative;
  flex: 1 1 140px;
  max-width: 220px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  margin: 0;
  padding: 26px 16px 0 0;
  border: 0;
  background: transparent;
  color: var(--ui-text-2);
  font-size: 13px;
  line-height: 1.4;
}
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone]::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: 16px;
  height: 16px;
  box-sizing: border-box;
  border-radius: 999px;
  background: var(--ws-accent);
  box-shadow: inset 0 0 0 4px var(--ws-accent), inset 0 0 0 6px #fff;
}
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone]::after {
  content: "";
  position: absolute;
  top: 7px;
  left: 20px;
  right: 4px;
  height: 2px;
  background: var(--ws-accent);
}
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone]:last-child::after { display: none; }
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone]:last-child { color: var(--ws-accent-dark); font-weight: 700; }
@media (max-width: 760px) {
  html body.workspace-ui ol.procurement-log:has(> li[data-purchase-milestone]) { flex-direction: column; gap: 12px; }
  html body.workspace-ui ol.procurement-log > li[data-purchase-milestone] { max-width: none; padding: 0 0 0 26px; flex: none; }
  html body.workspace-ui ol.procurement-log > li[data-purchase-milestone]::after { top: 18px; left: 7px; right: auto; bottom: -12px; width: 2px; height: auto; }
}

/* 14. purchase status tags (list + detail), incl. office route admin_review / admin_processing */
html body.workspace-ui .procurement-status { border-radius: 999px; padding: 3px 9px; font-weight: 600; background: var(--ui-neutral-bg); color: var(--ui-neutral-fg); }
html body.workspace-ui .procurement-status.submitted, html body.workspace-ui .procurement-status.warehouse_review,
html body.workspace-ui .procurement-status.final_review, html body.workspace-ui .procurement-status.admin_review { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .procurement-status.processing, html body.workspace-ui .procurement-status.admin_processing { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .procurement-status.approved, html body.workspace-ui .procurement-status.completed { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .procurement-status.rejected, html body.workspace-ui .procurement-status.returned { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }

/* ---------- 15. 采购申请详情与台账（第 6 阶段；含 5.3 库存交接、行政部办公用品台账） ---------- */
/* 面板标题：去掉旧版大上边距 */
html body.workspace-ui:not([data-workspace-section="production"]) main .panel > h2:first-child { margin: 0 0 12px; font-size: 16px; line-height: 1.4; }
/* 空内容面板（只有“暂无…”一句）收成一行 */
html body.workspace-ui main section.panel:has(> h2:first-child + p.muted:last-child) { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 16px; }
html body.workspace-ui main section.panel:has(> h2:first-child + p.muted:last-child) > h2 { margin: 0; }
html body.workspace-ui main section.panel:has(> h2:first-child + p.muted:last-child) > p { margin: 0; font-size: 13px; }

/* 编号与基本信息：与任务详情一致 */
html body.workspace-ui dl.procurement-detail-grid {
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 14px 24px;
  margin: 0 0 16px;
  padding: 16px 18px;
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
}
html body.workspace-ui dl.procurement-detail-grid > div { min-height: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui dl.procurement-detail-grid dt { color: var(--ws-muted); font-size: 12px; font-weight: 400; }
html body.workspace-ui dl.procurement-detail-grid dd { margin: 2px 0 0; color: var(--ws-ink); font-size: 14px; font-weight: 500; }

@media (max-width: 760px) {
  html body.workspace-ui dl.procurement-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; padding: 14px; }
  html body.workspace-ui main > .toolbar h1 { font-size: 20px; overflow-wrap: anywhere; }
}

/* 操作记录：细时间线 */
html body.workspace-ui ul.procurement-log { list-style: none; margin: 0; padding: 0; }
html body.workspace-ui ul.procurement-log > li { position: relative; margin: 0; padding: 8px 0 8px 18px; border-top: 1px solid var(--ui-row-line); color: var(--ui-text-2); font-size: 13px; line-height: 1.5; }
html body.workspace-ui ul.procurement-log > li:first-child { border-top: 0; }
html body.workspace-ui ul.procurement-log > li::before { content: ""; position: absolute; left: 2px; top: 15px; width: 6px; height: 6px; border-radius: 50%; background: var(--ui-neutral-dot); }
html body.workspace-ui ul.procurement-log > li:first-child::before { background: var(--ui-run-dot); }

/* 审批与核验卡片 */
html body.workspace-ui :is(.approval-row, .question-row) { border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; padding: 12px 14px; }

/* 5.3 库存领用 / 调拨交接：一眼看出“已转仓库办理” */
html body.workspace-ui section.panel[data-purchase-stock] { border-left: 3px solid var(--ui-run-dot); }
html body.workspace-ui [data-purchase-stock] > p { margin: 0; color: var(--ui-text-2); font-size: 13px; }
html body.workspace-ui [data-purchase-stock] > ul { list-style: none; margin: 12px 0 0; padding: 0; border: 1px solid var(--ws-line); border-radius: 6px; }
html body.workspace-ui [data-purchase-stock] > ul > li { padding: 10px 12px; border-top: 1px solid var(--ui-row-line); font-size: 14px; color: var(--ws-ink); overflow-wrap: anywhere; }
html body.workspace-ui [data-purchase-stock] > ul > li:first-child { border-top: 0; }
html body.workspace-ui [data-purchase-stock] > ul > li a { font-weight: 600; color: var(--ws-accent-dark); }
html body.workspace-ui [data-purchase-stock] form { display: grid; gap: 8px; max-width: 560px; margin-top: 14px; }
html body.workspace-ui [data-purchase-stock] form label { display: grid; gap: 6px; font-size: 13px; color: var(--ui-text-2); }
html body.workspace-ui [data-purchase-stock] form textarea { width: 100%; min-height: 64px; box-sizing: border-box; }
html body.workspace-ui [data-purchase-stock] form .button { justify-self: start; }
html body.workspace-ui .procurement-status.stock_fulfillment { background: var(--ui-run-bg); color: var(--ui-run-fg); }

/* 台账统计条与筛选 */
html body.workspace-ui .procurement-filter { align-items: end; }

/* ---------- 16. 员工头像（本人上传照片；无照片显示姓氏首字） ---------- */
html body.workspace-ui .user-avatar { flex: none; box-sizing: border-box; border-radius: 999px; vertical-align: middle; }
html body.workspace-ui img.user-avatar { display: inline-block; object-fit: cover; background: #e3eeec; }
html body.workspace-ui span.user-avatar--initial { display: inline-grid; place-items: center; background: #e3eeec; color: var(--ws-accent-dark); font-weight: 700; line-height: 1; }
html body.workspace-ui span.user-avatar--initial[data-avatar-size="20"] { width: 20px; height: 20px; font-size: 10px; }
html body.workspace-ui span.user-avatar--initial[data-avatar-size="24"] { width: 24px; height: 24px; font-size: 11px; }
html body.workspace-ui span.user-avatar--initial[data-avatar-size="26"],
html body.workspace-ui span.user-avatar--initial[data-avatar-size="28"] { width: 28px; height: 28px; font-size: 12px; }
html body.workspace-ui span.user-avatar--initial[data-avatar-size="32"] { width: 32px; height: 32px; font-size: 13px; }
html body.workspace-ui span.user-avatar--initial[data-avatar-size="40"] { width: 40px; height: 40px; font-size: 15px; }
html body.workspace-ui span.user-avatar--initial[data-avatar-size="64"] { width: 64px; height: 64px; font-size: 24px; }
html body.workspace-ui span.user-avatar--initial[data-avatar-size="96"] { width: 96px; height: 96px; font-size: 36px; }
/* 顶部栏：照片加一圈细边，防止浅色照片融进白底 */
html body.workspace-ui img.account-avatar { width: 32px; height: 32px; border: 1px solid var(--ws-line); background: #fff; }
html body.workspace-ui span.user-avatar--initial.account-avatar { background: var(--ws-accent); color: #fff; }
/* 任务中心责任人 */
html body.workspace-ui .ui-person img.ui-avatar { width: 26px; height: 26px; border: 1px solid var(--ws-line); }
html body.workspace-ui .ui-person span.user-avatar--initial.ui-avatar { width: 26px; height: 26px; font-size: 12px; }
/* 记录里的小头像 */
html body.workspace-ui .ui-inline-avatar { width: 20px; height: 20px; margin: -2px 6px 0 0; font-size: 10px; }
html body.workspace-ui ul.procurement-log > li:has(> .user-avatar) { padding-left: 0; }
html body.workspace-ui ul.procurement-log > li:has(> .user-avatar)::before { display: none; }
/* 任务操作时间线 */
html body.workspace-ui .event-list > article:has(> .ui-event-avatar) { position: relative; padding-left: 40px; }
html body.workspace-ui .event-list > article > .ui-event-avatar { position: absolute; left: 0; top: 4px; width: 28px; height: 28px; font-size: 12px; }
/* 我的资料 / 人事档案的大头像 */
html body.workspace-ui [data-avatar-profile] .user-avatar,
html body.workspace-ui img.user-avatar[width="96"] { width: 96px; height: 96px; border: 1px solid var(--ws-line); }

/* 我的资料：头像在左，上传操作在右；删除按钮与上传按钮并排 */
html body.workspace-ui section[data-avatar-profile] { display: grid; grid-template-columns: 96px minmax(0, 1fr); column-gap: 24px; align-items: start; }
html body.workspace-ui section[data-avatar-profile] > h2 { grid-column: 1 / -1; }
html body.workspace-ui section[data-avatar-profile] > p:first-of-type { grid-column: 1; grid-row: 2 / span 2; margin: 0; }
html body.workspace-ui section[data-avatar-profile] > form { grid-column: 2; margin: 0; }
html body.workspace-ui section[data-avatar-profile] > form + form { margin-top: 8px; }
html body.workspace-ui section[data-avatar-profile] > form p { margin: 0 0 8px; }
html body.workspace-ui section[data-avatar-profile] > form p.muted { font-size: 12px; }
@media (max-width: 520px) {
  html body.workspace-ui section[data-avatar-profile] { grid-template-columns: 72px minmax(0, 1fr); column-gap: 16px; }
  html body.workspace-ui section[data-avatar-profile] .user-avatar { width: 72px; height: 72px; }
}

/* ---------- 17. 旧页面页头与空表格（第 6 阶段） ---------- */
/* 页头不再套白卡，和工作台、任务中心的页头一致 */
html body.workspace-ui main > .toolbar { background: transparent; border: 0; border-radius: 0; padding: 0; box-shadow: none; margin: 4px 0 18px; align-items: center; }
html body.workspace-ui main > .toolbar h1 { font-size: 24px; line-height: 1.3; }
html body.workspace-ui main > .toolbar .muted { margin-top: 2px; font-size: 13px; }
/* 空表格：居中、浅色，一眼看出“没有数据”而不是表格坏了 */
html body.workspace-ui main td[colspan]:only-child { text-align: center; padding: 28px 12px; color: var(--ws-muted); font-size: 13px; background: #fff; }
@media (max-width: 760px) {
  html body.workspace-ui main td[colspan]:only-child { text-align: left; padding-left: 16px; }
}

/* ---------- 18. 发起任务表单（独立页）：白底面板，短字段两两并排 ---------- */
html body.workspace-ui .task-create-page form.company-form {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px 20px;
  max-width: 880px;
  padding: 20px 24px;
  border: 1px solid var(--ws-line);
  border-radius: 8px;
  background: #fff;
}
html body.workspace-ui .task-create-page form.company-form > * { grid-column: 1 / -1; }
html body.workspace-ui .task-create-page form.company-form > label:has(:is([name="task_scope"], [name="task_category"], [name="due_at"], [name="priority"])) { grid-column: auto; }
html body.workspace-ui .task-create-page form.company-form label { color: var(--ui-text-2); font-weight: 600; }
html body.workspace-ui .task-create-page form.company-form :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea) {
  min-height: 40px;
  border-color: var(--ws-control-border);
  border-radius: 6px;
  color: var(--ws-ink);
  font-weight: 400;
}
html body.workspace-ui .task-create-page form.company-form .form-actions { display: flex; gap: 8px; padding-top: 16px; border-top: 1px solid var(--ws-line); }
@media (max-width: 760px) {
  html body.workspace-ui .task-create-page form.company-form { grid-template-columns: minmax(0, 1fr); padding: 16px; }
}
html body.workspace-ui .task-create-page form.company-form label { margin: 0; gap: 6px; }
html body.workspace-ui .task-create-page form.company-form .field-help { color: var(--ws-muted); font-size: 12px; font-weight: 400; }
html body.workspace-ui .task-create-page form.company-form > label:has(> input[type="checkbox"]) { display: grid; grid-template-columns: auto auto minmax(0, 1fr); align-items: center; justify-content: start; column-gap: 10px; }
html body.workspace-ui .task-create-page form.company-form > label > input[type="checkbox"] { width: 18px; height: 18px; margin: 0; }
html body.workspace-ui .task-create-page form.company-form .form-actions :is(.primary-button, .secondary-button) { min-height: 40px; padding: 0 16px; border-radius: 6px; font-size: 14px; font-weight: 600; display: inline-flex; align-items: center; }
html body.workspace-ui .task-create-page form.company-form .form-actions .secondary-button { border: 1px solid var(--ws-control-border); background: #fff; color: var(--ws-ink); }

/* ---------- 19. 会议表单：参会岗位 / 人员选择框（Django 5 输出 div，不是 ul） ---------- */
html body.workspace-ui div:is(.meeting-position-options, .meeting-user-options) {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr));
  gap: 2px 10px;
  max-height: 232px;
  overflow: auto;
  margin: 0;
  padding: 8px;
  border: 1px solid var(--ws-line);
  border-radius: 6px;
  background: #fff;
}
html body.workspace-ui div:is(.meeting-position-options, .meeting-user-options) > div { margin: 0; min-width: 0; }
html body.workspace-ui div:is(.meeting-position-options, .meeting-user-options) > div[hidden] { display: none; }
html body.workspace-ui div:is(.meeting-position-options, .meeting-user-options) label {
  display: flex; align-items: center; gap: 8px; min-height: 30px; margin: 0; padding: 3px 8px;
  border-radius: 5px; font-size: 13px; font-weight: 400; line-height: 1.35; color: var(--ws-ink); cursor: pointer;
}
html body.workspace-ui div:is(.meeting-position-options, .meeting-user-options) label:hover { background: var(--ws-surface-soft, #f4f6f5); }
html body.workspace-ui div:is(.meeting-position-options, .meeting-user-options) label:has(input:checked) { background: var(--ui-run-bg); color: var(--ui-run-fg); font-weight: 600; }
html body.workspace-ui div:is(.meeting-position-options, .meeting-user-options) input { flex: none; width: 16px; height: 16px; min-width: 0; margin: 0; }
html body.workspace-ui .meeting-picker-search { width: 100%; margin-bottom: 8px; }

/* ---------- 20. 统一表单组件（.ui-form / _form_field.html / select[data-picker]） ---------- */
html body.workspace-ui .ui-form { max-width: 880px; }
html body.workspace-ui .ui-form-section { margin: 0 0 16px; padding: 20px 24px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .ui-form-section > h2 { margin: 0 0 4px; font-size: 16px; line-height: 1.4; color: var(--ws-ink); }
html body.workspace-ui .ui-form-section > .ui-form-note { margin: 0 0 14px; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .ui-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 20px; }
html body.workspace-ui .ui-form-section > h2 + .ui-form-grid { margin-top: 14px; }
html body.workspace-ui .ui-field { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
html body.workspace-ui .ui-field--half { grid-column: auto; }
html body.workspace-ui .ui-field-label { color: var(--ui-text-2); font-size: 13px; font-weight: 600; line-height: 1.4; }
html body.workspace-ui .ui-required { margin-left: 3px; color: #b42318; font-weight: 700; }
html body.workspace-ui .ui-field :is(input:not([type=checkbox]):not([type=radio]):not([type=file]), select, textarea) {
  box-sizing: border-box; width: 100%; min-height: 40px; padding: 8px 12px;
  border: 1px solid var(--ws-control-border); border-radius: 6px; background: #fff;
  color: var(--ws-ink); font: inherit; font-size: 14px; font-weight: 400;
}
html body.workspace-ui .ui-field textarea { min-height: 88px; resize: vertical; line-height: 1.5; }
html body.workspace-ui .ui-field :is(input, select, textarea):focus { outline: 2px solid var(--ws-accent); outline-offset: 0; border-color: var(--ws-accent); }
html body.workspace-ui .ui-field input[type=file] { padding: 8px; border: 1px dashed var(--ws-control-border); border-radius: 6px; background: var(--ws-surface-soft); font-size: 13px; }
html body.workspace-ui .ui-help { color: var(--ws-muted); font-size: 12px; font-weight: 400; line-height: 1.45; }
html body.workspace-ui .ui-error { color: #b42318; font-size: 12px; font-weight: 600; }
html body.workspace-ui .ui-field.has-error :is(input, select, textarea, .ui-picker-box) { border-color: #b42318; }
html body.workspace-ui .ui-field--check { justify-content: center; }
html body.workspace-ui .ui-check { display: inline-flex; align-items: center; gap: 10px; min-height: 40px; color: var(--ws-ink); font-size: 14px; font-weight: 500; cursor: pointer; }
html body.workspace-ui .ui-check input { width: 18px; height: 18px; margin: 0; accent-color: var(--ws-accent); }
/* 选填信息折叠区 */
html body.workspace-ui details.ui-form-more { grid-column: 1 / -1; border-top: 1px solid var(--ws-line); padding-top: 12px; }
html body.workspace-ui details.ui-form-more > summary { cursor: pointer; color: var(--ws-accent-dark); font-size: 14px; font-weight: 600; list-style: none; }
html body.workspace-ui details.ui-form-more > summary::-webkit-details-marker { display: none; }
html body.workspace-ui details.ui-form-more > summary::before { content: "+"; display: inline-block; width: 18px; font-weight: 700; }
html body.workspace-ui details.ui-form-more[open] > summary::before { content: "−"; }
html body.workspace-ui details.ui-form-more > .ui-form-grid { margin-top: 14px; }
/* 提交区 */
html body.workspace-ui .ui-form-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 4px 0 24px; }
html body.workspace-ui .ui-form-actions .ui-form-hint { margin-left: auto; color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui form.is-submitting { cursor: progress; }
html body.workspace-ui :is(button, .button, .ui-btn).is-busy { position: relative; color: transparent !important; pointer-events: none; }
html body.workspace-ui :is(button, .button, .ui-btn).is-busy::after {
  content: ""; position: absolute; inset: 0; margin: auto; width: 16px; height: 16px;
  border: 2px solid rgba(255,255,255,.55); border-top-color: #fff; border-radius: 50%; animation: ui-spin .7s linear infinite;
}
html body.workspace-ui :is(.button.secondary, .ui-btn:not(.ui-btn--primary)).is-busy::after { border-color: rgba(0,0,0,.2); border-top-color: var(--ws-ink); }
@keyframes ui-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { html body.workspace-ui :is(button, .button, .ui-btn).is-busy::after { animation: none; } }

/* 搜索选择器 */
html body.workspace-ui select.ui-picker-native { position: absolute !important; width: 1px !important; height: 1px !important; min-height: 0 !important; padding: 0 !important; border: 0 !important; opacity: 0; pointer-events: none; }
html body.workspace-ui .ui-picker { position: relative; width: 100%; }
html body.workspace-ui .ui-picker-box {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px; box-sizing: border-box; min-height: 40px; padding: 4px 8px;
  border: 1px solid var(--ws-control-border); border-radius: 6px; background: #fff; cursor: text;
}
html body.workspace-ui .ui-picker.is-open .ui-picker-box, html body.workspace-ui .ui-picker-box:focus-within { outline: 2px solid var(--ws-accent); outline-offset: 0; border-color: var(--ws-accent); }
html body.workspace-ui .ui-picker-chips { display: contents; }
html body.workspace-ui .ui-chip-picked { display: inline-flex; align-items: center; gap: 4px; max-width: 100%; padding: 2px 4px 2px 10px; border-radius: 999px; background: var(--ui-run-bg); color: var(--ui-run-fg); font-size: 13px; font-weight: 600; line-height: 1.6; }
html body.workspace-ui .ui-chip-picked-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html body.workspace-ui .ui-chip-picked-x { display: grid; place-items: center; width: 20px; height: 20px; min-height: 0; padding: 0; border: 0; border-radius: 50%; background: transparent; color: inherit; font-size: 15px; line-height: 1; cursor: pointer; }
html body.workspace-ui .ui-chip-picked-x:hover { background: rgba(19, 94, 99, .14); }
html body.workspace-ui .ui-picker-box input.ui-picker-input { flex: 1 1 140px; width: auto !important; min-width: 120px; min-height: 30px !important; padding: 4px !important; border: 0 !important; border-radius: 0 !important; outline: 0 !important; box-shadow: none !important; background: transparent !important; font-size: 14px; }
html body.workspace-ui .ui-picker:not(.ui-picker--multi).has-value input.ui-picker-input::placeholder { color: var(--ws-ink); opacity: 1; }
html body.workspace-ui .ui-picker-list {
  position: absolute; z-index: 40; left: 0; right: 0; top: calc(100% + 4px); max-height: 300px; overflow: auto; margin: 0; padding: 4px;
  list-style: none; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; box-shadow: 0 8px 24px rgba(20, 30, 35, .12);
}
html body.workspace-ui .ui-picker-group { padding: 8px 10px 4px; color: var(--ws-muted); font-size: 12px; font-weight: 600; }
html body.workspace-ui .ui-picker-option { display: flex; flex-direction: column; gap: 1px; padding: 7px 10px 7px 32px; border-radius: 6px; cursor: pointer; position: relative; }
html body.workspace-ui .ui-picker-option::before { content: ""; position: absolute; left: 10px; top: 10px; width: 14px; height: 14px; border: 1px solid var(--ws-control-border); border-radius: 4px; background: #fff; }
html body.workspace-ui .ui-picker:not(.ui-picker--multi) .ui-picker-option::before { border-radius: 50%; }
html body.workspace-ui .ui-picker-option.is-selected::before { border-color: var(--ws-accent); background: var(--ws-accent); box-shadow: inset 0 0 0 3px #fff; }
html body.workspace-ui .ui-picker-option:hover, html body.workspace-ui .ui-picker-option.is-active { background: var(--ws-surface-soft); }
html body.workspace-ui .ui-picker-option-label { color: var(--ws-ink); font-size: 14px; font-weight: 400; line-height: 1.4; }
html body.workspace-ui .ui-picker-option-meta { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .ui-picker-empty { padding: 10px; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .ui-picker-count { margin-top: 4px; color: var(--ws-muted); font-size: 12px; }

@media (max-width: 760px) {
  html body.workspace-ui .ui-form-section { padding: 16px; }
  html body.workspace-ui .ui-form-grid { grid-template-columns: minmax(0, 1fr); }
  html body.workspace-ui .ui-field--half { grid-column: 1 / -1; }
  html body.workspace-ui .ui-field :is(input, select, textarea) { font-size: 16px; } /* 防止 iPhone 聚焦放大 */
  html body.workspace-ui .ui-form-actions { position: sticky; bottom: 0; z-index: 20; margin: 0 -16px; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); border-top: 1px solid var(--ws-line); background: #fff; }
  html body.workspace-ui .ui-form-actions :is(button[type=submit], .ui-btn--primary) { flex: 1 1 auto; }
  html body.workspace-ui .ui-form-actions .ui-form-hint { display: none; }
}

/* 20b. 表单细节修正（第一批复核） */
html body.workspace-ui .ui-form .ui-field-label { margin: 0; }
html body.workspace-ui .ui-form .ui-field input[type=file] { width: 100%; max-width: none; box-sizing: border-box; }
html body.workspace-ui main > .toolbar:has(+ form.ui-form) { max-width: 880px; }
/* 折叠区独立放在基本信息之后时，做成同样的白底面板 */
html body.workspace-ui form.ui-form > details.ui-form-more {
  margin: 0 0 16px; padding: 14px 24px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff;
}
html body.workspace-ui form.ui-form > details.ui-form-more[open] { padding-bottom: 20px; }
html body.workspace-ui form.ui-form > details.ui-form-more > summary { padding: 2px 0; }
/* 单选选择器：右侧加下拉箭头，一眼看出可以点选 */
html body.workspace-ui .ui-picker:not(.ui-picker--multi) .ui-picker-box { padding-right: 34px; }
html body.workspace-ui .ui-picker:not(.ui-picker--multi) .ui-picker-box::after {
  content: ""; position: absolute; right: 14px; top: 50%; width: 7px; height: 7px; margin-top: -5px;
  border-right: 1.6px solid var(--ws-muted); border-bottom: 1.6px solid var(--ws-muted); transform: rotate(45deg); pointer-events: none;
}
html body.workspace-ui .ui-picker:not(.ui-picker--multi).is-open .ui-picker-box::after { margin-top: -1px; transform: rotate(225deg); }
html body.workspace-ui .ui-form-actions { margin-top: 0; }
@media (max-width: 760px) {
  html body.workspace-ui form.ui-form > details.ui-form-more { padding: 12px 16px; }
}
html body.workspace-ui .ui-field input.localized-file-native { width: 1px !important; min-width: 0 !important; max-width: 1px !important; padding: 0 !important; border: 0 !important; }

/* 20c. 带明细表的表单（采购、日常检查）：基本信息保持 880 宽，明细区可放宽到 1180 并做成白底面板 */
html body.workspace-ui form.ui-form:has(> .purchase-lines, > .table-wrap) { max-width: 1180px; }
html body.workspace-ui form.ui-form:has(> .purchase-lines, > .table-wrap) > :is(.ui-form-section, details.ui-form-more) { max-width: 880px; box-sizing: border-box; }
html body.workspace-ui main > .toolbar:has(+ form.ui-form:has(> .purchase-lines, > .table-wrap)) { max-width: 1180px; }
html body.workspace-ui form.ui-form > .purchase-lines-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 8px 0 10px; }
html body.workspace-ui form.ui-form > .purchase-lines-head :is(h2, h3) { margin: 0; font-size: 16px; }
html body.workspace-ui form.ui-form > h2 { margin: 8px 0 10px; font-size: 16px; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) {
  margin: 0 0 16px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; overflow: auto;
}
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) :is(.auto-table-wrap, .table-wrap) { margin: 0; border: 0; border-radius: 0; box-shadow: none; overflow: visible; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) table { width: 100%; min-width: 0; table-layout: auto; border-collapse: collapse; margin: 0; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) th { padding: 10px 8px; background: var(--ui-head-bg); color: var(--ui-text-2); font-size: 12px; font-weight: 600; white-space: nowrap; text-align: left; border-bottom: 1px solid var(--ws-line); }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) td { padding: 8px; vertical-align: top; border-bottom: 1px solid var(--ui-row-line); }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) tr:last-child td { border-bottom: 0; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) table:not(.md-table) :is(th, td):first-child { width: 36px; padding-left: 14px; color: var(--ws-muted); }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) td :is(input:not([type=checkbox]):not([type=file]):not([type=hidden]), select, textarea) {
  box-sizing: border-box; width: 100%; min-width: 88px; min-height: 36px; padding: 6px 10px;
  border: 1px solid var(--ws-control-border); border-radius: 6px; background: #fff; font: inherit; font-size: 14px;
}
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) td textarea { min-height: 64px; min-width: 180px; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) td:last-child:has(> button, > .button) { white-space: nowrap; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) td > :is(button, .button) + :is(button, .button) { margin-left: 4px; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) td:last-child > :is(button, .button) { display: inline-flex; margin-top: 0; }
html body.workspace-ui form.ui-form > p.muted { margin: -6px 0 14px; font-size: 12px; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) table:not(.md-table) :is(th, td):first-child { min-width: 0 !important; width: 36px !important; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) th:not(:first-child) { min-width: 72px; }
html body.workspace-ui form.ui-form .purchase-line-actions { display: flex; flex-direction: row; flex-wrap: nowrap; gap: 4px; }
@media (max-width: 760px) { html body.workspace-ui form.ui-form .purchase-line-actions { flex-wrap: wrap; } }
html body.workspace-ui form.ui-form .purchase-line-actions .button { margin: 0; }
html body.workspace-ui form.ui-form > :is(.purchase-lines, .table-wrap) td :is(input:not([type=checkbox]):not([type=file]):not([type=hidden]), select) { min-width: 72px; }

/* 20d. 多行表单（生产委托 / 人员需求等 formset）：每行一张卡片，行号做小标签，复制 / 删除放卡片底部一行 */
html body.workspace-ui form.ui-form [data-formset-rows] { display: flex; flex-direction: column; gap: 14px; }
html body.workspace-ui form.ui-form [data-formset-row] { position: relative; padding: 0; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui form.ui-form [data-formset-row] > h2[data-formset-number] {
  display: inline-flex; align-items: center; margin: 14px 24px 0; padding: 2px 10px; border-radius: 999px;
  background: var(--ui-run-bg); color: var(--ui-run-fg); font-size: 12px; font-weight: 700;
}
html body.workspace-ui form.ui-form [data-formset-row] > h2[data-formset-number]::before { content: "#"; margin-right: 1px; }
html body.workspace-ui form.ui-form [data-formset-row] > :is(.ui-form-section, details.ui-form-more) { margin: 0; border: 0; border-radius: 0; background: transparent; }
html body.workspace-ui form.ui-form [data-formset-row] > .ui-form-section { padding-top: 10px; }
html body.workspace-ui form.ui-form [data-formset-row] > details.ui-form-more { padding: 10px 24px; border-top: 1px solid var(--ui-row-line); }
html body.workspace-ui form.ui-form [data-formset-row] > .actions {
  display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin: 0; padding: 10px 24px; border-top: 1px solid var(--ui-row-line);
}
html body.workspace-ui form.ui-form [data-formset-row] > .actions .ui-field { width: auto; flex: none; }
html body.workspace-ui form.ui-form [data-formset-row] > .actions .ui-check { min-height: 32px; white-space: nowrap; color: #b42318; font-size: 13px; }
html body.workspace-ui form.ui-form [data-formset-row]:has(> .actions input[type=checkbox]:checked) { opacity: .55; border-style: dashed; }
html body.workspace-ui form.ui-form > section:has(> [data-formset-rows]) > h2 { margin: 0 0 12px; font-size: 16px; }
html body.workspace-ui form.ui-form:has([data-formset-rows]) { max-width: 880px; }
@media (max-width: 760px) {
  html body.workspace-ui form.ui-form [data-formset-row] > h2[data-formset-number] { margin: 12px 16px 0; }
  html body.workspace-ui form.ui-form [data-formset-row] > :is(details.ui-form-more, .actions) { padding-left: 16px; padding-right: 16px; }
}
html body.workspace-ui form.ui-form > section:has(> [data-formset-rows]) { margin-bottom: 16px; }

/* 20e. 统一导入页：步骤编号 + 大号拖放区 + 预检结果面板 */
html body.workspace-ui form[data-import-form] { counter-reset: import-step; }
html body.workspace-ui form[data-import-form] :is([data-import-drop] > h2, [data-import-preview] > h2) { display: flex; align-items: center; gap: 10px; }
html body.workspace-ui form[data-import-form] :is([data-import-drop] > h2, [data-import-preview] > h2)::before {
  counter-increment: import-step; content: counter(import-step);
  display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%;
  background: var(--ws-accent); color: #fff; font-size: 13px; font-weight: 700;
}
html body.workspace-ui [data-import-drop] .ui-field input[type=file]:not(.localized-file-native),
html body.workspace-ui [data-import-drop] .localized-file-picker {
  min-height: 120px; padding: 20px; border: 2px dashed var(--ws-control-border); border-radius: 10px;
  background: var(--ws-surface-soft); text-align: center; cursor: pointer;
}
html body.workspace-ui [data-import-drop] .ui-field:has(input[type=file]) { position: relative; }
html body.workspace-ui [data-import-drop]::after {
  content: "可把文件直接拖到这里"; display: block; margin-top: 8px; color: var(--ws-muted); font-size: 12px;
}
html[lang^="ru"] body.workspace-ui [data-import-drop]::after { content: "Файл можно перетащить сюда"; }
html body.workspace-ui [data-import-drop]:hover :is(input[type=file]:not(.localized-file-native), .localized-file-picker) { border-color: var(--ws-accent); background: #eef6f5; }
html body.workspace-ui [data-import-preview]:not(:empty) { margin: 0 0 16px; }
html body.workspace-ui [data-import-preview] > h2 { margin: 4px 0 8px; font-size: 16px; }
html body.workspace-ui [data-import-preview] > p { margin: 0 0 10px; color: var(--ui-text-2); }
html body.workspace-ui [data-import-preview] > .table-wrap { border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; overflow: auto; }
html body.workspace-ui [data-import-preview] .form-errors { margin-bottom: 12px; padding: 10px 14px; border-radius: 8px; background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui [data-import-preview] .form-errors .errorlist { margin: 0; padding-left: 18px; }
html body.workspace-ui [data-import-preview] tr.is-error td { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui [data-import-status]:not(:empty) { color: #b42318; font-size: 13px; }
html body.workspace-ui [data-import-drop] .localized-file-picker { display: flex !important; flex-direction: column; align-items: center; justify-content: center; gap: 8px; max-width: none !important; width: 100%; box-sizing: border-box; }
html body.workspace-ui [data-import-drop] .localized-file-button { min-height: 36px; padding: 0 16px; border: 1px solid var(--ws-control-border); border-radius: 6px; background: #fff; font-weight: 600; }
html body.workspace-ui [data-import-drop] .localized-file-status { color: var(--ws-muted); font-size: 13px; }
@media (max-width: 760px) { html body.workspace-ui [data-import-drop]::after { display: none; } }

/* 20f. BOM 版本表单（开关内页面）：物料行做成卡片，必填星不再单独换行，底部保存栏与页面同色 */
html body.workspace-ui .bom-form .bom-field .ui-field-label { display: block; margin: 0; }
html body.workspace-ui .bom-form .bom-field label { margin-bottom: 0; }
html body.workspace-ui .bom-form .bom-section { margin-top: 8px; padding-top: 0; border-top: 0; }
html body.workspace-ui .bom-form .bom-section > h2 { margin: 0 0 12px; font-size: 16px; }
html body.workspace-ui .bom-form [data-bom-lines] { display: flex; flex-direction: column; gap: 12px; margin-bottom: 12px; }
html body.workspace-ui .bom-form fieldset.bom-line { margin: 0; padding: 12px 20px 16px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .bom-form fieldset.bom-line + .bom-line { margin-top: 0; }
html body.workspace-ui .bom-form fieldset.bom-line > legend {
  float: left; width: auto; margin: 0 0 12px; padding: 2px 10px; border-radius: 999px;
  background: var(--ui-run-bg); color: var(--ui-run-fg); font-size: 12px; font-weight: 700;
}
html body.workspace-ui .bom-form fieldset.bom-line > legend + * { clear: both; }
html body.workspace-ui .bom-form .bom-line-grid { clear: both; gap: 14px 16px; }
html body.workspace-ui .bom-form .bom-checkbox { align-self: end; min-height: 40px; }
html body.workspace-ui .bom-form .bom-checkbox .ui-field { width: auto; }
html body.workspace-ui .bom-form fieldset.bom-line:has(.bom-checkbox input[name$="-DELETE"]:checked) { opacity: .55; border-style: dashed; }
html body.workspace-ui .bom-form .bom-form-footer { margin-top: 0; padding: 12px 0; border-top: 1px solid var(--ws-line); background: var(--ui-page); }
html body.workspace-ui .bom-form .bom-feedback:not([hidden]) { border-radius: 8px; }
html body.workspace-ui .bom-form .bom-current { margin: 0 12px 12px 0; font-size: 13px; }
html body.workspace-ui .bom-page .bom-commands > a { display: inline-flex; align-items: center; min-height: 38px; padding: 0 14px; border: 1px solid var(--ws-control-border); border-radius: 6px; background: #fff; color: var(--ws-ink); font-weight: 600; text-decoration: none; }
@media (max-width: 760px) { html body.workspace-ui .bom-form fieldset.bom-line { padding: 12px 16px 14px; } }

/* 20g. 一车间合同产品（W1）：每行一张卡片，顶部是自动生成的名称（下一行小字为另一语言）。
   卡片按“规格 / 合同数量 / 长度与重量 / 其他”分组（_w1_row.html 的 .w1-group），每组一个小标题；
   数量“根 / 米 / 吨”三格浅底并排，自动算出的参考值虚线浅色，数量组下方灰条为换算依据。 */
html body.workspace-ui form.ui-form [data-w1-row] { position: relative; }
html body.workspace-ui form.ui-form [data-w1-row] > h3[data-w1-name] {
  margin: 0; font-size: 17px; line-height: 1.4; font-weight: 700; color: var(--ws-ink);
  font-variant-numeric: tabular-nums; letter-spacing: .01em; overflow-wrap: anywhere;
}
html body.workspace-ui form.ui-form [data-w1-row] > p[data-w1-other] {
  margin: 2px 0 0; min-height: 0; font-size: 13px; line-height: 1.5; color: var(--ws-muted); font-variant-numeric: tabular-nums; overflow-wrap: anywhere;
}
html body.workspace-ui form.ui-form [data-w1-row] > p[data-w1-other]:empty { display: none; }
html body.workspace-ui form.ui-form [data-w1-row] > p[data-w1-contract-note] { margin: 8px 0 0; font-size: 13px; line-height: 1.5; }
/* 分组：组间细线，小标题；组内 12 栏网格 */
html body.workspace-ui form.ui-form [data-w1-row] > .w1-group { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--ui-row-line, #eef0f3); }
html body.workspace-ui form.ui-form [data-w1-row] > .w1-group > .w1-group-title {
  margin: 0 0 10px; font-size: 12.5px; line-height: 1.4; font-weight: 600; letter-spacing: .02em; color: var(--ws-muted);
}
/* 某组的栏位全部被隐藏（如接箍没有长度与重量）时，整组不显示 */
html body.workspace-ui form.ui-form [data-w1-row] > .w1-group:not(:has([data-w1-field]:not([hidden]))) { display: none; }
html body.workspace-ui form.ui-form [data-w1-row] > .w1-group > .ui-form-grid { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 14px 16px; margin: 0; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field] { grid-column: span 4; min-width: 0; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field] > .ui-field { grid-column: auto; display: flex; flex-direction: column; height: 100%; box-sizing: border-box; }
/* 同一行标签换行高度不同时，输入框仍底边对齐 */
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field] > .ui-field > .ui-field-label + * { margin-top: auto; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field][hidden] { display: none; }
/* 合同数量组：根 | 米 | 吨 | 计量单位 一行；交期另起 */
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > :is([data-w1-field="pieces"], [data-w1-field="metres"], [data-w1-field="tonnes"], [data-w1-field="contract_unit"]) { grid-column: span 3; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > :is([data-w1-field="pieces"], [data-w1-field="metres"], [data-w1-field="tonnes"]) {
  padding: 10px 12px 12px; border-radius: 6px; background: #f6f8fb; box-shadow: inset 0 0 0 1px #e8edf3;
}
html body.workspace-ui form.ui-form [data-w1-row] :is([data-w1-field="pieces"], [data-w1-field="metres"], [data-w1-field="tonnes"]) input { font-variant-numeric: tabular-nums; text-align: right; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="contract_unit"] { align-self: end; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="due_date"] { grid-column: 1 / span 4; }
/* 长度与重量组：长度范围 | 定尺 | 平均长度 | 单位重量；单根最短 | 单根最长 */
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="fixed_length"] { grid-column: span 2; align-self: end; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="fixed_length"] .ui-check { min-height: 40px; display: flex; align-items: center; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > :is([data-w1-field="average_length"], [data-w1-field="unit_weight"]) { grid-column: span 3; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="min_length"] { grid-column: 1 / span 4; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="max_length"] { grid-column: span 4; }
html body.workspace-ui form.ui-form [data-w1-row] :is([data-w1-field="average_length"], [data-w1-field="unit_weight"], [data-w1-field="min_length"], [data-w1-field="max_length"]) input { font-variant-numeric: tabular-nums; }
/* 其他组：批准规格 | 备注 */
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="approved_specification"] { grid-column: span 5; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="note"] { grid-column: span 7; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="note"] textarea { min-height: 40px; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="confirm_conversion"] { grid-column: 1 / -1; }
/* 参考值（系统换算、未手改） */
html body.workspace-ui form.ui-form [data-w1-row] .ui-field input.muted:not([type=checkbox]):not([type=radio]):not([type=file]) { color: var(--ws-muted); background: #fbfcfd; border-style: dashed; }
html body.workspace-ui form.ui-form [data-w1-row] :is([data-w1-field="pieces"], [data-w1-field="metres"], [data-w1-field="tonnes"]) .ui-field-label { display: flex; align-items: center; flex-wrap: wrap; min-height: 20px; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-field-label small[data-w1-reference] {
  display: inline-block; margin-left: 6px; padding: 0 7px; border-radius: 999px; background: #eef1f5; color: var(--ws-muted);
  font-size: 11px; font-weight: 600; line-height: 18px;
}
html body.workspace-ui form.ui-form [data-w1-row] .ui-field-label small[data-w1-reference] { font-size: 0; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-field-label small[data-w1-reference]::after { content: "参考"; font-size: 11px; }
html[lang^="ru"] body.workspace-ui form.ui-form [data-w1-row] .ui-field-label small[data-w1-reference]::after { content: "Справочно"; }
/* 换算依据：紧跟在数量组下面 */
html body.workspace-ui form.ui-form [data-w1-row] > p[data-w1-basis] {
  margin: 12px 0 0; padding: 8px 12px; border-left: 3px solid var(--ui-run-fg, #2563eb); border-radius: 0 6px 6px 0;
  background: #f6f8fb; color: var(--ws-muted); font-size: 12.5px; line-height: 1.6; font-variant-numeric: tabular-nums; overflow-wrap: anywhere;
}
html body.workspace-ui form.ui-form [data-w1-row] > p[data-w1-basis]:empty { display: none; }
html body.workspace-ui main > .toolbar:has(+ form.ui-form > [data-w1-row]) > a {
  display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border: 1px solid var(--ws-line); border-radius: 6px;
  background: #fff; color: var(--ws-ink); font-size: 14px; text-decoration: none;
}
html body.workspace-ui main > .toolbar:has(+ form.ui-form > [data-w1-row]) > a:hover { border-color: #c9d1db; background: #f6f8fb; }
/* 新建项目页里的合同产品区 */
html body.workspace-ui form.ui-form [data-w1-section] > h2 { margin: 0 0 12px; font-size: 16px; }
html body.workspace-ui form.ui-form [data-w1-section] [data-formset="w1"] { display: flex; flex-direction: column; gap: 14px; }
html body.workspace-ui form.ui-form [data-w1-section] [data-formset="w1"] > [data-w1-row] { margin: 0; counter-increment: w1row; }
html body.workspace-ui form.ui-form [data-w1-section] [data-formset="w1"] { counter-reset: w1row; }
html body.workspace-ui form.ui-form [data-w1-section] [data-formset="w1"] > [data-w1-row] > h3[data-w1-name] { padding-right: 96px; }
html body.workspace-ui form.ui-form [data-w1-section] [data-formset="w1"] > [data-w1-row] > h3[data-w1-name]::before {
  content: "#" counter(w1row); display: inline-block; margin-right: 8px; padding: 0 8px; border-radius: 999px;
  background: var(--ui-run-bg); color: var(--ui-run-fg); font-size: 12px; line-height: 20px; vertical-align: 2px;
}
/* “增加合同产品”为整行虚线按钮，与下方保存按钮拉开距离 */
html body.workspace-ui form.ui-form [data-w1-section] > [data-add-form="w1"] {
  display: flex; align-items: center; justify-content: center; width: 100%; margin-top: 12px; min-height: 44px;
  border: 1px dashed #c9d1db; border-radius: 8px; background: #fff; color: var(--ws-accent); font-weight: 600;
}
html body.workspace-ui form.ui-form [data-w1-section] > [data-add-form="w1"]::before { content: "+"; margin-right: 6px; font-size: 16px; line-height: 1; }
html body.workspace-ui form.ui-form [data-w1-section] > [data-add-form="w1"]:hover { border-color: var(--ws-accent); background: #f6fbfb; }
html body.workspace-ui form.ui-form:has(> [data-w1-section]:not([hidden])) > .ui-form-actions { margin-top: 24px; }
/* 删除勾选放到卡片右上角，勾选后整张卡片变淡 */
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="DELETE"] { position: absolute; top: 20px; right: 24px; }
html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="DELETE"] .ui-check { min-height: 24px; color: #b42318; font-size: 13px; white-space: nowrap; }
html body.workspace-ui form.ui-form [data-w1-row]:has([data-w1-field="DELETE"] input:checked) { opacity: .55; border-style: dashed; }
@media (max-width: 1100px) {
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field] { grid-column: span 6; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > :is([data-w1-field="pieces"], [data-w1-field="metres"], [data-w1-field="tonnes"]) { grid-column: span 4; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > :is([data-w1-field="contract_unit"], [data-w1-field="due_date"], [data-w1-field="min_length"], [data-w1-field="max_length"], [data-w1-field="approved_specification"], [data-w1-field="average_length"], [data-w1-field="unit_weight"]) { grid-column: span 6; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="fixed_length"] { grid-column: span 6; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="note"] { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  html body.workspace-ui form.ui-form [data-w1-row] > .w1-group > .ui-form-grid { gap: 12px 10px; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field] { grid-column: 1 / -1; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > :is([data-w1-field="average_length"], [data-w1-field="unit_weight"], [data-w1-field="min_length"], [data-w1-field="max_length"]) { grid-column: span 6; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="fixed_length"] .ui-check { min-height: 0; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > :is([data-w1-field="pieces"], [data-w1-field="metres"], [data-w1-field="tonnes"]) { grid-column: span 4; padding: 8px; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > :is([data-w1-field="pieces"], [data-w1-field="metres"], [data-w1-field="tonnes"]) .ui-field-label { font-size: 12px; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-field-label small[data-w1-reference] { margin-left: 2px; padding: 0 5px; }
  html body.workspace-ui form.ui-form [data-w1-row] > h3[data-w1-name] { font-size: 16px; }
  html body.workspace-ui form.ui-form [data-w1-row] .ui-form-grid > [data-w1-field="DELETE"] { top: 14px; right: 16px; }
}

/* ---------- 21. 采购到货 / 收货 / 期初库存（warehouse/arrivals*、opening-stock） ---------- */
html body.workspace-ui .ar-page { display: flex; flex-direction: column; gap: 20px; max-width: 1180px; }
html body.workspace-ui .ar-page > .ui-page-head .ui-page-title { max-width: 760px; }
html body.workspace-ui .ar-page .ui-page-sub { line-height: 1.6; }
html body.workspace-ui .ar-page .ui-btn .ui-icon { color: currentColor; }
/* 搜索条 */
html body.workspace-ui form.ar-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; padding: 0; border: 0; background: transparent; max-width: 640px; }
html body.workspace-ui form.ar-filter .ui-search { flex: 1 1 280px; }
html body.workspace-ui form.ar-filter .ui-search input { height: 36px !important; }
/* 区块标题 + 数量 */
html body.workspace-ui .ar-block > h2 { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; font-size: 16px; color: var(--ws-ink); }
html body.workspace-ui .ar-count { display: inline-grid; place-items: center; min-width: 22px; height: 20px; padding: 0 6px; box-sizing: border-box; border-radius: 999px; background: #eef1f0; color: var(--ws-muted); font-size: 12px; font-weight: 700; }
/* 表格 */
html body.workspace-ui .ar-table-wrap { overflow-x: auto; }
html body.workspace-ui main table.ar-table { width: 100%; margin: 0; border: 0; border-collapse: collapse; background: #fff; font-size: 13px; box-shadow: none; }
html body.workspace-ui main table.ar-table th { padding: 10px 14px; border: 0; border-bottom: 1px solid var(--ws-line); background: var(--ui-head-bg); color: var(--ws-muted); font-size: 12px; font-weight: 600; text-align: left; white-space: nowrap; }
html body.workspace-ui main table.ar-table td { padding: 12px 14px; border: 0; border-bottom: 1px solid var(--ui-row-line); color: var(--ws-ink); vertical-align: top; line-height: 1.45; overflow-wrap: anywhere; }
html body.workspace-ui main table.ar-table tbody tr:last-child td { border-bottom: 0; }
html body.workspace-ui main table.ar-table tbody tr:hover td { background: #fafbfa; }
html body.workspace-ui main table.ar-table th:first-child,
html body.workspace-ui main table.ar-table td:first-child { padding-left: 20px; }
html body.workspace-ui main table.ar-table .ar-num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
html body.workspace-ui main table.ar-table td b { font-weight: 600; }
html body.workspace-ui .ar-no { display: block; font-weight: 600; color: var(--ws-ink); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; word-break: break-all; }
html body.workspace-ui a.ar-no { color: var(--ws-accent-dark, #135e63); }
html body.workspace-ui .ar-sub { display: block; margin-top: 2px; color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .ar-unit { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .ar-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
html body.workspace-ui .ar-tags i { font-style: normal; }
html body.workspace-ui .ar-kind { padding: 0 6px; border-radius: 4px; background: var(--ui-neutral-bg, #f1f3f2); color: var(--ui-neutral-fg, #4d5658); font-size: 12px; line-height: 20px; font-weight: 600; }
html body.workspace-ui .ar-kind--project { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui main table.ar-table tr.ar-empty td { padding: 28px 14px; color: var(--ws-muted); text-align: center; }
/* 状态胶囊：按 data-state 上色 */
html body.workspace-ui .ar-state[data-state="pending"] { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .ar-state[data-state="pending"] .ui-dot { background: var(--ui-run-dot); }
html body.workspace-ui .ar-state:is([data-state="received"], [data-state="delivered"]) { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .ar-state:is([data-state="received"], [data-state="delivered"]) .ui-dot { background: var(--ui-wait-dot); }
html body.workspace-ui .ar-state:is([data-state="stocked"], [data-state="acknowledged"]) { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .ar-state:is([data-state="stocked"], [data-state="acknowledged"]) .ui-dot { background: var(--ui-done-dot); }
html body.workspace-ui .ar-state:is([data-state="rejected"], [data-state="returned"]) { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui .ar-state:is([data-state="rejected"], [data-state="returned"]) .ui-dot { background: var(--ui-bad-dot); }
html body.workspace-ui .ar-state--lg { padding: 5px 14px 5px 12px; font-size: 13px; white-space: normal; }

/* 详情页 */
html body.workspace-ui .ar-detail > .ui-page-head { align-items: flex-start; }
html body.workspace-ui .ar-back { display: inline-flex; align-items: center; gap: 4px; color: var(--ws-accent-dark, #135e63); font-size: 13px; text-decoration: none; }
html body.workspace-ui .ar-back:hover { text-decoration: underline; }
html body.workspace-ui .ar-receipt-no { font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
html body.workspace-ui ol.ar-steps { display: flex; margin: 0; padding: 16px 20px; list-style: none; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; counter-reset: arstep; }
html body.workspace-ui ol.ar-steps > li { position: relative; flex: 1 1 0; min-width: 0; padding: 30px 12px 0 0; counter-increment: arstep; color: var(--ws-muted); }
html body.workspace-ui ol.ar-steps > li::before {
  content: counter(arstep); position: absolute; top: 0; left: 0; z-index: 1; display: grid; place-items: center; width: 22px; height: 22px;
  box-sizing: border-box; border: 2px solid #cfd5d4; border-radius: 999px; background: #fff; color: var(--ws-muted); font-size: 12px; font-weight: 700;
}
html body.workspace-ui ol.ar-steps > li::after { content: ""; position: absolute; top: 10px; left: 26px; right: 4px; height: 2px; background: #e3e7e6; }
html body.workspace-ui ol.ar-steps > li:last-child::after { display: none; }
html body.workspace-ui ol.ar-steps > li b { display: block; color: inherit; font-size: 14px; font-weight: 600; line-height: 1.35; }
html body.workspace-ui ol.ar-steps > li small { display: block; margin-top: 2px; color: var(--ws-muted); font-size: 12px; line-height: 1.4; }
html body.workspace-ui ol.ar-steps > li.is-done { color: var(--ws-ink); }
html body.workspace-ui ol.ar-steps > li.is-done::before { content: "✓"; border-color: var(--ui-done-dot); background: var(--ui-done-dot); color: #fff; }
html body.workspace-ui ol.ar-steps > li.is-done::after { background: var(--ui-done-dot); }
html body.workspace-ui ol.ar-steps > li.is-current { color: var(--ui-run-fg); }
html body.workspace-ui ol.ar-steps > li.is-current::before { border-color: var(--ui-run-dot); background: var(--ui-run-dot); color: #fff; box-shadow: 0 0 0 4px var(--ui-run-bg); }
html body.workspace-ui ol.ar-steps > li.is-bad { color: var(--ui-bad-fg); }
html body.workspace-ui ol.ar-steps > li.is-bad::before { content: "!"; border-color: var(--ui-bad-dot); background: var(--ui-bad-dot); color: #fff; }
html body.workspace-ui ol.ar-steps > li.is-bad::after { background: var(--ui-bad-dot); }
html body.workspace-ui .ar-detail-body { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 16px; align-items: start; }
html body.workspace-ui .ar-detail-main,
html body.workspace-ui .ar-detail-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
html body.workspace-ui .ar-card { padding: 18px 20px; }
html body.workspace-ui .ar-card > h2 { margin: 0 0 12px; font-size: 15px; color: var(--ws-ink); }
html body.workspace-ui main dl.ar-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 24px; margin: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui main dl.ar-facts > div { min-width: 0; margin: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui main dl.ar-facts dt { margin: 0; color: var(--ws-muted); font-size: 12px; font-weight: 400; }
html body.workspace-ui main dl.ar-facts dd { margin: 2px 0 0; padding: 0; color: var(--ws-ink); font-size: 14px; font-weight: 500; overflow-wrap: anywhere; }
html body.workspace-ui main dl.ar-facts dd.ar-qty { font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; }
html body.workspace-ui nav.ar-links { display: flex; flex-direction: column; align-items: stretch; gap: 8px; margin: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui nav.ar-links .button { display: flex; align-items: center; justify-content: flex-start; gap: 8px; width: 100%; box-sizing: border-box; border: 1px solid var(--ws-control-border); background: #fff; color: var(--ws-ink); font-weight: 600; text-align: left; white-space: normal; line-height: 1.35; padding: 9px 12px; height: auto; min-height: 40px; }
html body.workspace-ui nav.ar-links .button:hover { background: var(--ws-surface-soft); }
html body.workspace-ui nav.ar-links .button .ui-icon { flex: none; color: var(--ws-muted); }
html body.workspace-ui nav.ar-links:not(:has(.button))::before { content: "—"; color: var(--ws-muted); }
html body.workspace-ui ul.ar-files { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; list-style: none; }
html body.workspace-ui ul.ar-files a { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 6px; background: var(--ui-head-bg); color: var(--ws-ink); font-size: 13px; text-decoration: none; overflow-wrap: anywhere; }
html body.workspace-ui ul.ar-files a:hover { background: #eef1f0; }
html body.workspace-ui ul.ar-files .ui-icon { flex: none; color: var(--ws-muted); }
html body.workspace-ui .ar-none { margin: 0; font-size: 13px; }
/* 让步审批：三人顺序 + 记录 */
html body.workspace-ui ol.ar-approvers { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; margin: 0 0 14px; padding: 0; list-style: none; }
html body.workspace-ui ol.ar-approvers > li { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui ol.ar-approvers > li > span:last-child { display: flex; flex-direction: column; min-width: 0; }
html body.workspace-ui ol.ar-approvers b { font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }
html body.workspace-ui ol.ar-approvers small { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .ar-approver-no { flex: none; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 999px; background: #eef1f0; color: var(--ws-muted); font-size: 12px; font-weight: 700; }
html body.workspace-ui ol.ar-approvers > li.is-done { border-color: #cfe6da; background: var(--ui-done-bg); }
html body.workspace-ui ol.ar-approvers > li.is-done .ar-approver-no { background: var(--ui-done-dot); color: #fff; }
html body.workspace-ui ol.ar-approvers > li.is-current { border-color: var(--ui-run-dot); box-shadow: 0 0 0 3px var(--ui-run-bg); }
html body.workspace-ui ol.ar-approvers > li.is-current .ar-approver-no { background: var(--ui-run-dot); color: #fff; }
html body.workspace-ui ol.ar-timeline { margin: 0; padding: 0 0 0 16px; list-style: none; border-left: 2px solid #e3e7e6; }
html body.workspace-ui ol.ar-timeline > li { position: relative; padding: 0 0 12px 12px; }
html body.workspace-ui ol.ar-timeline > li::before { content: ""; position: absolute; left: -23px; top: 5px; width: 10px; height: 10px; border-radius: 999px; background: var(--ui-done-dot); box-shadow: 0 0 0 3px #fff; }
html body.workspace-ui ol.ar-timeline > li.is-bad::before { background: var(--ui-bad-dot); }
html body.workspace-ui ol.ar-timeline b { font-size: 14px; font-weight: 600; }
html body.workspace-ui ol.ar-timeline small { display: block; color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui ol.ar-timeline p { margin: 4px 0 0; font-size: 13px; color: var(--ui-text-2, #3c4447); }
html body.workspace-ui form.ar-action-form { max-width: none; }
html body.workspace-ui form.ar-action-form > .ui-form-section { margin-bottom: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
html body.workspace-ui form.ar-action-form > .ui-form-section > h2 { margin-bottom: 12px; font-size: 15px; }
html body.workspace-ui form.ar-action-form > .ui-form-actions { position: static; margin: 0; padding: 12px 24px; border: 1px solid var(--ws-line); border-top: 0; border-radius: 0 0 8px 8px; background: var(--ui-head-bg); box-shadow: none; }
html body.workspace-ui form.ar-action-form button[value="reject_concession"] { border-color: #e7c3c1; background: #fff; color: var(--ui-bad-fg); }

/* 登记到货表单 / 期初库存：标题行 */
html body.workspace-ui header.ar-form-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; max-width: 880px; margin: 0 0 16px; }
html body.workspace-ui header.ar-form-head h1 { margin: 0; font-size: 24px; line-height: 1.3; }
html body.workspace-ui form.ar-form .ui-form-section > h2 + .ui-form-note + .ui-form-grid { margin-top: 0; }
html body.workspace-ui form.ar-form .ar-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
html body.workspace-ui form.ar-form .ui-form-grid > .ui-field--check { align-self: end; min-height: 40px; justify-content: center; }
/* 到货明细：每行一张卡片，带序号，删除放右上 */
html body.workspace-ui form.ar-form .ar-rows-section { margin: 0 0 16px; }
html body.workspace-ui form.ar-form .ar-rows-section > h2 { margin: 0 0 10px; font-size: 16px; color: var(--ws-ink); }
html body.workspace-ui form.ar-form .ar-rows { display: flex; flex-direction: column; gap: 12px; counter-reset: arrow; }
html body.workspace-ui form.ar-form .ar-rows > [data-arrival-row] { margin: 0; counter-increment: arrow; }
html body.workspace-ui form.ar-form .ar-rows > [data-arrival-row][hidden] { display: none; }
html body.workspace-ui form.ar-form .ar-row-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 12px; }
html body.workspace-ui form.ar-form .ar-row-head h3 { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: 14px; color: var(--ws-ink); }
html body.workspace-ui form.ar-form .ar-row-head h3::after { content: "#" counter(arrow); padding: 0 8px; border-radius: 999px; background: var(--ui-run-bg); color: var(--ui-run-fg); font-size: 12px; line-height: 20px; }
html body.workspace-ui form.ar-form button.ar-row-remove { height: 30px; min-height: 0; padding: 0 10px; border: 1px solid transparent; border-radius: 6px; background: transparent; color: #b42318; font: inherit; font-size: 13px; cursor: pointer; box-shadow: none; }
html body.workspace-ui form.ar-form button.ar-row-remove:hover { border-color: #f0c9c6; background: #fdf3f2; }
html body.workspace-ui form.ar-form .ar-rows > [data-arrival-row]:only-child button.ar-row-remove { display: none; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > .ar-cell { min-width: 0; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > .ar-cell > .ui-field { height: 100%; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > .ar-cell > .ui-field > .ui-field-label + * { margin-top: auto; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > [data-ar-field="source"] { grid-column: 1 / -1; }
html body.workspace-ui form.ar-form [data-ar-field="qty"] input { font-variant-numeric: tabular-nums; }
html body.workspace-ui form.ar-form button.ar-add {
  display: flex; align-items: center; justify-content: center; gap: 6px; width: 100%; height: 44px; margin: 12px 0 0;
  border: 1px dashed #b9c3c2; border-radius: 8px; background: #fff; color: var(--ws-accent-dark, #135e63); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; box-shadow: none;
}
html body.workspace-ui form.ar-form button.ar-add:hover { border-color: var(--ws-accent); background: var(--ui-run-bg); }
html body.workspace-ui form.ar-form button.ar-add .ui-icon { color: currentColor; }
html body.workspace-ui form.ar-form { max-width: 880px; }
/* 期初库存 */
html body.workspace-ui .ar-opening { display: flex; flex-direction: column; gap: 16px; max-width: 880px; }
html body.workspace-ui ol.ar-howto { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 0; padding: 0; list-style: none; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; counter-reset: arhow; overflow: hidden; }
html body.workspace-ui ol.ar-howto > li { position: relative; padding: 14px 16px 14px 50px; border-right: 1px solid var(--ui-row-line); counter-increment: arhow; }
html body.workspace-ui ol.ar-howto > li:last-child { border-right: 0; }
html body.workspace-ui ol.ar-howto > li::before { content: counter(arhow); position: absolute; left: 16px; top: 14px; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 999px; background: var(--ui-run-bg); color: var(--ui-run-fg); font-size: 13px; font-weight: 700; }
html body.workspace-ui ol.ar-howto b { display: block; font-size: 14px; font-weight: 600; line-height: 1.4; }
html body.workspace-ui ol.ar-howto small { display: block; margin-top: 3px; color: var(--ws-muted); font-size: 12px; line-height: 1.5; }
html body.workspace-ui p.ar-warn { display: flex; align-items: flex-start; gap: 8px; margin: 0; padding: 10px 14px; border-radius: 8px; background: var(--ui-wait-bg); color: var(--ui-wait-fg); font-size: 13px; line-height: 1.5; }
html body.workspace-ui p.ar-warn .ui-icon { flex: none; margin-top: 2px; }
html body.workspace-ui .ar-opening form.ui-form { max-width: none; margin: 0; }
html body.workspace-ui .ar-opening form.ui-form > .ui-form-section { margin-bottom: 12px; }
html body.workspace-ui p.ar-template-cols { margin: 14px 0 0; color: var(--ws-muted); font-size: 12px; overflow-wrap: anywhere; }
html body.workspace-ui p.ar-template-cols code { padding: 2px 6px; border-radius: 4px; background: var(--ui-head-bg); color: var(--ws-ink); font-size: 12px; }
html body.workspace-ui .ar-opening .ui-form-actions .button .ui-icon { color: currentColor; margin-right: 4px; }
html body.workspace-ui .ar-confirmed { display: flex; align-items: center; gap: 10px; background: var(--ui-done-bg); border-color: #cfe6da; color: var(--ui-done-fg); }
html body.workspace-ui .ar-confirmed p { margin: 0; }
/* 采购申请详情：进度面板里的到货入口 */
html body.workspace-ui .purchase-progress-panel > nav.purchase-progress-links { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; padding: 12px 0 0; border: 0; border-top: 1px solid var(--ui-row-line); background: transparent; }

@media (max-width: 1100px) {
  html body.workspace-ui .ar-detail-body { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  html body.workspace-ui .ar-page { gap: 16px; }
  html body.workspace-ui .ar-page > .ui-page-head { flex-direction: column; align-items: stretch; }
  html body.workspace-ui .ar-page > .ui-page-head > nav.ui-actions { display: grid; grid-template-columns: 1fr 1fr; }
  html body.workspace-ui .ar-page > .ui-page-head > nav.ui-actions .ui-btn--primary { grid-column: 1 / -1; grid-row: 1; height: 44px; }
  html body.workspace-ui .ar-detail > .ui-page-head > .ar-state { align-self: flex-start; }
  /* 表格变卡片 */
  html body.workspace-ui .ar-table-wrap { margin: 0 -16px; border-left: 0; border-right: 0; border-radius: 0; }
  html body.workspace-ui main table.ar-table thead { display: none; }
  html body.workspace-ui main table.ar-table,
  html body.workspace-ui main table.ar-table tbody { display: block; }
  html body.workspace-ui main table.ar-table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; padding: 12px 16px; border-bottom: 1px solid var(--ui-row-line); }
  html body.workspace-ui main table.ar-table tbody tr:last-child { border-bottom: 0; }
  html body.workspace-ui main table.ar-table td,
  html body.workspace-ui main table.ar-table td:first-child { display: block; padding: 0; border: 0; background: transparent !important; }
  html body.workspace-ui main table.ar-table td:first-child { grid-column: 1 / -1; }
  html body.workspace-ui main table.ar-table td.ar-num { text-align: right; }
  html body.workspace-ui main table.ar-table td[data-label]:not(:first-child):not(.ar-num)::before { content: attr(data-label); display: block; color: var(--ws-muted); font-size: 11px; }
  html body.workspace-ui main table.ar-table tr.ar-empty { display: block; }
  html body.workspace-ui main table.ar-table tr.ar-empty td { padding: 20px 0; }
  html body.workspace-ui main table.ar-table--facts td:last-child { grid-column: 1 / -1; }
  /* 详情 */
  html body.workspace-ui ol.ar-steps { flex-direction: column; gap: 14px; padding: 14px 16px; }
  html body.workspace-ui ol.ar-steps > li { padding: 0 0 0 34px; }
  html body.workspace-ui ol.ar-steps > li::after { top: 24px; left: 10px; right: auto; bottom: -14px; width: 2px; height: auto; }
  html body.workspace-ui main dl.ar-facts { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  html body.workspace-ui .ar-card { padding: 14px 16px; }
  html body.workspace-ui form.ar-action-form > .ui-form-actions { padding: 12px 16px; }
  /* 表单 */
  html body.workspace-ui form.ar-form .ar-grid-3 { grid-template-columns: minmax(0, 1fr); }
  html body.workspace-ui form.ar-form .ar-rows .ui-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 10px; }
  html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > .ar-cell { grid-column: 1 / -1; }
  html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > :is([data-ar-field="qty"], [data-ar-field="unit"], [data-ar-field="supplier_batch"], [data-ar-field="heat_no"]) { grid-column: span 1; }
  html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > .ar-cell > .ui-field { grid-column: auto; }
  html body.workspace-ui ol.ar-howto { grid-template-columns: minmax(0, 1fr); }
  html body.workspace-ui ol.ar-howto > li { border-right: 0; border-bottom: 1px solid var(--ui-row-line); }
  html body.workspace-ui ol.ar-howto > li:last-child { border-bottom: 0; }
}
/* 明细行字段顺序：来源 → 物料 / 规格 → 数量 / 单位 → 批次 / 炉号 */
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > [data-ar-field="item"] { order: 1; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > [data-ar-field="spec"] { order: 2; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > [data-ar-field="qty"] { order: 3; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > [data-ar-field="unit"] { order: 4; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > [data-ar-field="supplier_batch"] { order: 5; }
html body.workspace-ui form.ar-form .ar-rows .ui-form-grid > [data-ar-field="heat_no"] { order: 6; }
/* 21 修正：对齐、斑马底、手机数量换行 */
html body.workspace-ui main table.ar-table td:not(.ar-num),
html body.workspace-ui main table.ar-table th:not(.ar-num) { text-align: left !important; }
html body.workspace-ui main table.ar-table tbody tr { background: #fff !important; }
html body.workspace-ui form.ar-form .ui-form-grid > .ui-field--check:not(.ui-field--half) { min-height: 0; margin-top: -4px; }
html body.workspace-ui form.ar-form .ui-form-actions .button.secondary,
html body.workspace-ui .ar-opening .ui-form-actions .button.secondary { display: inline-flex; align-items: center; }
@media (max-width: 760px) {
  html body.workspace-ui form.ar-filter { flex-wrap: nowrap; }
  html body.workspace-ui form.ar-filter .ui-search { flex: 1 1 0; min-width: 0; height: 44px; }
  html body.workspace-ui form.ar-filter > .ui-btn { flex: none; }
  html body.workspace-ui main table.ar-table td.ar-num { white-space: normal; max-width: 45vw; }
  html body.workspace-ui main table.ar-table td.ar-num .ar-unit { display: block; overflow-wrap: anywhere; }
}
@media (max-width: 760px) {
  html body.workspace-ui .ar-table-wrap { width: auto; max-width: none; }
  html body.workspace-ui main table.ar-table { width: 100%; }
  html body.workspace-ui ol.ar-approvers { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  html body.workspace-ui main .ar-table-wrap table.ar-table { min-width: 0 !important; width: 100% !important; max-width: none; }
  html body.workspace-ui main .ar-table-wrap table.ar-table > tbody { width: 100%; }
  html body.workspace-ui main .ar-table-wrap table.ar-table > tbody > tr { width: auto; box-sizing: border-box; }
}
@media (max-width: 760px) { html body.workspace-ui main .ar-table-wrap { overflow: visible; } }

/* 13b. 申请进度固定节点：li[data-state] = done / current / todo（未到节点灰色） */
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state] { color: var(--ws-muted); font-weight: 400; }
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state="done"] { color: var(--ws-ink); }
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state="done"]::before {
  content: "✓"; display: grid; place-items: center; background: var(--ui-done-dot); box-shadow: none; color: #fff; font-size: 10px; font-weight: 700; line-height: 1;
}
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state="done"]::after { background: var(--ui-done-dot); }
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state="current"] { color: var(--ui-run-fg); font-weight: 700; }
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state="current"]::before { background: var(--ws-accent); box-shadow: inset 0 0 0 4px var(--ws-accent), inset 0 0 0 6px #fff, 0 0 0 4px var(--ui-run-bg); }
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state="current"]::after,
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state="todo"]::after { background: #e1e5e4; }
html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state="todo"]::before { background: #fff; box-shadow: inset 0 0 0 2px #cfd5d4; }
@media (min-width: 761px) {
  html body.workspace-ui ol.procurement-log:has(> li[data-purchase-milestone][data-state]) { flex-wrap: nowrap; }
  html body.workspace-ui ol.procurement-log > li[data-purchase-milestone][data-state] { flex: 1 1 0; max-width: none; min-width: 0; }
}

/* ---------- 22. 列表 / 详情通用：自动页标题、页内待办提醒 ---------- */
/* 页面只定义了 page_heading、正文没有自己的 h1 时，在正文顶部显示标题 */
html body.workspace-ui main > .page-title-row.ui-auto-title { display: block; margin: 0 0 16px; padding: 0; border: 0; background: transparent; }
html body.workspace-ui main > .ui-auto-title > h1 { margin: 0; font-size: 24px; line-height: 1.3; font-weight: 700; color: var(--ws-ink); overflow-wrap: anywhere; }
html body.workspace-ui main > .ui-auto-title:has(> h1:empty),
html body.workspace-ui main:has(h1:not(.ui-auto-title > h1)) > .ui-auto-title { display: none; }
@media (max-width: 760px) {
  html body.workspace-ui main > .ui-auto-title > h1 { font-size: 20px; }
}

/* 项目流程待办：原弹窗改为页内提醒条，可折叠，折叠状态按本次会话记住 */
html body.workspace-ui .ui-attention { margin: 0 0 16px; }
html body.workspace-ui .ui-attention-box { border: 1px solid #f0d9b5; border-left: 4px solid var(--ui-wait-dot); border-radius: 8px; background: #fffaf2; }
html body.workspace-ui .ui-attention-box > summary { display: flex; align-items: center; gap: 12px; padding: 12px 16px; cursor: pointer; list-style: none; }
html body.workspace-ui .ui-attention-box > summary::-webkit-details-marker { display: none; }
html body.workspace-ui .ui-attention-icon { flex: none; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 999px; background: var(--ui-wait-dot); color: #fff; font-size: 14px; font-weight: 700; }
html body.workspace-ui .ui-attention-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
html body.workspace-ui .ui-attention-text b { color: var(--ws-ink); font-size: 15px; }
html body.workspace-ui .ui-attention-text small { color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .ui-attention-count { flex: none; min-width: 24px; padding: 0 8px; border-radius: 999px; background: var(--ui-wait-bg); color: var(--ui-wait-fg); font-size: 13px; font-weight: 700; line-height: 24px; text-align: center; }
html body.workspace-ui .ui-attention-count:empty { display: none; }
html body.workspace-ui .ui-attention-toggle { flex: none; width: 8px; height: 8px; margin: 0 4px; border-right: 2px solid var(--ws-muted); border-bottom: 2px solid var(--ws-muted); transform: rotate(45deg); transition: transform .15s; }
html body.workspace-ui .ui-attention-box[open] .ui-attention-toggle { transform: rotate(-135deg); }
html body.workspace-ui .ui-attention .manager-alert-body { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 12px; padding: 0 16px 16px; }
html body.workspace-ui .ui-attention .manager-alert-section { margin: 0; padding: 12px 14px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .ui-attention .manager-alert-section h3 { display: flex; align-items: center; gap: 8px; margin: 0 0 4px; font-size: 14px; color: var(--ws-ink); }
html body.workspace-ui .ui-attention .manager-alert-section h3 .badge { padding: 0 7px; border-radius: 999px; background: #eef1f0; color: var(--ws-muted); font-size: 12px; line-height: 20px; }
html body.workspace-ui .ui-attention .manager-alert-section[data-tone="bad"] h3 .badge { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui .ui-attention .manager-alert-section > p { margin: 0 0 10px; color: var(--ws-muted); font-size: 12px; line-height: 1.5; }
html body.workspace-ui .ui-attention .manager-alert-list { display: flex; flex-direction: column; gap: 6px; max-height: 240px; overflow: auto; }
html body.workspace-ui .ui-attention .manager-alert-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--ui-row-line); border-radius: 6px; background: #fff; color: inherit; text-decoration: none; }
html body.workspace-ui .ui-attention .manager-alert-item:hover { border-color: #c9d1db; background: #fafbfa; }
html body.workspace-ui .ui-attention .manager-alert-item strong { display: block; font-size: 13px; font-weight: 600; color: var(--ws-ink); overflow-wrap: anywhere; }
html body.workspace-ui .ui-attention .manager-alert-item small { display: block; margin-top: 2px; color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .ui-attention .manager-alert-item .button { min-height: 28px; height: 28px; padding: 0 10px; border: 1px solid var(--ws-control-border); background: #fff; color: var(--ws-ink); font-size: 12px; white-space: nowrap; }
html body.workspace-ui .ui-attention .manager-alert-section[data-tone="bad"] .manager-alert-item { border-left: 3px solid var(--ui-bad-dot); }
@media (max-width: 760px) {
  html body.workspace-ui .ui-attention .manager-alert-body { grid-template-columns: minmax(0, 1fr); padding: 0 12px 12px; }
  html body.workspace-ui .ui-attention-text small { display: none; }
}

/* 22b. 旧列表页：工具栏里“筛选表单 + 操作按钮”排成一行（toolbar > form[method=get]） */
html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar:has(> form[method="get"]) { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; }
html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar > form[method="get"] { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; flex: 1 1 520px; margin: 0; padding: 0; border: 0; background: transparent; }
html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar > form[method="get"] > :is(select, input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"])) { width: auto; min-width: 150px; max-width: 240px; height: 38px; min-height: 0; margin: 0; flex: 0 1 auto; }
html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar > form[method="get"] > :is(input[type="search"], input[name="q"], input[type="text"]:first-child) { flex: 1 1 240px !important; max-width: 360px !important; }
html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar > form[method="get"] > :is(button, .button) { height: 38px; min-height: 0; margin: 0; }
html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar:has(> form[method="get"]) > .actions { flex: none; margin: 0; }
@media (max-width: 760px) {
  html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar > form[method="get"] { flex: 1 1 100%; }
  html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar > form[method="get"] > :is(input[type="search"], input[name="q"], input[type="text"]:first-child) { flex: 1 1 100% !important; max-width: none !important; height: 44px; }
  html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar > form[method="get"] > select { flex: 1 1 0; max-width: none; height: 44px; }
  html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar > form[method="get"] > :is(button, .button) { height: 44px; }
  html body.workspace-ui:not([data-workspace-section="production"]) main > .toolbar:has(> form[method="get"]) > .actions { flex: 1 1 100%; }
}

/* 22c. 组织架构树：缩进只靠左侧连线累计，行内换行不溢出，编辑 / 删除收成小按钮靠右 */
html body.workspace-ui .org-tree { overflow: visible; padding: 18px 20px; border-color: var(--ws-line); }
html body.workspace-ui .org-tree .org-tree-heading h2 { color: var(--ws-ink); font-size: 16px; }
html body.workspace-ui .org-tree .org-node { padding-left: 0; margin: 0 0 8px; }
html body.workspace-ui .org-tree .org-node::before,
html body.workspace-ui .org-tree .org-department::before { display: none; }
html body.workspace-ui .org-tree .org-children { margin: 6px 0 0 13px; padding-left: 14px; border-left: 1px solid #dfe4e3; gap: 6px; }
html body.workspace-ui .org-tree .org-position-branch { margin-left: 11px; padding-left: 14px; border-left: 1px solid #dfe4e3; }
html body.workspace-ui .org-tree :is(.org-department, .org-position) { flex-wrap: wrap; row-gap: 6px; min-width: 0; }
html body.workspace-ui .org-tree .org-department { padding: 10px 12px; border-color: #d6e4e2; background: var(--ui-run-bg); }
html body.workspace-ui .org-tree .org-department strong { color: var(--ws-ink); font-size: 15px; overflow-wrap: anywhere; }
html body.workspace-ui .org-tree .org-position { padding: 7px 10px; border-color: var(--ui-row-line); background: #fff; }
html body.workspace-ui .org-tree .org-position-name { min-width: 0; flex: 0 1 auto; color: var(--ws-ink); font-weight: 600; overflow-wrap: anywhere; }
html body.workspace-ui .org-tree .org-meta { font-size: 12px; color: var(--ws-muted); }
html body.workspace-ui .org-tree :is(.org-department, .org-position) > a.button { margin-left: auto; }
html body.workspace-ui .org-tree :is(.org-department, .org-position) > :is(a.button, .org-inline-form .button) { min-height: 28px; height: 28px; padding: 0 10px; font-size: 12px; font-weight: 600; }
html body.workspace-ui .org-tree .org-delete-button { border-color: transparent; background: transparent; color: #b42318; }
html body.workspace-ui .org-tree .org-delete-button:hover { border-color: #f0c9c6; background: #fdf3f2; }
html body.workspace-ui .org-tree .org-people { flex-basis: 100%; }
html body.workspace-ui .org-tree .org-people:empty { display: none; }
html body.workspace-ui .org-tree .org-person { background: #eef1f0; color: var(--ui-text-2, #3c4447); text-decoration: none; }
html body.workspace-ui .org-tree :is(.org-toggle, .org-position-toggle) { border-color: var(--ws-control-border); color: var(--ws-ink); }
@media (max-width: 760px) {
  html body.workspace-ui .org-tree { padding: 12px; margin: 0 -16px; border-left: 0; border-right: 0; border-radius: 0; }
  html body.workspace-ui .org-tree .org-children { margin-left: 8px; padding-left: 10px; }
  html body.workspace-ui .org-tree .org-position-branch { margin-left: 6px; padding-left: 10px; }
  html body.workspace-ui .org-tree .org-position { flex-direction: row; align-items: center; }
  html body.workspace-ui .org-tree .org-meta { flex-basis: 100%; order: 3; }
  html body.workspace-ui .org-tree :is(.org-department, .org-position) > a.button { order: 4; margin-left: 0; }
  html body.workspace-ui .org-tree :is(.org-department, .org-position) > :is(a.button, .org-inline-form, .org-inline-form .button) { width: auto !important; flex: none !important; min-width: 0; }
  html body.workspace-ui .org-tree :is(.org-department, .org-position) { max-width: 100%; box-sizing: border-box; }
  html body.workspace-ui .org-tree .org-tree-heading { flex-direction: row; align-items: center; }
  html body.workspace-ui .org-tree :is(.org-department, .org-position) > .org-inline-form { order: 5; }
  html body.workspace-ui .org-tree .org-people { order: 6; }
}
html body.workspace-ui .org-tree :is(.org-children, .org-position-branch) { display: grid; grid-template-columns: minmax(0, 1fr); }
html body.workspace-ui .org-tree :is(.org-children, .org-position-branch) > * { min-width: 0; }
html body.workspace-ui .org-tree .org-meta { min-width: 0; overflow-wrap: anywhere; word-break: break-all; }

/* ---------- 23. 生产页面（production.css 之上的统一修正） ---------- */
/* 页头、筛选、表格三块统一为同样的白底圆角卡片；筛选内边距对齐，按钮与输入框等高 */
html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-toolbar { border-radius: 8px; }
html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters {
  margin: 0 0 16px; padding: 14px 16px; border: 1px solid #e5e7e7; border-radius: 8px; align-items: flex-end; gap: 10px 12px;
}
html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters > label { display: flex; flex-direction: column; gap: 4px; color: #667681; font-size: 12px; font-weight: 600; }
html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters > label > :is(input, select) { height: 38px; margin: 0; color: #202326; font-size: 14px; font-weight: 400; }
html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters > :is(button, .button) { height: 38px; min-height: 0; margin: 0; }
html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters > :is(button, .button) + :is(button, .button) { margin-left: -4px; }
html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-table-wrap { margin: 0 0 16px; border-radius: 8px; overflow-x: auto; }
html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-table-wrap > table { margin: 0; }
@media (max-width: 760px) {
  html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters { padding: 12px; }
  html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters > label { flex: 1 1 100%; max-width: none; }
  html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters > :is(button, .button) { flex: 1 1 0; height: 44px; }
  html.production-app body.workspace-ui .prod-page:not(.prod-monitor) .prod-filters > label > :is(input, select) { height: 44px; }
}

/* ---------- 24. 详情页：操作栏收纳（主要操作外露，其余放“更多操作”下拉） ---------- */
html body.workspace-ui .project-actions-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 16px; }
html body.workspace-ui .project-actions-bar > .actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
html body.workspace-ui details.ui-menu { position: relative; }
html body.workspace-ui details.ui-menu > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
html body.workspace-ui details.ui-menu > summary::-webkit-details-marker { display: none; }
html body.workspace-ui details.ui-menu > summary::after { content: ""; width: 6px; height: 6px; margin-left: 2px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translateY(-2px); }
html body.workspace-ui details.ui-menu[open] > summary { background: var(--ws-surface-soft); }
html body.workspace-ui details.ui-menu > .ui-menu-list {
  position: absolute; z-index: 40; top: calc(100% + 6px); left: 0; display: flex; flex-direction: column; min-width: 220px; padding: 6px;
  border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; box-shadow: 0 10px 28px rgba(16, 24, 32, .14);
}
html body.workspace-ui details.ui-menu > .ui-menu-list > a { display: block; padding: 9px 12px; border-radius: 6px; color: var(--ws-ink); font-size: 14px; text-decoration: none; white-space: nowrap; }
html body.workspace-ui details.ui-menu > .ui-menu-list > a:hover { background: var(--ws-surface-soft); }
html body.workspace-ui details.ui-menu > .ui-menu-list > a.is-danger { margin-top: 4px; padding-top: 10px; border-top: 1px solid var(--ui-row-line); border-radius: 0 0 6px 6px; color: #b42318; }
@media (max-width: 760px) {
  html body.workspace-ui .project-actions-bar > .actions { width: 100%; }
  html body.workspace-ui details.ui-menu > .ui-menu-list { left: auto; right: 0; }
}
html body.workspace-ui main > .toolbar.project-actions-bar { align-items: center; }

/* ---------- 25. 旧详情页通用信息排版 ---------- */
/* a) “标签: 值”逐行段落（.panel > p > strong:first-child）→ 两到三列信息网格；含换行的长文本占整行 */
html body.workspace-ui:not([data-workspace-section="production"]) main .panel:has(> p > :is(strong, b):first-child) {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px 24px; align-items: start;
}
html body.workspace-ui:not([data-workspace-section="production"]) main .panel:has(> p > :is(strong, b):first-child) > :not(p) { grid-column: 1 / -1; }
html body.workspace-ui:not([data-workspace-section="production"]) main .panel:has(> p > :is(strong, b):first-child) > p { margin: 0; min-width: 0; color: var(--ws-ink); font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
html body.workspace-ui:not([data-workspace-section="production"]) main .panel:has(> p > :is(strong, b):first-child) > p > :is(strong, b):first-child { display: block; margin: 0 0 2px; color: var(--ws-muted); font-size: 12px; font-weight: 400; }
html body.workspace-ui:not([data-workspace-section="production"]) main .panel:has(> p > :is(strong, b):first-child) > p:has(> br),
html body.workspace-ui:not([data-workspace-section="production"]) main .panel:has(> p > :is(strong, b):first-child) > p:not(:has(> :is(strong, b):first-child)) { grid-column: 1 / -1; }
html body.workspace-ui:not([data-workspace-section="production"]) main .panel:has(> p > :is(strong, b):first-child) > p:has(> br) > br:first-of-type { display: none; }
/* b) summary-grid：每个字段一张大卡片 → 一行信息条 */
html body.workspace-ui main .summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 0; margin: 0 0 16px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; overflow: hidden; }
html body.workspace-ui main .summary-grid > .card { margin: 0; padding: 12px 16px; border: 0; border-right: 1px solid var(--ui-row-line); border-radius: 0; background: transparent; box-shadow: none; min-width: 0; }
html body.workspace-ui main .summary-grid > .card:last-child { border-right: 0; }
html body.workspace-ui main .summary-grid > .card > span { display: block; color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui main .summary-grid > .card > strong { display: block; margin-top: 2px; color: var(--ws-ink); font-size: 15px; font-weight: 600; overflow-wrap: anywhere; }
@media (max-width: 760px) {
  html body.workspace-ui:not([data-workspace-section="production"]) main .panel:has(> p > :is(strong, b):first-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; }
  html body.workspace-ui main .summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  html body.workspace-ui main .summary-grid > .card { border-bottom: 1px solid var(--ui-row-line); }
  html body.workspace-ui main .summary-grid > .card:nth-child(2n) { border-right: 0; }
}

/* ---------- 26. 全公司工作项（高管只读入口） ---------- */
html body.workspace-ui main form.ui-form.cw-filter { max-width: none; margin: 0 0 16px; padding: 14px 16px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 12px; }
html body.workspace-ui main form.cw-filter > .ui-form-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 12px; flex: 1 1 640px; margin: 0; }
html body.workspace-ui main form.cw-filter .ui-field { grid-column: auto; }
html body.workspace-ui main form.cw-filter > .ui-form-actions { position: static; display: flex; gap: 8px; margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none; }
html body.workspace-ui main form.cw-filter :is(select, .ui-picker-box) { min-height: 38px; }
html body.workspace-ui main .cw-table-wrap { border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; overflow-x: auto; }
html body.workspace-ui main table.cw-table td:first-child a { font-weight: 600; color: var(--ws-ink); text-decoration: none; }
html body.workspace-ui main table.cw-table td:first-child a:hover { color: var(--ws-accent-dark, #135e63); text-decoration: underline; }
html body.workspace-ui .cw-status[data-status="in_progress"],
html body.workspace-ui .cw-status[data-status="approving"],
html body.workspace-ui .cw-status[data-status="submitted"] { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .cw-status:is([data-status="in_progress"], [data-status="approving"], [data-status="submitted"]) .ui-dot { background: var(--ui-run-dot); }
html body.workspace-ui .cw-status:is([data-status="completed"], [data-status="approved"]) { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .cw-status:is([data-status="completed"], [data-status="approved"]) .ui-dot { background: var(--ui-done-dot); }
html body.workspace-ui .cw-status:is([data-status="blocked"], [data-status="rejected"]) { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui .cw-status:is([data-status="blocked"], [data-status="rejected"]) .ui-dot { background: var(--ui-bad-dot); }
html body.workspace-ui main .cw-pager { display: flex; align-items: center; justify-content: center; gap: 12px; margin: 14px 0 0; color: var(--ws-muted); font-size: 13px; }
@media (max-width: 760px) {
  html body.workspace-ui main form.ui-form.cw-filter { padding: 12px; }
  html body.workspace-ui main form.cw-filter > .ui-form-grid { grid-template-columns: minmax(0, 1fr); flex-basis: 100%; }
  html body.workspace-ui main form.cw-filter > .ui-form-actions { width: 100%; }
  html body.workspace-ui main form.cw-filter > .ui-form-actions > * { flex: 1 1 0; }
  html body.workspace-ui main .cw-table-wrap { border: 0; background: transparent; }
}

/* ---------- 27. 一车间实物流程（打包 / 捆、成品库存、发货单） ---------- */
html body.workspace-ui .wf-page { display: flex; flex-direction: column; gap: 16px; max-width: 1180px; }
html body.workspace-ui .wf-page > .toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin: 0; }
html body.workspace-ui .wf-page > .toolbar h1 { margin: 0; overflow-wrap: anywhere; }
html body.workspace-ui .wf-page > .toolbar .actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
/* 页头里的普通链接统一成浅色按钮 */
html body.workspace-ui .wf-page > .toolbar :is(.actions > a:not(.button), a:not(.button)) {
  display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border: 1px solid var(--ws-control-border); border-radius: 6px;
  background: #fff; color: var(--ws-ink); font-size: 14px; font-weight: 600; text-decoration: none; white-space: nowrap;
}
html body.workspace-ui .wf-page > .toolbar :is(.actions > a:not(.button), a:not(.button)):hover { background: var(--ws-surface-soft); }
/* 筛选 / 搜索条 */
html body.workspace-ui .wf-page form.wf-filter { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 12px; max-width: none; margin: 0; padding: 14px 16px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .wf-page form.wf-filter > .ui-form-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 10px 12px; flex: 1 1 520px; margin: 0; }
html body.workspace-ui .wf-page form.wf-filter label { display: flex; flex-direction: column; gap: 4px; margin: 0; color: var(--ws-muted); font-size: 12px; font-weight: 600; }
html body.workspace-ui .wf-page form.wf-filter label > :is(input, select) { height: 38px; margin: 0; color: var(--ws-ink); font-size: 14px; font-weight: 400; }
html body.workspace-ui .wf-page form:is(.wf-filter, .wf-search) button { flex: 0 0 auto; white-space: nowrap; height: 38px; min-height: 0; padding: 0 16px; border: 1px solid #202326; border-radius: 6px; background: #202326; color: #fff; font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
html body.workspace-ui .wf-page form.wf-search { display: flex; gap: 8px; max-width: 560px; margin: 0; }
html body.workspace-ui .wf-page form.wf-search > input { flex: 1 1 auto; height: 38px; margin: 0; }
/* 表格 */
html body.workspace-ui .wf-page .table-wrap { margin: 0; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; overflow-x: auto; }
html body.workspace-ui .wf-page table.md-table { margin: 0; }
html body.workspace-ui .wf-page table.md-table td a { font-weight: 600; color: var(--ws-accent-dark, #135e63); text-decoration: none; overflow-wrap: anywhere; }
html body.workspace-ui .wf-page table.md-table td a:hover { text-decoration: underline; }
html body.workspace-ui .wf-packages table.md-table :is(th, td):first-child { width: 56px; text-align: center; white-space: nowrap; }
html body.workspace-ui .wf-packages table.md-table td:first-child input { width: 18px; height: 18px; margin: 0; }
html body.workspace-ui .wf-page table.md-table td:is([data-label="m"], [data-label="kg"]) { font-variant-numeric: tabular-nums; }
/* 状态胶囊 */
html body.workspace-ui .wf-state[data-state="draft"] { background: var(--ui-neutral-bg); color: var(--ui-neutral-fg); }
html body.workspace-ui .wf-state:is([data-state="in_stock"], [data-state="received"]) { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .wf-state:is([data-state="in_stock"], [data-state="received"]) .ui-dot { background: var(--ui-done-dot); }
html body.workspace-ui .wf-state[data-state="loaded"] { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .wf-state[data-state="loaded"] .ui-dot { background: var(--ui-wait-dot); }
html body.workspace-ui .wf-state[data-state="shipped"] { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .wf-state[data-state="shipped"] .ui-dot { background: var(--ui-run-dot); }
html body.workspace-ui .wf-state:is([data-state="missing"], [data-state="scrapped"], [data-state="returned"], [data-state="reversed"], [data-state="cancelled"], [data-state="dismantled"]) { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui .wf-state:is([data-state="missing"], [data-state="scrapped"], [data-state="returned"], [data-state="reversed"], [data-state="cancelled"], [data-state="dismantled"]) .ui-dot { background: var(--ui-bad-dot); }
/* 打印所选标签：底部操作条 */
html body.workspace-ui .wf-packages .wf-printbar { display: flex; justify-content: flex-end; align-items: center; gap: 8px; margin: 12px 0 0; }
html body.workspace-ui .wf-packages .wf-printbar { flex-wrap: nowrap; }
html body.workspace-ui .wf-packages .wf-printbar select { flex: 0 0 150px; width: 150px; max-width: 150px; height: 38px; margin: 0; }
html body.workspace-ui .wf-packages .wf-printbar button { height: 38px; padding: 0 16px; border: 1px solid var(--ws-control-border); border-radius: 6px; background: #fff; color: var(--ws-ink); font: inherit; font-weight: 600; cursor: pointer; }
/* 详情：信息栏、检验状态、各区块成卡片 */
html body.workspace-ui .wf-detail dl.summary-grid { margin: 0; }
html body.workspace-ui .wf-detail dl.summary-grid > div { margin: 0; padding: 12px 16px; border-right: 1px solid var(--ui-row-line); border-bottom: 1px solid var(--ui-row-line); min-width: 0; }
html body.workspace-ui .wf-detail dl.summary-grid dt { margin: 0; color: var(--ws-muted); font-size: 12px; font-weight: 400; }
html body.workspace-ui .wf-detail dl.summary-grid dd { margin: 2px 0 0; padding: 0; color: var(--ws-ink); font-size: 15px; font-weight: 600; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-detail > p { margin: 0; }
html body.workspace-ui .wf-detail p.wf-inspection { display: inline-flex; align-self: flex-start; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 999px; background: var(--ui-wait-bg); color: var(--ui-wait-fg); font-size: 13px; font-weight: 600; }
html body.workspace-ui .wf-detail p.wf-inspection[data-inspection="passed"] { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .wf-detail p.wf-inspection[data-inspection="failed"] { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui .wf-detail p.alert { padding: 10px 14px; border-radius: 8px; background: var(--ui-wait-bg); color: var(--ui-wait-fg); font-size: 13px; }
html body.workspace-ui .wf-detail > section { padding: 16px 18px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .wf-detail > section > h2 { margin: 0 0 10px; font-size: 15px; color: var(--ws-ink); }
html body.workspace-ui .wf-detail > section > p { margin: 0 0 6px; font-size: 14px; }
html body.workspace-ui .wf-detail details.wf-lengths { padding: 12px 16px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .wf-detail details.wf-lengths > summary { cursor: pointer; font-weight: 600; }
html body.workspace-ui .wf-detail details.wf-lengths ol { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 4px 16px; margin: 10px 0 0; padding-left: 24px; font-variant-numeric: tabular-nums; font-size: 13px; }
html body.workspace-ui .wf-dispatch p.wf-totals { padding: 12px 16px; border-radius: 8px; background: var(--ui-head-bg); font-weight: 600; font-variant-numeric: tabular-nums; }
/* 打包表单：逐支长度用等宽数字；底部合计条固定 */
html body.workspace-ui .wf-form form.ui-form { max-width: 880px; margin: 0; }
html body.workspace-ui .wf-form textarea[name$="lengths"], html body.workspace-ui .wf-form textarea[name$="pipe_numbers"] { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 15px; line-height: 1.6; min-height: 160px; }
html body.workspace-ui .wf-form output[data-w1-summary] { flex: 1 1 auto; color: var(--ws-ink); font-weight: 600; font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-form .ui-form-actions { display: flex; align-items: center; gap: 12px; }
html body.workspace-ui .wf-form .ui-form-actions > a { color: var(--ws-muted); }
@media (max-width: 760px) {
  html body.workspace-ui .wf-page { gap: 12px; }
  html body.workspace-ui .wf-page form.wf-filter { padding: 12px; }
  html body.workspace-ui .wf-page form.wf-filter > .ui-form-grid { grid-template-columns: minmax(0, 1fr); flex-basis: 100%; }
  html body.workspace-ui .wf-page form.wf-filter > button { width: 100%; height: 44px; }
  html body.workspace-ui .wf-page form.wf-search { max-width: none; }
  html body.workspace-ui .wf-page .table-wrap { border: 0; background: transparent; }
  html body.workspace-ui .wf-packages table.md-table :is(th, td):first-child { width: auto; text-align: left; }
  html body.workspace-ui .wf-packages .wf-printbar { position: sticky; bottom: 0; z-index: 5; margin: 0 -16px; padding: 10px 16px; border-top: 1px solid var(--ws-line); background: #fff; }
  html body.workspace-ui .wf-packages .wf-printbar select { flex-basis: 110px; width: 110px; height: 44px; }
  html body.workspace-ui .wf-packages .wf-printbar button { flex: 1 1 auto; height: 44px; }
  html body.workspace-ui .wf-detail dl.summary-grid > div { padding: 10px 12px; }
  html body.workspace-ui .wf-detail > section { padding: 14px; }
  html body.workspace-ui .wf-form .ui-form-actions { flex-wrap: wrap; }
  html body.workspace-ui .wf-form output[data-w1-summary] { flex-basis: 100%; font-size: 13px; }
  html body.workspace-ui .wf-form .ui-form-actions > button { flex: 1 1 auto; height: 48px; }
}

/* ---------- 28. 一车间备货计划 / 划拨 / 铭牌 ---------- */
html body.workspace-ui .wf-page .wf-lead { margin: -6px 0 0; max-width: 72ch; color: var(--ws-muted); font-size: 13px; line-height: 1.6; }
html body.workspace-ui .wf-page .wf-subtitle { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: -8px 0 0; color: var(--ws-ink); font-size: 15px; font-weight: 600; }
html body.workspace-ui .wf-page table.md-table :is(th, td).num { text-align: right; font-variant-numeric: tabular-nums; }
@media (min-width: 761px) {
  html body.workspace-ui .wf-page table.md-table td.num { white-space: nowrap; }
  html body.workspace-ui :is(.wf-inventory, .wf-plans) table.md-table td.num { white-space: normal; }
  html body.workspace-ui :is(.wf-plate-new, .wf-allocation, .wf-allocations, .wf-plans, .wf-plan) table.md-table td:first-child a { white-space: nowrap; overflow-wrap: normal; }
}
html body.workspace-ui .wf-page form.wf-filter > .ui-form-grid:has(> label:nth-child(3)) { grid-template-columns: minmax(0, 2fr) repeat(3, minmax(0, 1fr)); }
/* 视图切换 */
html body.workspace-ui .wf-tabs { display: inline-flex; align-self: flex-start; gap: 2px; padding: 3px; border: 1px solid var(--ws-line); border-radius: 8px; background: var(--ws-surface-soft); }
html body.workspace-ui .wf-tabs > a { padding: 7px 16px; border-radius: 6px; color: var(--ws-muted); font-size: 14px; font-weight: 600; text-decoration: none; }
html body.workspace-ui .wf-tabs > a[aria-current="page"] { background: #fff; color: var(--ws-ink); box-shadow: 0 1px 2px rgba(16, 24, 32, .08); }
/* 归属 / 铭牌小标签 */
html body.workspace-ui .wf-tag { display: inline-flex; align-items: center; padding: 1px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; white-space: nowrap; }
html body.workspace-ui .wf-tag[data-tag="stock"] { background: #eef0fb; color: #3b46a0; }
html body.workspace-ui .wf-tag[data-tag="allocated"] { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .wf-plate { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
html body.workspace-ui .wf-plate[data-plate="active"] { color: var(--ui-done-fg); }
html body.workspace-ui .wf-plate[data-plate="active"]::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ui-done-dot); }
html body.workspace-ui .wf-plate[data-plate="none"] { color: var(--ws-muted); }
/* 计划 / 划拨状态 */
html body.workspace-ui .wf-state[data-state="plan-planned"] { background: var(--ui-run-bg); color: var(--ui-run-fg); }
html body.workspace-ui .wf-state[data-state="plan-planned"] .ui-dot { background: var(--ui-run-dot); }
html body.workspace-ui .wf-state:is([data-state="plan-closed"], [data-state="alloc-cancelled"]) { background: var(--ui-neutral-bg); color: var(--ui-neutral-fg); }
html body.workspace-ui .wf-state[data-state="plan-cancelled"] { background: var(--ui-bad-bg); color: var(--ui-bad-fg); }
html body.workspace-ui .wf-state[data-state="plan-cancelled"] .ui-dot { background: var(--ui-bad-dot); }
html body.workspace-ui .wf-state[data-state="alloc-draft"] { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .wf-state[data-state="alloc-draft"] .ui-dot { background: var(--ui-wait-dot); }
html body.workspace-ui .wf-state[data-state="alloc-confirmed"] { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .wf-state[data-state="alloc-confirmed"] .ui-dot { background: var(--ui-done-dot); }
html body.workspace-ui .wf-page tr.wf-row-problem td { background: var(--ui-bad-bg); }
html body.workspace-ui .wf-page tr.wf-row-problem .ui-error { display: block; margin-top: 4px; font-size: 12px; }
/* 打印条：主操作 */
html body.workspace-ui .wf-packages .wf-printbar { flex-wrap: wrap; }
html body.workspace-ui .wf-packages .wf-printbar button.wf-primary { border-color: #202326; background: #202326; color: #fff; }
/* 备货库存卡片 */
html body.workspace-ui .wf-page > section > h2 { margin: 4px 0 10px; font-size: 16px; color: var(--ws-ink); }
html body.workspace-ui .wf-stock-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 12px; }
html body.workspace-ui .wf-stock-groups > h2, html body.workspace-ui .wf-stock-groups > p { grid-column: 1 / -1; margin: 0; }
html body.workspace-ui .wf-stock-card { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; border: 1px solid var(--ws-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .wf-stock-card header h3 { margin: 0; font-size: 15px; overflow-wrap: anywhere; }
html body.workspace-ui .wf-stock-card header p { margin: 2px 0 0; font-size: 12px; }
html body.workspace-ui .wf-stock-figures { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; }
html body.workspace-ui .wf-stock-figures > div { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
html body.workspace-ui .wf-stock-figures span { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .wf-stock-figures strong { font-size: 15px; font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-stock-figures small { color: var(--ws-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-stock-figures > div.is-aged strong, html body.workspace-ui .wf-stock-figures > div.is-aged small { color: var(--ui-wait-fg); }
html body.workspace-ui .wf-stock-card footer { margin-top: auto; padding-top: 8px; border-top: 1px solid var(--ui-row-line); font-size: 13px; }
html body.workspace-ui .wf-stock-card footer a { font-weight: 600; color: var(--ws-accent-dark, #135e63); text-decoration: none; }
@media (max-width: 760px) {
  html body.workspace-ui .wf-page form.wf-filter > .ui-form-grid:has(> label:nth-child(3)) { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  html body.workspace-ui .wf-page form.wf-filter > .ui-form-grid:has(> label:nth-child(3)) > label:first-child { grid-column: 1 / -1; }
  html body.workspace-ui .wf-stock-groups { grid-template-columns: minmax(0, 1fr); }
  html body.workspace-ui .wf-page table.md-table :is(th, td).num { text-align: left; white-space: normal; }
  html body.workspace-ui .wf-packages .wf-printbar { flex-wrap: wrap; }
  html body.workspace-ui .wf-packages .wf-printbar button { flex: 1 1 40%; }
}

/* ---------- 29. 粘贴识别（smart_paste.js） ---------- */
html body.workspace-ui details.sp-panel { margin: 0 0 14px; border: 1px dashed #b9c7c8; border-radius: 8px; background: #f7fafa; }
html body.workspace-ui details.sp-panel[open] { border-style: solid; background: #fff; }
html body.workspace-ui .sp-summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 10px 14px; cursor: pointer; list-style: none; color: var(--ws-ink); font-size: 14px; }
html body.workspace-ui .sp-summary::-webkit-details-marker { display: none; }
html body.workspace-ui .sp-summary .sp-icon { color: var(--ws-accent-dark, #135e63); font-weight: 700; }
html body.workspace-ui .sp-summary strong { color: var(--ws-accent-dark, #135e63); }
html body.workspace-ui .sp-summary .sp-hint { color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui details.sp-panel[open] .sp-summary { border-bottom: 1px solid var(--ui-row-line); }
html body.workspace-ui .sp-body { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px 14px; }
html body.workspace-ui .sp-body textarea.sp-input { width: 100%; min-height: 92px; margin: 0; font-size: 14px; line-height: 1.5; resize: vertical; }
html body.workspace-ui .sp-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
html body.workspace-ui .sp-actions button { min-height: 36px; padding: 0 14px; border: 1px solid #202326; border-radius: 6px; background: #202326; color: #fff; font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
html body.workspace-ui .sp-actions button.sp-clip { border-color: var(--ws-control-border); background: #fff; color: var(--ws-ink); }
html body.workspace-ui .sp-actions .sp-local { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .sp-status:empty { display: none; }
html body.workspace-ui .sp-status { padding: 10px 12px; border-radius: 6px; font-size: 13px; line-height: 1.6; }
html body.workspace-ui .sp-status.is-ok { background: var(--ui-done-bg); color: var(--ui-done-fg); }
html body.workspace-ui .sp-status.is-empty { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .sp-status p { margin: 0; }
html body.workspace-ui .sp-status ul { margin: 4px 0 0; padding-left: 20px; color: var(--ws-ink); }
html body.workspace-ui .sp-conflicts { margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(0, 0, 0, .08); color: var(--ui-wait-fg); }
html body.workspace-ui .sp-unknown { margin-top: 8px; color: var(--ws-muted); }
html body.workspace-ui .sp-manual { margin-top: 8px; padding: 6px 10px; border-radius: 6px; background: #f6f8fb; color: var(--ws-muted); font-size: 13px; overflow-wrap: anywhere; }
html body.workspace-ui .sp-unknown summary { cursor: pointer; }
html body.workspace-ui .sp-link { margin-left: 4px; padding: 0; border: 0; background: none; color: var(--ws-accent-dark, #135e63); font: inherit; font-weight: 600; text-decoration: underline; cursor: pointer; }
@keyframes sp-flash { from { background: #fff4c7; box-shadow: 0 0 0 3px #fff4c7; } to { background: transparent; box-shadow: 0 0 0 3px transparent; } }
html body.workspace-ui .sp-filled { animation: sp-flash 2.4s ease-out; border-radius: 6px; }
html body.workspace-ui .sp-filled :is(input, select, textarea, .ui-picker-box) { border-color: #d9a400; }
@media (max-width: 760px) {
  html body.workspace-ui .sp-summary .sp-hint { flex-basis: 100%; }
  html body.workspace-ui .sp-actions button { flex: 1 1 auto; min-height: 42px; }
}

/* ---------- 30. 一车间接箍内部领用 ---------- */
html body.workspace-ui .wf-state[data-state="consumed"] { background: #eef0fb; color: #3b46a0; }
html body.workspace-ui .wf-state[data-state="consumed"] .ui-dot { background: #5865c9; }

/* ---------- 31. 一车间现场习惯：捆号、长度要求、偏差、按日发货 ---------- */
/* 捆号：护丝上的 1–9999 数字为主，系统编号为辅 */
html body.workspace-ui .w1-mark { display: inline-flex; align-items: center; justify-content: center; min-width: 2.4em; height: 1.75em; padding: 0 .45em; margin-right: 6px; border-radius: 6px; background: #202326; color: #fff; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: .02em; line-height: 1; }
html body.workspace-ui .w1-sysno { color: var(--ws-muted); font-size: 12px; font-variant-numeric: tabular-nums; word-break: break-all; }
html body.workspace-ui .w1-sysno--only { color: inherit; font-size: inherit; }
html body.workspace-ui a.w1-mark-link { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 2px 0; text-decoration: none; }
html body.workspace-ui a.w1-mark-link:hover .w1-sysno { text-decoration: underline; }
html body.workspace-ui .wf-pkg-date { display: block; margin-top: 2px; font-size: 12px; }
html body.workspace-ui h1.w1-mark-title { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
html body.workspace-ui .w1-mark--lg { min-width: 2.2em; height: 1.6em; margin: 0; font-size: 1.25em; border-radius: 8px; }
html body.workspace-ui h1.w1-mark-title .w1-sysno { font-size: 15px; font-weight: 500; }
/* 打包表单：长度要求说明 + 逐根提醒 */
html body.workspace-ui .wf-length-rule { margin: 0 0 12px; padding: 8px 12px; border-radius: 6px; background: var(--ui-run-bg); color: var(--ui-run-fg); font-size: 13px; line-height: 1.6; }
html body.workspace-ui .wf-length-warning { margin: 12px 0 0; padding: 10px 12px; border: 1px solid #e7c6c4; border-left: 4px solid var(--ui-bad-dot); border-radius: 6px; background: var(--ui-bad-bg); color: var(--ui-bad-fg); font-size: 14px; line-height: 1.6; }
html body.workspace-ui .wf-length-warning p { margin: 0; }
html body.workspace-ui .wf-length-warning p + p { margin-top: 4px; }
html body.workspace-ui .wf-length-warning p[data-kind="long"] { color: var(--ui-wait-fg); }
html body.workspace-ui details.wf-more { padding: 0; }
html body.workspace-ui details.wf-more > summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; padding: 12px 16px; font-weight: 600; cursor: pointer; }
html body.workspace-ui details.wf-more > summary small { font-weight: 400; font-size: 12px; }
html body.workspace-ui details.wf-more > .ui-form-grid { padding: 4px 16px 16px; }
/* 捆详情：逐根长度列表，不足标红 */
html body.workspace-ui .wf-length-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(176px, 1fr)); gap: 4px 12px; margin: 8px 0 0; padding: 0; list-style: none; }
html body.workspace-ui .wf-length-list li { display: flex; align-items: baseline; gap: 8px; white-space: nowrap; padding: 4px 8px; border-radius: 4px; font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-length-list .wf-length-no { min-width: 2em; color: var(--ws-muted); font-size: 12px; text-align: right; }
html body.workspace-ui .wf-length-list li[data-state="short"] { background: var(--ui-bad-bg); color: var(--ui-bad-fg); font-weight: 600; }
html body.workspace-ui .wf-length-list li[data-state="long"] { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .wf-length-flag { margin-left: auto; font-size: 12px; }
html body.workspace-ui .wf-short-count { color: var(--ui-bad-fg); }
/* 实称偏差 */
html body.workspace-ui .wf-dev { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 4px; background: var(--ui-neutral-bg); color: var(--ui-neutral-fg); font-size: 12px; font-variant-numeric: tabular-nums; }
/* 发货：按项目、按日 */
html body.workspace-ui .wf-search select { min-height: 40px; max-width: 320px; }
html body.workspace-ui .wf-ship-days { margin: 0 0 16px; padding: 14px 16px; border: 1px solid var(--ui-chip-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .wf-ship-days-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 10px 16px; }
html body.workspace-ui .wf-ship-days-head h2 { margin: 0; font-size: 16px; }
html body.workspace-ui .wf-ship-days-head p { margin: 4px 0 0; font-size: 13px; }
html body.workspace-ui .wf-ship-day-list { display: grid; gap: 0; margin: 12px 0 0; padding: 0; list-style: none; }
html body.workspace-ui .wf-ship-day-list li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 16px; padding: 8px 0; border-top: 1px solid var(--ui-row-line); }
html body.workspace-ui .wf-ship-day-date { min-width: 96px; font-weight: 600; font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-ship-day-list li a { margin-left: auto; color: var(--ws-accent-dark, #135e63); font-weight: 600; }
@media (max-width: 760px) {
  html body.workspace-ui .wf-ship-days-head .button { width: 100%; text-align: center; }
  html body.workspace-ui .wf-search select { max-width: none; width: 100%; }
}
/* 一车间产品选项：列表在左、表单在右；手机上编辑时表单在前 */
html body.workspace-ui .wf-options .toolbar p { margin: 4px 0 0; font-size: 13px; }
html body.workspace-ui .wf-options .wf-tabs { flex-wrap: wrap; margin: 4px 0 14px; }
html body.workspace-ui .wf-options .wf-tabs > a span { margin-left: 4px; color: var(--ws-muted); font-weight: 400; font-size: 12px; }
html body.workspace-ui .wf-options-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 400px); min-width: 0; gap: 20px; align-items: start; }
html body.workspace-ui .wf-options-form { position: sticky; top: calc(var(--ui-header-h) + 16px); padding: 16px; border: 1px solid var(--ui-chip-line); border-radius: 8px; background: #fff; }
html body.workspace-ui .wf-options-form h2 { margin: 0 0 12px; font-size: 16px; }
html body.workspace-ui .wf-options-form .ui-form-grid { grid-template-columns: 1fr; }
html body.workspace-ui .wf-options-list tr.is-current td { background: var(--ui-run-bg); }
html body.workspace-ui .wf-options-list code, html body.workspace-ui .wf-options-form h2 code { font-size: 12px; }
@media (max-width: 1100px) {
  html body.workspace-ui .wf-options-layout { grid-template-columns: minmax(0, 1fr); }
  html body.workspace-ui .wf-options-layout > * { min-width: 0; }
  html body.workspace-ui .wf-options-form { position: static; }
  html body.workspace-ui .wf-options.is-editing .wf-options-form { order: -1; }
}
/* 手机卡片表格：标签一列、内容一列，多行内容不再折到标签下面 */
@media (max-width: 760px) {
  html body.workspace-ui .wf-page table.md-table:not(.md-diff) td[data-label] > .wf-cell { display: inline-block; width: 60%; vertical-align: top; overflow-wrap: anywhere; }
  html body.workspace-ui .wf-page table.md-table:not(.md-diff) td[data-label]::before { vertical-align: top; }
}
html body.workspace-ui .wf-options-list .ui-pill { white-space: nowrap; }
html body.workspace-ui .wf-options-list .table-wrap { overflow-x: auto; }
/* 捆列表快捷筛选：全部 / 待入库 / 待检 / 在库 */
html body.workspace-ui .wf-quick { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; }
html body.workspace-ui .wf-quick a { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 0 12px; border: 1px solid var(--ui-chip-line); border-radius: 999px; background: #fff; color: var(--ws-ink); font-size: 14px; text-decoration: none; }
html body.workspace-ui .wf-quick a span { min-width: 20px; padding: 0 6px; border-radius: 999px; background: var(--ui-wait-bg); color: var(--ui-wait-fg); font-size: 12px; text-align: center; }
html body.workspace-ui .wf-quick a[aria-current="page"] { border-color: #202326; background: #202326; color: #fff; }
html body.workspace-ui .wf-packages .wf-printbar { flex-wrap: wrap; }
html body.workspace-ui .wf-balance { margin: 0 0 12px; padding: 8px 12px; border-radius: 6px; background: var(--ui-neutral-bg); color: var(--ui-neutral-fg); font-size: 13px; line-height: 1.6; }
html body.workspace-ui .wf-balance[data-over="1"] { background: var(--ui-wait-bg); color: var(--ui-wait-fg); }
html body.workspace-ui .wf-prefill { margin: -4px 0 12px; font-size: 12px; }
html body.workspace-ui [data-w1-field].is-prefilled :is(input, textarea, .ui-picker-box) { background: #fbfaf3; }
/* 发货单选捆：先选项目，再勾选 */
html body.workspace-ui .wf-pick { margin-top: 6px; }
html body.workspace-ui .wf-pick[data-empty] { padding: 12px; border: 1px dashed var(--ui-chip-line); border-radius: 6px; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .wf-pick-head { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; font-size: 13px; color: var(--ws-muted); }
html body.workspace-ui .wf-pick-table tbody tr { cursor: pointer; }
html body.workspace-ui .wf-pick-table tbody tr.is-picked td { background: var(--ui-run-bg); }
html body.workspace-ui .wf-pick-table td:first-child input { width: 18px; height: 18px; margin: 0; }
html body.workspace-ui .wf-pick-table .wf-pick-sub { display: none; }
html body.workspace-ui .wf-form .ui-field:has(select[data-w1-pick]) { grid-column: 1 / -1; }
html body.workspace-ui .wf-pick-table :is(th, td) { text-align: left; }
html body.workspace-ui .wf-pick-table :is(th, td).num, html body.workspace-ui .wf-pick-table th:nth-child(4), html body.workspace-ui .wf-pick-table th:nth-child(5) { text-align: right; }
html body.workspace-ui .wf-pick-table :is(th, td):first-child { width: 44px; }
html body.workspace-ui .wf-pick-table :is(th, td):nth-child(2) { width: 72px; }
html body.workspace-ui .ui-form-grid > .wf-hint-row { grid-column: 1 / -1; margin: -6px 0 2px; }
@media (max-width: 760px) {
  /* 卡片表格里的捆号链接与标签并排 */
  html body.workspace-ui .wf-page table.md-table:not(.md-diff) td[data-label] > a.w1-mark-link { width: 60%; vertical-align: top; }
  /* 发货单选捆：手机上每捆一张小卡片 */
  html body.workspace-ui .wf-pick .table-wrap { overflow: visible; }
  html body.workspace-ui .wf-pick-table thead { display: none; }
  html body.workspace-ui .wf-pick-table, html body.workspace-ui .wf-pick-table tbody { display: block; width: 100%; }
  html body.workspace-ui .wf-pick-table tbody tr { display: grid; box-sizing: border-box; width: 100% !important; max-width: 100%; grid-template-columns: 28px auto minmax(0, 1fr); column-gap: 10px; align-items: start; padding: 10px 8px; border-top: 1px solid var(--ui-row-line); }
  html body.workspace-ui .wf-pick-table td { display: block; min-width: 0; padding: 0; border: 0; text-align: left !important; width: auto !important; white-space: normal !important; overflow-wrap: anywhere; }
  html body.workspace-ui .wf-pick-table { min-width: 0 !important; table-layout: auto; }
  html body.workspace-ui .wf-pick-table td:nth-child(n+4) { display: none; }
  html body.workspace-ui .wf-pick-table td:nth-child(3) { font-weight: 600; }
  html body.workspace-ui .wf-pick-table .wf-pick-sub { display: block; margin-top: 2px; color: var(--ws-muted); font-size: 12px; font-weight: 400; }
}

/* ---------- 32. 项目详情：本部门关注、节点突出、去重 ---------- */
html body.workspace-ui .pf-panel { margin: 0 0 16px; padding: 16px 18px; border: 1px solid var(--ui-chip-line); border-radius: 9px; background: #fff; }
html body.workspace-ui .pf-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 10px 16px; margin-bottom: 12px; }
html body.workspace-ui .pf-head h2 { margin: 0; font-size: 17px; color: var(--ws-ink); }
html body.workspace-ui .pf-head p { margin: 4px 0 0; font-size: 12px; }
html body.workspace-ui .pf-tabs { display: flex; flex-wrap: wrap; gap: 4px; padding: 3px; border: 1px solid var(--ui-chip-line); border-radius: 8px; background: var(--ui-page); }
html body.workspace-ui .pf-tabs a { display: inline-flex; align-items: center; gap: 4px; padding: 6px 10px; border-radius: 6px; color: var(--ui-text-2); font-size: 13px; font-weight: 600; text-decoration: none; }
html body.workspace-ui .pf-tabs a small { padding: 0 5px; border-radius: 999px; background: var(--ui-run-bg); color: var(--ui-run-fg); font-size: 11px; font-weight: 600; }
html body.workspace-ui .pf-tabs a[aria-current="page"] { background: #fff; color: var(--ws-ink); box-shadow: 0 1px 2px rgba(16, 24, 32, .1); }
html body.workspace-ui .pf-figures { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 8px; margin: 0 0 12px; }
html body.workspace-ui .pf-figure { min-width: 0; margin: 0; padding: 10px 12px; border: 1px solid var(--ui-row-line); border-radius: 7px; background: var(--ui-head-bg); }
html body.workspace-ui .pf-figure.is-wide { grid-column: span 2; }
html body.workspace-ui .pf-figure dt { color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .pf-figure dd { margin: 3px 0 0; color: var(--ws-ink); font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
html body.workspace-ui .pf-figure dd small { display: block; margin-top: 2px; color: var(--ws-muted); font-size: 12px; font-weight: 400; }
html body.workspace-ui .pf-figure.is-bad { border-color: #e7c6c4; background: var(--ui-bad-bg); }
html body.workspace-ui .pf-figure.is-bad dd, html body.workspace-ui .pf-figure.is-bad dd small { color: var(--ui-bad-fg); }
html body.workspace-ui .pf-figure.is-wait { border-color: #ecd9b8; background: var(--ui-wait-bg); }
html body.workspace-ui .pf-figure.is-wait dd small { color: var(--ui-wait-fg); }
html body.workspace-ui .pf-figure.is-done dd { color: var(--ui-done-fg); }
html body.workspace-ui .pf-actions { margin: 0 0 12px; padding: 10px 12px; border: 1px solid #e7c6c4; border-left: 4px solid var(--ui-bad-dot); border-radius: 7px; background: var(--ui-bad-bg); }
html body.workspace-ui .pf-actions h3, html body.workspace-ui .pf-stages h3 { margin: 0 0 8px; font-size: 14px; }
html body.workspace-ui .pf-action { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0; border-top: 1px solid rgba(158, 59, 56, .15); color: var(--ws-ink); text-decoration: none; }
html body.workspace-ui .pf-action small { display: block; color: var(--ui-bad-fg); font-size: 12px; }
html body.workspace-ui .pf-stage-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 6px; }
html body.workspace-ui .pf-stage { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--ui-row-line); border-left: 4px solid #b9c7d3; border-radius: 6px; background: #fff; color: var(--ws-ink); text-decoration: none; }
html body.workspace-ui .pf-stage small { display: block; color: var(--ws-muted); font-size: 12px; }
html body.workspace-ui .pf-stage.completed { border-left-color: #16834b; }
html body.workspace-ui .pf-stage:is(.current, .working) { border-left-color: #2477bd; }
html body.workspace-ui .pf-stage.risk { border-left-color: #d97706; background: #fffaf0; }
html body.workspace-ui .pf-stage-no { min-width: 24px; color: var(--ws-muted); font-weight: 700; text-align: right; }
html body.workspace-ui .pf-empty { margin: 0; font-size: 13px; }
html body.workspace-ui .cycle-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin: 0 0 10px; color: #123f62; font-size: 16px; }
html body.workspace-ui .cycle-title small { color: #64788a; font-size: 12px; font-weight: 400; }
html body.workspace-ui .cycle-step.is-focus { box-shadow: 0 0 0 2px #202326; }
html body.workspace-ui .domain-entry-grid { display: grid; }
html body.workspace-ui .domain-entry.is-mine { order: -1; border-color: #202326; background: #fff; }
html body.workspace-ui .source-status-board--compact { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
@media (max-width: 600px) {
  html body.workspace-ui .pf-figure.is-wide { grid-column: auto; }
  html body.workspace-ui .pf-tabs { width: 100%; }
}
/* 项目首页：异常在待办里标出；派发表单按需展开；按部门显示列 */
html body.workspace-ui .task-exception { display: inline-block; padding: 0 6px; border-radius: 4px; background: var(--ui-bad-bg); color: var(--ui-bad-fg); font-weight: 600; }
html body.workspace-ui details.task-assign { margin-top: 4px; }
html body.workspace-ui details.task-assign > summary { cursor: pointer; color: var(--ws-accent-dark, #135e63); font-size: 12px; font-weight: 600; }
html body.workspace-ui details.task-assign[open] > summary { margin-bottom: 6px; }
html body.workspace-ui .result-table .muted-line.is-late { color: var(--ui-bad-fg); font-weight: 600; }
html body.workspace-ui .result-table td.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
html body.workspace-ui .result-title { flex-wrap: wrap; gap: 8px 16px; }
html body.workspace-ui .result-lens { margin-left: auto; }
/* Project detail actions remain inside the viewport (Claude 2026-10-25; 768px browser check).
   "More actions" sits last in the action row and opens leftwards, so it never passes the right edge;
   long (Russian) items wrap. Domain entries fit the width left beside the sidebar; phone rules unchanged. */
html body.workspace-ui .project-actions-bar details.ui-menu { margin-left: auto; }
html body.workspace-ui .project-actions-bar details.ui-menu > .ui-menu-list { left: auto; right: 0; max-width: min(320px, calc(100vw - 32px)); }
html body.workspace-ui .project-actions-bar details.ui-menu > .ui-menu-list > a { white-space: normal; overflow-wrap: anywhere; }
@media (min-width: 651px) {
  html body.workspace-ui .domain-entry-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
}

/* Tablets (761–1100px), Claude 2026-10-26 after Codex's 768px check.
   1. The centre tabs stay in the single 60px header row; centres that do not fit go to "更多"
      (workspace_shell.js). workspace_shell.css used to move them to a second row under this fixed-height
      header, where they covered the top of the sidebar.
   2. The task table is laid out as on phones (title; person, status, due). The older workbench.css
      ordering for this width no longer reshuffles the columns or pushes "办理" out of the panel. */
@media (min-width: 761px) and (max-width: 1050px) {
  html body.workspace-ui .topbar { flex-wrap: nowrap; gap: 12px; padding: 0 16px; }
  html body.workspace-ui .brand { min-width: 0; padding-right: 12px; }
  html body.workspace-ui .workspace-system-tabs { order: 0; flex: 1 1 auto; min-width: 0; min-height: 0; padding-bottom: 0; }
}
@media (min-width: 761px) and (max-width: 1100px) {
  html body.workspace-ui .ui-table { display: block; }
  html body.workspace-ui .ui-table .ui-thead { display: none; }
  html body.workspace-ui .ui-table .ui-tr {
    grid-column: auto;
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) auto auto;
    grid-template-areas: "main main main" "who status due";
    gap: 8px 18px;
    padding: 14px 20px;
  }
  html body.workspace-ui .ui-table .ui-tr > .ui-td { order: 0; padding: 0; }
  html body.workspace-ui .ui-table .ui-tr > .ui-td-main { grid-area: main; padding-left: 0; }
  html body.workspace-ui .ui-table .ui-tr > .ui-td:nth-child(2) { grid-area: who; }
  html body.workspace-ui .ui-table .ui-tr > .ui-td:nth-child(3),
  html body.workspace-ui .ui-table .ui-tr > .ui-td:nth-child(6),
  html body.workspace-ui .ui-table .ui-tr > .ui-td-action { display: none; }
  html body.workspace-ui .ui-table .ui-tr > .ui-td:nth-child(4) { grid-area: due; text-align: right; }
  html body.workspace-ui .ui-table .ui-tr > .ui-td:nth-child(4) small { justify-content: flex-end; }
  html body.workspace-ui .ui-table .ui-tr > .ui-td:nth-child(5) { grid-area: status; }
  html body.workspace-ui .ui-table .is-overdue > .ui-td-main { box-shadow: none; }
  html body.workspace-ui .ui-table .ui-tr.is-overdue { box-shadow: inset 3px 0 0 var(--ws-danger); }
  /* With the bulk-select column every cell moves one place along. */
  html body.workspace-ui .ui-table.has-bulk .ui-tr { grid-template-columns: 28px minmax(0, 1fr) auto auto; grid-template-areas: "check main main main" "check who status due"; }
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td-check { grid-area: check; padding: 0 !important; align-items: flex-start; }
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td:nth-child(2) { grid-area: main; display: block; padding-left: 0; }
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td:nth-child(3) { grid-area: who; display: block; }
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td:nth-child(4),
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td:nth-child(7),
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td-action { display: none; }
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td:nth-child(5) { grid-area: due; display: block; text-align: right; }
  html body.workspace-ui .ui-table.has-bulk .ui-tr > .ui-td:nth-child(6) { grid-area: status; display: block; }
}

/* ---------- 33. 库存与发货：带单位的数字、发货单详情、生产库存列表 ---------- */
/* 成品库存：一格一组带单位的数字（1 捆 · 10 根），第二行小字为长度和重量；为零显示“—” */
html body.workspace-ui .wf-page table.md-table :is(th, td).num { text-align: right; font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-page td.wf-fig-cell { white-space: nowrap; }
html body.workspace-ui .wf-page .wf-fig { display: block; color: var(--ws-ink); font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-page .wf-fig b { font-weight: 700; }
html body.workspace-ui .wf-page .wf-fig-sub { display: block; margin-top: 2px; color: var(--ws-muted); font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }
html body.workspace-ui .wf-page .wf-fig-none { color: var(--ws-muted); }
/* 打包台账：系统编号只在连字符处换行，不在字中间断开；没有实称时标“理论” */
html body.workspace-ui .wf-packages .w1-sysno { word-break: normal; overflow-wrap: break-word; }
html body.workspace-ui .wf-page .wf-theory { color: var(--ui-text-2); }
html body.workspace-ui .wf-page .wf-weight-kind { display: block; color: var(--ws-muted); font-size: 11px; line-height: 1.3; }
html body.workspace-ui .wf-page .wf-unweighed { color: var(--ui-bad-fg); font-weight: 600; }
/* 发货单详情：标题行（返回、单号、状态），操作分主次，导出收成一行文字链接 */
html body.workspace-ui .wf-dispatch > .wf-dispatch-head { align-items: flex-end; }
html body.workspace-ui .wf-dispatch .wf-dispatch-title { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; flex: 1 1 420px; min-width: 0; }
html body.workspace-ui .wf-page.wf-dispatch > .toolbar .wf-dispatch-title a.wf-back:not(.button) {
  flex-basis: 100%; min-height: 0; padding: 0; border: 0; background: none; color: var(--ws-accent-dark); font-size: 13px; font-weight: 600;
}
html body.workspace-ui .wf-page.wf-dispatch > .toolbar .wf-dispatch-title a.wf-back:not(.button):hover { background: none; text-decoration: underline; }
html body.workspace-ui .wf-dispatch .wf-dispatch-title h1 { font-size: 22px; line-height: 1.3; }
html body.workspace-ui .wf-dispatch > .toolbar .wf-dispatch-actions > a.wf-print { border-color: var(--ws-accent); color: var(--ws-accent-dark); }
html body.workspace-ui .wf-dispatch > .toolbar .wf-dispatch-actions > a.wf-danger { border-color: #e7c3c1; color: var(--ui-bad-fg); }
html body.workspace-ui .wf-dispatch > .toolbar .wf-dispatch-actions > a.wf-danger:hover { background: var(--ui-bad-bg); }
html body.workspace-ui .wf-dispatch > .toolbar nav.wf-exports { flex-basis: 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 16px; color: var(--ws-muted); font-size: 13px; }
html body.workspace-ui .wf-page.wf-dispatch > .toolbar nav.wf-exports a:not(.button) {
  min-height: 32px; padding: 0; border: 0; background: none; color: var(--ws-accent-dark); font-size: 13px; font-weight: 600;
}
html body.workspace-ui .wf-page.wf-dispatch > .toolbar nav.wf-exports a:not(.button):hover { background: none; text-decoration: underline; }
/* 信息栏：8 栏，项目客户 / 地址 / 运输各占 2 栏；值不在字中间断开 */
html body.workspace-ui .wf-dispatch dl.summary-grid.wf-dispatch-summary { grid-template-columns: repeat(8, minmax(0, 1fr)); }
html body.workspace-ui .wf-dispatch dl.wf-dispatch-summary > .wf-span-2 { grid-column: span 2; }
html body.workspace-ui .wf-dispatch dl.wf-dispatch-summary dd { overflow-wrap: break-word; }
html body.workspace-ui .wf-dispatch dl.wf-dispatch-summary dd small { display: block; margin-top: 2px; color: var(--ws-muted); font-size: 13px; font-weight: 400; }
html body.workspace-ui .wf-dispatch dl.wf-dispatch-summary .wf-vehicle { font-size: 17px; font-weight: 700; letter-spacing: .02em; }
/* 本车合计：一组小标签 */
html body.workspace-ui .wf-dispatch .wf-dispatch-totals { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font-variant-numeric: tabular-nums; }
html body.workspace-ui .wf-dispatch .wf-dispatch-totals > span { padding: 6px 12px; border: 1px solid var(--ws-line); border-radius: 999px; background: #fff; color: var(--ui-text-2); font-size: 13px; }
html body.workspace-ui .wf-dispatch .wf-dispatch-totals > span b { color: var(--ws-ink); font-size: 15px; }
html body.workspace-ui .wf-dispatch .wf-dispatch-totals > span.wf-unweighed { border-color: #e7c3c1; background: var(--ui-bad-bg); }
html body.workspace-ui .wf-dispatch p.wf-note { margin: 0; color: var(--ui-text-2); }
@media (max-width: 1100px) {
  html body.workspace-ui .wf-dispatch dl.summary-grid.wf-dispatch-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  html body.workspace-ui .wf-dispatch dl.summary-grid.wf-dispatch-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  html body.workspace-ui .wf-dispatch .wf-dispatch-title h1 { font-size: 19px; }
  html body.workspace-ui .wf-dispatch > .toolbar .wf-dispatch-actions { width: 100%; }
  html body.workspace-ui .wf-dispatch > .toolbar .wf-dispatch-actions > a { flex: 1 1 auto; justify-content: center; min-height: 44px; }
  html body.workspace-ui .wf-page td.wf-fig-cell { white-space: normal; }
  /* 手机卡片：标签和数值左对齐，与其它字段一致；带单位的数字放在标签右侧，第二行与数值对齐 */
  html body.workspace-ui .wf-page table.md-table:not(.md-diff) :is(th, td).num { text-align: left; }
  html body.workspace-ui .wf-page table.md-table:not(.md-diff) td.wf-fig-cell > :is(.wf-fig, .wf-fig-none) { display: inline-block; width: 60%; vertical-align: top; }
  html body.workspace-ui .wf-page table.md-table:not(.md-diff) td.wf-fig-cell > .wf-fig-sub { margin-left: 38%; }
}
/* 二、三、五车间成品库存：搜索框和查询按钮同一行；库存数加粗、为零变灰；收发增减用颜色区分 */
html.production-app body.workspace-ui .prod-page .prod-filters.prod-search-inline { flex-wrap: nowrap; }
html.production-app body.workspace-ui .prod-page .prod-filters.prod-search-inline > input[type="search"] { flex: 1 1 auto; width: auto; max-width: 560px; height: 38px; margin: 0; }
html.production-app body.workspace-ui .prod-page .prod-table :is(th, td).num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
html.production-app body.workspace-ui .prod-page .prod-stock-balance strong { color: #202326; font-weight: 700; }
html.production-app body.workspace-ui .prod-page .prod-stock-balance.is-zero, html.production-app body.workspace-ui .prod-page .prod-stock-balance.is-zero strong { color: var(--ws-muted); font-weight: 400; }
html.production-app body.workspace-ui .prod-page .prod-delta.is-in { color: var(--ui-done-fg); }
html.production-app body.workspace-ui .prod-page .prod-delta.is-out { color: var(--ui-bad-fg); }
html.production-app body.workspace-ui .prod-page .prod-stock-headline { font-variant-numeric: tabular-nums; }
@media (max-width: 760px) {
  html.production-app body.workspace-ui .prod-page .prod-filters.prod-search-inline > input[type="search"] { height: 44px; max-width: none; }
  html.production-app body.workspace-ui .prod-page .prod-filters.prod-search-inline > :is(button, .button) { flex: 0 0 auto; }
  html.production-app body.workspace-ui .prod-page .prod-table :is(th, td).num { text-align: left; }
}
