/* apps/web 业务壳：UIprd Token 别名 + list-shell / 业务叠层视觉对齐。
 * 壳结构走 ui-shell（layout.md）；本文件不另造侧栏排布。
 * 弹层走 dialog.ui-dialog / aside.ui-drawer + ui-drawer-backdrop（规范 API）。 */

:root {
  --pearl: var(--color-bg-page);
  --page-bg: var(--color-bg-page);
  --surface: var(--color-bg);
  --border: var(--color-border);
  --primary: var(--color-primary);
  --gold: var(--color-primary);
  --gold-soft: var(--color-brand-30);
  --gold-deep: var(--color-primary-hover);
  --gold-wash: var(--color-table-selected);
  --gold-wash-strong: rgba(194, 65, 12, 0.18);
  --ink: var(--color-text);
  --ink-2: var(--color-text-secondary);
  --muted: var(--color-text-secondary);
  --muted-2: var(--color-text-tertiary);
  --nav-bg: var(--color-bg);
  --success: var(--color-success);
  --success-wash: var(--color-success-soft);
  --warning: var(--color-warning);
  --danger: var(--color-danger);
  --danger-wash: var(--color-danger-soft);
  --mask: rgba(20, 20, 20, 0.4);
  --grid-line: var(--color-divider);
  --stripe: var(--color-bg-subtle);
  --row-hover: var(--color-table-hover);
  --stats-bg: var(--color-bg-page);
  --stats-label-bg: var(--color-primary-soft);
  --tag-bg: var(--color-bg-muted);
  --toast-ok-bg: var(--color-bg);
  --toast-err-bg: var(--color-bg);
  --scroll-thumb: var(--color-gray-30);
  --scroll-thumb-hover: var(--color-gray-40);
  --btn-disabled-bg: var(--color-gray-40);
  --btn-disabled-border: var(--color-gray-40);
  --btn-disabled-text: var(--color-white);
  --font: var(--font-sans);
  --mono: var(--font-mono);
  --btn-h: var(--control-h-md);
  --btn-h-sm: var(--control-h-sm);
  --btn-fs: var(--fs-button);
  --btn-pad-x: var(--space-4);
  --btn-gap: var(--space-2);
  /* Table Pro 行高（业务层显式钉死，避免旧 Token/缓存仍是 40） */
  --table-row-h: 46px;
  --row-h: var(--table-row-h);
  --pager-h: var(--control-h-md);
  --cell-pad-x: var(--space-3);
  --cell-clip-en: 40;
  --cell-clip-zh: 20;
  --drawer-w: min(80vw, 100%);
  --dialog-w: 400px;
  --modal-w-sm: 520px;
  --modal-w-md: 640px;
  --modal-w-lg: 760px;
  --fs-ctrl: 12px;
  --lh-body: var(--lh-normal);
  --toolbar-pad-y: var(--space-3);
  --toolbar-pad-x: var(--space-4);
  --footer-pad-y: var(--space-2);
  --footer-pad-x: var(--space-4);
  --overlay-pad-y: var(--space-4);
  --overlay-pad-x: var(--space-5);
  --card-pad-y: var(--space-4);
  --card-pad-x: var(--space-5);
  --form-row-gap: var(--space-4);
  --field-gap: var(--space-2);
  --inline-gap: var(--space-2);
  --dur: var(--dur-normal);
  --dur-fast: var(--dur-fast);
  --dur-nav: var(--dur-slow);
  --dur-overlay: var(--dur-enter);
  --ease-ep: var(--ease-out);
  --ease-drawer: var(--ease-emphasized);
  --ease-panel: var(--ease-out);
  --shadow-md: var(--shadow-card);
}

html, body, .ui-shell, .ui-page-main-body, .list-shell, .table-scroll {
  overscroll-behavior-x: none;
}

.ui-page-main-body > .list-shell,
.ui-page-main-body > .ops-ex {
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
}

/* 长表单：fillPageBody 内容在 .list-shell（overflow:hidden）内，须子项内嵌纵滚 */
.list-shell > .lf,
.list-shell > .wff {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* 2.3.7 种子库：左侧竖排页内 Tab */
.list-shell > .dev-seed {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: 0;
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
  width: 100%;
  box-sizing: border-box;
}
.dev-seed__tabs {
  flex: 0 0 auto;
  width: max-content;
  min-width: 7.5rem;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-1);
  padding: 0 var(--space-3) 0 0;
  margin-right: var(--space-3);
  border-right: 1px solid var(--color-border);
  box-sizing: border-box;
}
.dev-seed__tab {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--color-text);
  font-family: inherit;
  font-size: var(--fs-body);
  font-weight: var(--fw-medium);
  height: 36px;
  min-height: 36px;
  padding: 0 var(--space-3);
  border-radius: var(--radius-md);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  text-align: left;
  white-space: nowrap;
  transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
.dev-seed__tab:hover:not(.is-active) {
  background: var(--color-bg-subtle);
}
.dev-seed__tab.is-active,
.dev-seed__tab[aria-selected="true"] {
  background: var(--color-secondary);
  color: var(--color-text-inverse);
}
.dev-seed__tab:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus);
}
.dev-seed__panel {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  overflow: hidden;
  position: relative;
}

/* 2.11.1 异常处理：主区满宽贴齐已开页面底边（领星式工作区，不再浮白卡顶缝）
 * 须压过 uiguide「.ui-page:has(> .ui-page-top) > .ui-page-main」 */
.ui-page:has(> .ui-page-top) > .ui-page-main.page-main--flush-top,
.ui-page:has(> .ui-opened-pages) > .ui-page-main.page-main--flush-top {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: var(--color-bg);
}
.ui-page:has(> .ui-page-top) > .ui-page-main.page-main--flush-top .ops-ex__head,
.ui-page:has(> .ui-opened-pages) > .ui-page-main.page-main--flush-top .ops-ex__head {
  margin: 0;
  padding: var(--space-2) var(--space-4);
  border-bottom: 1px solid var(--color-border);
  background: var(--color-bg);
}
.ui-page:has(> .ui-page-top) > .ui-page-main.page-main--flush-top .ops-ex__body,
.ui-page:has(> .ui-opened-pages) > .ui-page-main.page-main--flush-top .ops-ex__body {
  padding: var(--space-3) var(--space-4) var(--space-2);
  background: var(--color-bg-page);
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}
/* 列表视图：壳拉满，表体吃剩余高度，底栏贴底（达成情况 KPI 无 list-shell 不受影响） */
.ui-page:has(> .ui-page-top) > .ui-page-main.page-main--flush-top .ops-ex__body > .list-shell,
.ui-page:has(> .ui-opened-pages) > .ui-page-main.page-main--flush-top .ops-ex__body > .list-shell {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
}
.ui-page:has(> .ui-page-top) > .ui-page-main.page-main--flush-top .ops-ex .table-scroll,
.ui-page:has(> .ui-opened-pages) > .ui-page-main.page-main--flush-top .ops-ex .table-scroll {
  flex: 1 1 0;
  min-height: 0;
}
.ui-page:has(> .ui-page-top) > .ui-page-main.page-main--flush-top .ops-ex .list-footer,
.ui-page:has(> .ui-opened-pages) > .ui-page-main.page-main--flush-top .ops-ex .list-footer {
  flex-shrink: 0;
  padding-block: var(--space-1);
  align-items: center;
}

/* ── Buttons（覆盖 uiguide：默认高 40 = --control-h-md） ── */
button.ui-btn,
.ui button.ui-btn,
.ui-btn {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--btn-gap);
  box-sizing: border-box;
  height: var(--control-h-md);
  min-height: var(--control-h-md);
  padding: 0 var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--fs-button);
  font-weight: var(--fw-medium);
  line-height: 1;
  text-align: center;
  border: 1px solid transparent;
  cursor: pointer;
  background: var(--color-bg);
  color: var(--color-text);
  user-select: none;
  white-space: nowrap;
  font-family: inherit;
  transition: background-color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
button.ui-btn[hidden],
.ui-btn[hidden] { display: none; }
button.ui-btn.ui-btn-sm,
.ui button.ui-btn.ui-btn-sm,
.ui-btn.ui-btn-sm {
  height: var(--control-h-sm);
  min-height: var(--control-h-sm);
  padding: 0 var(--space-3);
  font-size: var(--fs-caption);
}
button.ui-btn.ui-btn-icon,
.ui button.ui-btn.ui-btn-icon,
.ui-btn.ui-btn-icon {
  width: var(--control-h-md);
  min-width: var(--control-h-md);
  padding: 0;
}
button.ui-btn.ui-btn-icon.ui-btn-sm,
.ui-btn.ui-btn-icon.ui-btn-sm {
  width: var(--control-h-sm);
  min-width: var(--control-h-sm);
}
button.ui-btn:focus-visible,
.ui-btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
/* default：白底 + 主色边框/字；hover 软底 */
button.ui-btn-default,
.ui button.ui-btn-default,
.ui-btn-default {
  background: var(--color-bg);
  color: var(--color-primary);
  border-color: var(--color-primary);
}
button.ui-btn-default:hover:not(:disabled),
.ui button.ui-btn-default:hover:not(:disabled),
.ui-btn-default:hover:not(:disabled) {
  background: var(--color-primary-soft);
}
button.ui-btn-default:disabled,
.ui-btn-default:disabled { opacity: 0.45; cursor: not-allowed; }
button.ui-btn-primary,
.ui button.ui-btn-primary,
.ui-btn-primary {
  background: var(--color-primary);
  color: #fff;
  border-color: var(--color-primary);
}
button.ui-btn-primary:hover:not(:disabled),
.ui button.ui-btn-primary:hover:not(:disabled),
.ui-btn-primary:hover:not(:disabled) { background: var(--color-primary-hover); color: #fff; }
button.ui-btn-primary:disabled,
.ui-btn-primary:disabled { opacity: 0.45; cursor: not-allowed; }
button.ui-btn-secondary,
.ui button.ui-btn-secondary,
.ui-btn-secondary {
  background: var(--color-bg);
  color: var(--color-primary);
  border-color: var(--color-primary);
}
button.ui-btn-secondary:hover:not(:disabled),
.ui button.ui-btn-secondary:hover:not(:disabled),
.ui-btn-secondary:hover:not(:disabled) {
  background: var(--color-primary-soft);
}
button.ui-btn-danger,
.ui button.ui-btn-danger,
.ui-btn-danger {
  background: var(--color-danger);
  color: #fff;
  border-color: var(--color-danger);
}
button.ui-btn-danger:hover:not(:disabled),
.ui button.ui-btn-danger:hover:not(:disabled),
.ui-btn-danger:hover:not(:disabled) {
  background: var(--color-danger-hover);
  color: #fff;
}
button.ui-btn-danger:disabled,
.ui-btn-danger:disabled { opacity: 0.45; cursor: not-allowed; }
/* 成功/启用类实心按钮：仅用 --color-success，不当第二主题色 */
button.ui-btn-success,
.ui button.ui-btn-success,
.ui-btn-success {
  background: var(--color-success);
  color: #fff;
  border-color: var(--color-success);
}
button.ui-btn-success:hover:not(:disabled),
.ui button.ui-btn-success:hover:not(:disabled),
.ui-btn-success:hover:not(:disabled) {
  background: #0d5f58;
  color: #fff;
}
button.ui-btn-success:disabled,
.ui-btn-success:disabled { opacity: 0.45; cursor: not-allowed; }
button.ui-btn-quiet,
.ui-btn-quiet {
  background: var(--color-gray-40);
  color: #fff;
  border-color: var(--color-gray-40);
}
button.ui-btn-ghost,
.ui-btn-ghost {
  background: transparent;
  color: var(--color-text-secondary);
  border-color: transparent;
}
button.ui-btn-ghost:hover:not(:disabled),
.ui-btn-ghost:hover:not(:disabled) {
  background: var(--color-bg-subtle);
  color: var(--color-text);
}
/* 字链：压过上方 .ui-btn 的控制高度/水平垫，对齐 base ui-btn-link（操作列勿撑宽） */
button.ui-btn.ui-btn-link,
.ui button.ui-btn.ui-btn-link,
.ui-btn.ui-btn-link {
  height: auto;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--color-primary);
  gap: 0;
}

/* ui-segmented：抵消上方 `.ui button.ui-btn` 默认白底，对齐 ui-guide 浅底轨道 + 白底高亮 */
.ui .ui-segmented,
.ui-segmented {
  display: inline-flex;
  padding: 3px;
  gap: 2px;
  background: var(--color-bg-subtle);
  border: 1px solid #e7e7e7;
  border-radius: var(--radius-md);
}
.ui .ui-segmented .ui-btn,
.ui-segmented .ui-btn,
.ui .ui-segmented button.ui-btn,
.ui-segmented button.ui-btn {
  height: 32px;
  min-height: 32px;
  padding: 0 14px;
  background: transparent;
  color: var(--color-text-secondary);
  border: 0;
  box-shadow: none;
}
.ui .ui-segmented .ui-btn:hover:not(:disabled):not(.is-active),
.ui-segmented .ui-btn:hover:not(:disabled):not(.is-active),
.ui .ui-segmented button.ui-btn:hover:not(:disabled):not(.is-active),
.ui-segmented button.ui-btn:hover:not(:disabled):not(.is-active) {
  color: var(--color-text);
  background: transparent;
}
.ui .ui-segmented .ui-btn.is-active,
.ui-segmented .ui-btn.is-active,
.ui .ui-segmented button.ui-btn.is-active,
.ui-segmented button.ui-btn.is-active {
  background: var(--color-bg);
  color: var(--color-text);
  box-shadow: var(--shadow-sm);
}
.ui .ui-segmented .ui-btn.is-active:hover:not(:disabled),
.ui-segmented .ui-btn.is-active:hover:not(:disabled),
.ui .ui-segmented button.ui-btn.is-active:hover:not(:disabled),
.ui-segmented button.ui-btn.is-active:hover:not(:disabled) {
  background: var(--color-bg);
  color: var(--color-text);
}
button.ui-btn-danger-text,
.ui-btn-danger-text {
  background: transparent;
  color: var(--color-danger);
  border-color: transparent;
}
button.ui-btn.is-loading,
.ui-btn.is-loading { pointer-events: none; position: relative; color: transparent !important; }
button.ui-btn.is-loading::after,
.ui-btn.is-loading::after {
  content: "";
  position: absolute;
  top: 50%; left: 50%;
  width: 4px; height: 4px;
  margin: -2px 0 0 -2px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: -7px 0 0 currentColor, 7px 0 0 currentColor;
  animation: ui-dots 1s ease-in-out infinite;
  color: #fff;
}
button.ui-btn-default.is-loading::after,
button.ui-btn-ghost.is-loading::after,
.ui-btn-default.is-loading::after,
.ui-btn-ghost.is-loading::after { color: var(--color-text); }
@keyframes ui-dots { 0%, 100% { opacity: 0.28; } 50% { opacity: 1; } }

.tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 22px;
  padding: 0 var(--space-2);
  border-radius: var(--radius-pill);
  font-size: var(--fs-caption);
  font-weight: 600;
  color: var(--color-text);
  background: var(--color-bg-muted);
}
.tag--ok { background: var(--color-success-soft); color: var(--color-success); }
.tag--warn { background: var(--color-warning-soft); color: var(--color-warning); }
.tag--danger { background: var(--color-danger-soft); color: var(--color-danger); }
.tag--info, .tag--processing { background: var(--color-info-soft); color: var(--color-info); }
.tag--muted, .tag--gold { background: var(--color-bg-muted); color: var(--color-text-secondary); }

.link { color: var(--color-primary); font-weight: 500; cursor: pointer; text-decoration: none; }
.link:hover { text-decoration: underline; }
.link--id { color: var(--color-text); font-weight: 700; }
.link--danger,
.link.is-danger { color: var(--color-danger); }
.link--ok,
.link.is-success { color: var(--color-success); }
a.status-tag-link {
  color: inherit;
  text-decoration: none;
  font-weight: inherit;
}
a.status-tag-link:hover { text-decoration: none; }
a.status-tag-link .ui-tag { cursor: pointer; }
/* 操作列不可点：须压过 .link 主色，对齐 ui-link.is-disabled */
a.link.is-disabled,
a.link[aria-disabled="true"],
.link.is-disabled,
.link[aria-disabled="true"] {
  color: var(--color-text-disabled);
  pointer-events: none;
  cursor: not-allowed;
  text-decoration: none;
}
a.link.is-disabled:hover,
a.link[aria-disabled="true"]:hover,
.link.is-disabled:hover,
.link[aria-disabled="true"]:hover {
  color: var(--color-text-disabled);
  text-decoration: none;
}
.muted { color: var(--color-text-secondary); font-size: var(--fs-caption); }

/* 自动化节点详情：字段名左列更醒目，内容右列完整展示、不抢层级 */
.an-node-detail {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.an-node-detail__row {
  display: grid;
  grid-template-columns: 7.5em minmax(0, 1fr);
  gap: var(--space-3);
  align-items: start;
}
.an-node-detail__label {
  color: var(--color-text);
  font-size: var(--fs-body);
  font-weight: var(--fw-medium);
  line-height: var(--lh-normal, 1.5);
}
.an-node-detail__value {
  color: var(--color-text-secondary);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  line-height: var(--lh-normal, 1.5);
  word-break: break-all;
  white-space: pre-wrap;
}
.an-node-detail__value .ui-text-success,
.an-node-detail__value .ui-text-danger {
  font-weight: var(--fw-medium);
}

/* ── List / table ── */
.list-shell {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  background: transparent;
  border: 0;
  border-radius: 0;
  overflow: hidden;
  position: relative;
}
/* 表单壳内骨架：贴满 list-shell（切页 / 内容区）；勿再对 --page 给壳加 padding */
.list-shell > .ui-skeleton-block--form,
.list-shell > .ui-skeleton-block--form-body {
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  margin: 0;
  box-sizing: border-box;
}
/* 同壳刷新：骨架落在 table-scroll / 内容槽，工具栏常显 */
.list-shell > .table-scroll > .ui-skeleton-block--form-body,
.list-shell > .ui-table-wrap > .ui-skeleton-block--form-body {
  flex: 1 1 auto;
  min-height: 120px;
  width: 100%;
  margin: 0;
  box-sizing: border-box;
}
.table-bar {
  display: flex;
  align-items: center;
  /* 筛项固定 gap，禁止 space-between 等分拉开；靠右按键由 .table-bar-right flex:1 + justify-end */
  justify-content: flex-start;
  gap: var(--space-3);
  padding: 0;
  border: 0;
  border-bottom: 0;
  flex-shrink: 0;
  flex-wrap: wrap;
  background: transparent;
}
/* 多维表格查询 chrome：灰条铺满 page-main 顶圆角；选中白底 / 未选灰底 */
.ui-page:has(> .ui-opened-pages) > .ui-page-main:has([data-query-table]),
.ui-page:has(> .ui-page-top) > .ui-page-main:has([data-query-table]) {
  padding: 0;
}
.qt-query-chrome {
  display: flex;
  flex-direction: column;
  gap: 0;
  flex-shrink: 0;
  position: sticky;
  top: 0;
  z-index: 5;
  background: transparent;
  box-sizing: border-box;
}
.qt-chrome-top {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-3);
  width: 100%;
  min-width: 0;
  flex-shrink: 0;
  box-sizing: border-box;
  background: var(--color-bg-subtle);
  padding: var(--qt-view-chrome-pad-y, 5px) var(--qt-inset, 10px);
  padding-left: 0;
  min-height: calc(var(--control-h-filter, 36px) + 2 * var(--qt-view-chrome-pad-y, 5px));
}
.qt-chrome-top > .view-tabs {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
  padding: 0;
  background: transparent;
  align-self: flex-end;
  margin-bottom: calc(-1 * var(--qt-view-chrome-pad-y, 5px));
}
.qt-chrome-top > .qt-chrome-actions,
.qt-chrome-top > .table-bar-right {
  flex: 0 0 auto;
  margin-left: auto;
  align-self: center;
  --control-h-md: var(--control-h-filter);
  --control-h-sm: var(--control-h-filter);
  --control-h-lg: var(--control-h-filter);
  --btn-h: var(--control-h-filter);
  --btn-h-sm: var(--control-h-filter);
  --ui-select-h: var(--control-h-filter);
}
.qt-chrome-top > .qt-chrome-actions .ui-btn:not(.ui-btn-link),
.qt-chrome-top > .table-bar-right .ui-btn:not(.ui-btn-link) {
  height: var(--control-h-filter);
  min-height: var(--control-h-filter);
  box-sizing: border-box;
}
.qt-chrome-top > .qt-chrome-actions .table-bar-tools .ui-btn.ui-btn-icon,
.qt-chrome-top > .table-bar-right .table-bar-tools .ui-btn.ui-btn-icon {
  width: var(--control-h-filter);
  min-width: var(--control-h-filter);
  height: var(--control-h-filter);
}
.view-tabs {
  display: block;
  width: 100%;
  min-width: 0;
  flex-shrink: 0;
  box-sizing: border-box;
  background: var(--color-bg-subtle);
  padding: var(--qt-view-chrome-pad-y, 5px) var(--qt-inset, 10px) 0 0;
}
.view-tabs__track {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0;
  min-height: 32px;
  box-sizing: border-box;
}
.view-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 32px;
  padding: 0 14px;
  margin: 0;
  border: 0;
  border-radius: var(--radius-md) var(--radius-md) 0 0;
  background: transparent;
  color: var(--color-text-secondary);
  font-size: var(--fs-body);
  font-weight: 400;
  line-height: 1;
  cursor: pointer;
  box-sizing: border-box;
  white-space: nowrap;
}
.view-tab--first {
  border-top-left-radius: 0;
}
.view-tab:hover:not(:disabled):not(.view-tab--active) {
  color: var(--color-text);
}
.view-tab--active {
  background: var(--color-bg);
  color: var(--color-primary);
  font-weight: 500;
}
.view-tab:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}
.view-tab__ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  color: inherit;
  line-height: 0;
}
.view-tab__ico svg {
  display: block;
  width: 14px;
  height: 14px;
}
.view-tab__label {
  display: inline-block;
}
.view-tab--divider-after {
  position: relative;
  margin-right: 8px;
  padding-right: 16px;
}
.view-tab--divider-after::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 1px;
  height: 14px;
  background: var(--color-divider);
  pointer-events: none;
}
.qt-query-chrome > .table-bar.filter-bar,
.qt-query-chrome > .table-bar.has-filter-bar {
  padding: var(--space-3) var(--qt-inset, 10px);
  background: var(--color-bg);
  box-sizing: border-box;
}
.list-shell[data-query-table] {
  gap: 0;
}
.list-shell[data-query-table] > .qt-table-pane,
.list-shell[data-query-table] > .ui-empty {
  margin: 0;
  padding-left: var(--qt-inset, 10px);
  padding-right: var(--qt-inset, 10px);
  box-sizing: border-box;
  flex: 1 1 auto;
  min-height: 0;
}
.list-shell[data-query-table] > .list-footer {
  padding: var(--qt-inset, 10px);
  box-sizing: border-box;
  align-items: center;
}
/* 市场分析无 qt-query-chrome：同标准列表页（产品管理 / 开发全流程），主区垫 space-3、内块不另垫 */
.ui-page:has(> .ui-opened-pages) > .ui-page-main:has([data-query-table="mkt-target"]),
.ui-page:has(> .ui-page-top) > .ui-page-main:has([data-query-table="mkt-target"]) {
  padding: var(--space-3);
}
.list-shell[data-query-table="mkt-target"] > .qt-table-pane,
.list-shell[data-query-table="mkt-target"] > .ui-empty,
.list-shell[data-query-table="mkt-target"] > .list-footer {
  padding: 0;
}
.list-shell[data-query-table="mkt-target"] > .table-bar.filter-bar {
  margin-bottom: var(--space-3);
}
.table-bar--view {
  align-items: center;
  gap: var(--space-2);
  min-height: 32px;
  padding: 0;
}
.table-bar-left { flex: 1; min-width: 0; }
.table-bar-left--status {
  display: inline-flex;
  align-items: center;
  min-height: var(--control-h-md);
  color: var(--color-text-secondary);
  font-size: var(--fs-body);
  line-height: var(--lh-tight);
}
/* 筛栏：筛项与按键同一 wrap 流；超出则一起换行，按键落在行末靠右 */
.table-bar.filter-bar > .table-bar-left.filter-fields,
.table-bar.has-filter-bar > .table-bar-left.filter-fields,
.table-bar.filter-bar > .table-bar-left:not(.filter-fields):not(.table-bar-left--status):has(> .filter-fields),
.table-bar.has-filter-bar > .table-bar-left:not(.filter-fields):not(.table-bar-left--status):has(> .filter-fields),
.table-bar.filter-bar > .table-bar-left:not(.filter-fields):not(.table-bar-left--status) > .filter-fields,
.table-bar.has-filter-bar > .table-bar-left:not(.filter-fields):not(.table-bar-left--status) > .filter-fields {
  display: contents;
}
.table-bar-right {
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-2);
  min-height: var(--control-h-md);
}
.table-bar.filter-bar > .table-bar-right,
.table-bar.has-filter-bar > .table-bar-right {
  flex: 1 1 auto;
  justify-content: flex-end;
  min-width: max-content;
  margin-left: 0;
  align-self: auto;
}
/* 右侧：文案操作（筛选/重置）+ 图标工具簇；工具簇左分隔 */
.table-bar-tools {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  margin-left: var(--space-1);
  padding-left: var(--space-3);
  border-left: 1px solid var(--color-divider);
  min-height: var(--control-h-md);
}
.table-bar-tools .ui-btn.ui-btn-icon {
  width: var(--control-h-md);
  min-width: var(--control-h-md);
  height: var(--control-h-md);
  padding: 0;
}
.table-bar-tools .qt-tool-ico {
  display: block;
  flex-shrink: 0;
}
.table-bar-title {
  display: inline-flex;
  align-items: center;
  min-height: var(--control-h-md);
  font-size: var(--fs-body);
  font-weight: 600;
}
/* table-bar：筛项与按键同一 wrap 流；禁止展开/extra 隔线 */
.table-bar.has-filter-bar {
  border: 0;
  padding: 0;
  border-radius: 0;
  box-sizing: border-box;
  background: transparent;
  align-items: center;
}
/* 筛栏控件统一高 36（--control-h-filter）；局部覆盖，不改全局 40/48 */
.table-bar.filter-bar,
.table-bar.has-filter-bar {
  --control-h-md: var(--control-h-filter);
  --control-h-sm: var(--control-h-filter);
  --control-h-lg: var(--control-h-filter);
  --btn-h: var(--control-h-filter);
  --btn-h-sm: var(--control-h-filter);
  --ui-select-h: var(--control-h-filter);
  --ui-suggest-h: var(--control-h-filter);
  --ui-date-h: var(--control-h-filter);
}
.table-bar.filter-bar .ui-btn:not(.ui-btn-link),
.table-bar.has-filter-bar .ui-btn:not(.ui-btn-link),
.table-bar.filter-bar input.ui-input,
.table-bar.has-filter-bar input.ui-input,
.table-bar.filter-bar input.wide,
.table-bar.has-filter-bar input.wide,
.table-bar.filter-bar .ui-suggest-input,
.table-bar.has-filter-bar .ui-suggest-input,
.table-bar.filter-bar select.ui-input,
.table-bar.has-filter-bar select.ui-input,
.table-bar.filter-bar .ui-select-trigger,
.table-bar.has-filter-bar .ui-select-trigger,
.table-bar.filter-bar .ui-date-trigger,
.table-bar.has-filter-bar .ui-date-trigger,
.table-bar.filter-bar .page-segment button,
.table-bar.has-filter-bar .page-segment button {
  height: var(--control-h-filter);
  min-height: var(--control-h-filter);
  box-sizing: border-box;
}
.table-bar.filter-bar .table-bar-tools .ui-btn.ui-btn-icon,
.table-bar.has-filter-bar .table-bar-tools .ui-btn.ui-btn-icon {
  width: var(--control-h-filter);
  min-width: var(--control-h-filter);
  height: var(--control-h-filter);
}

/* 3.2.3 主子多维表：筛选面板（U9 自定义 Select；工具栏密度 --control-h-filter / 宽≥108） */
.wj-bitable-filter-dropdown {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.wj-bitable-filter-menu {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  /* 高于 .wj-bitable-fill-handle(10000)，避免填充柄盖在筛选面板上穿模 */
  z-index: 10050;
  min-width: 36rem;
  max-width: min(52rem, 96vw);
  max-height: min(70vh, 32rem);
  overflow: hidden;
  padding: var(--space-3);
  box-sizing: border-box;
  list-style: none;
  margin: 0;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
}
.wj-bitable-filter-dropdown.is-open > .wj-bitable-filter-menu:not([hidden]) {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  align-items: stretch;
}
.wj-bitable-filter-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
}
.wj-bitable-filter-logic {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
}
.wj-bitable-filter-logic-label {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  flex: 0 0 auto;
}
.wj-bitable-filter-logic-seg.page-segment {
  flex: 0 1 auto;
  min-width: 0;
  height: var(--control-h-filter);
}
.wj-bitable-filter-logic-seg.page-segment button {
  height: 100%;
  min-height: 0;
  padding: 0 var(--space-3);
  font-size: var(--fs-body);
}
.wj-bitable-filter-rows {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  min-width: 0;
}
.wj-bitable-filter-row {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
  max-width: 100%;
}
.wj-bitable-filter-and {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  min-width: 1.5em;
  flex: 0 0 auto;
}
.wj-bitable-filter-value {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex: 1 1 auto;
  min-width: 0;
}
.wj-bitable-filter-menu .ui-select,
.wj-bitable-filter-menu .ui-select.ui-select-sm {
  --ui-select-h: var(--control-h-filter);
  flex: 0 1 auto;
  width: auto;
  min-width: 0;
  max-width: 14rem;
}
.wj-bitable-filter-menu .ui-select-trigger {
  height: var(--control-h-filter);
  font-size: var(--fs-body);
}
.wj-bitable-filter-menu .wj-bitable-filter-value .ui-input,
.wj-bitable-filter-menu .wj-bitable-filter-value .ui-date,
.wj-bitable-filter-menu .wj-bitable-filter-value .ui-select {
  --ui-select-h: var(--control-h-filter);
  flex: 1 1 auto;
  width: 100%;
  min-width: 0;
  max-width: none;
  height: var(--control-h-filter);
  box-sizing: border-box;
}
.wj-bitable-filter-row > .ui-btn {
  flex: 0 0 auto;
  width: var(--control-h-filter);
  height: var(--control-h-filter);
  padding: 0;
}
.wj-bitable-filter-value input[type="date"] {
  min-width: 0;
}
.wj-bitable-filter-body > .ui-btn[data-wj-filter-add] {
  align-self: flex-start;
  height: var(--control-h-filter);
  padding: 0 var(--space-3);
  font-size: var(--fs-body);
}
.wj-bitable-filter-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-2);
  flex: 0 0 auto;
  padding-top: var(--space-2);
  border-top: 1px solid var(--color-border);
}
.wj-bitable-filter-actions .ui-btn {
  height: var(--control-h-filter);
  padding: 0 var(--space-4);
  font-size: var(--fs-body);
}
/*
 * 筛选面板 z-index 10050（压过填充柄）。U9 Select/Date/Suggest 挂到 body 后默认 80，
 * 会整层压在面板下，看起来像被底边裁切。打开时须高于筛选面板。
 */
body > .ui-select-menu,
body > .ui-date-panel,
body > .ui-suggest-menu,
body > .ui-dropdown-menu {
  z-index: 10100;
}
.list-footer__serial-jump {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
}
.list-footer__serial-jump-label {
  font-size: var(--fs-sm);
  color: var(--color-text-secondary);
}
.list-footer__serial-jump input.ui-input {
  width: 4.5rem;
  min-width: 4.5rem;
  text-align: center;
}
/* 筛字段（V10 + V9）：须压过 base `.ui form { display:block }`（form.filter-fields） */
.filter-fields,
.ui form.filter-fields,
form.filter-fields {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  column-gap: var(--space-3);
  row-gap: var(--space-3);
  width: auto;
  max-width: 100%;
  min-width: 0;
  overflow: visible;
  box-sizing: border-box;
  margin: 0;
}
.filter-fields > .field,
.filter-fields > .page-segment,
.filter-fields > .ui-btn,
.filter-fields > .ui-select,
.filter-fields > .ui-suggest {
  flex: 0 0 auto;
  width: max-content;
  max-width: none;
  min-width: max-content;
  margin: 0;
}
.filter-fields .field input.wide,
.filter-fields input.wide,
.filter-fields .field .ui-suggest.ui-suggest--wide {
  width: 160px;
  max-width: none;
  flex-shrink: 0;
  box-sizing: border-box;
}
.filter-fields .field > input:not(.wide):not([type="checkbox"]):not([type="radio"]),
.filter-fields .field > select,
.filter-fields .field > .ui-select,
.filter-fields .field > .ui-suggest:not(.ui-suggest--wide),
.filter-fields > .ui-select {
  width: max-content;
  min-width: 108px;
  max-width: none;
  flex: 0 0 auto;
  flex-shrink: 0;
  box-sizing: border-box;
}
.filter-fields .field .ui-select-trigger {
  width: auto;
  min-width: 108px;
}
.filter-fields .field .ui-select-value {
  flex: 0 0 auto;
  overflow: visible;
  text-overflow: clip;
  max-width: none;
}
/* 日期区间：一组控件，不拆成两个 field */
.field.field--range {
  align-items: center;
}
.field.field--date-range {
  align-items: center;
  flex: 0 0 auto;
}
/* 多维表格：SKU/ASIN/品名合框 + 模糊勾选 */
.qt-multi-paste {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  flex: 0 0 auto;
  min-width: 0;
}
/* 维度下拉 + 输入：一块控件（压过 .ui-select width:100%） */
.qt-multi-paste__combo {
  display: inline-flex;
  align-items: stretch;
  gap: 0;
  flex: 0 0 auto;
  width: auto;
  max-width: 100%;
  min-width: 0;
  height: var(--control-h-filter);
  min-height: var(--control-h-filter);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  box-sizing: border-box;
  overflow: visible;
}
.qt-multi-paste__combo:focus-within {
  border-color: var(--color-primary);
}
.qt-multi-paste__combo > .ui-select,
.qt-multi-paste__combo > .ui-select.qt-multi-paste__dim {
  display: block;
  width: auto !important;
  min-width: 72px;
  max-width: 108px;
  flex: 0 0 auto;
  margin: 0;
  --ui-select-h: var(--control-h-filter);
}
.filter-fields .qt-multi-paste__combo > .ui-select,
.filter-fields .qt-multi-paste__combo .ui-select-trigger {
  min-width: 72px;
  max-width: 108px;
  width: auto;
}
.qt-multi-paste__combo .ui-select-trigger {
  height: 100%;
  min-height: calc(var(--control-h-filter) - 2px);
  border: 0;
  border-radius: 0;
  border-right: 1px solid var(--color-border);
  box-shadow: none;
  background: transparent;
  padding-left: 10px;
  padding-right: 28px;
  box-sizing: border-box;
}
.qt-multi-paste__combo .ui-select.is-open .ui-select-trigger,
.qt-multi-paste__combo .ui-select-trigger:hover:not(:disabled),
.qt-multi-paste__combo .ui-select-trigger:focus-visible {
  border-color: var(--color-border);
  border-right-color: var(--color-border);
  box-shadow: none;
}
.qt-multi-paste__combo .qt-multi-paste__ctl {
  margin: 0;
  flex: 1 1 auto;
  min-width: 0;
  align-self: stretch;
}
.qt-multi-paste__combo .qt-multi-paste__input.ui-input {
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  outline: none;
  background: transparent;
  height: 100%;
  min-height: calc(var(--control-h-filter) - 2px);
}
.qt-multi-paste__input.ui-input {
  width: 280px;
  min-width: 220px;
  max-width: 360px;
  height: var(--control-h-filter);
  min-height: var(--control-h-filter);
  padding: 6px 12px;
  resize: none;
  line-height: 1.3;
  box-sizing: border-box;
}
.qt-multi-paste__fuzzy {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--fs-caption);
  color: var(--color-text);
  white-space: nowrap;
  user-select: none;
  margin: 0;
  cursor: pointer;
}
.qt-multi-paste__fuzzy input {
  margin: 0;
  flex-shrink: 0;
}
.table-bar.filter-bar .qt-multi-paste__input.ui-input,
.table-bar.has-filter-bar .qt-multi-paste__input.ui-input {
  height: var(--control-h-filter);
  min-height: var(--control-h-filter);
}
.table-bar.filter-bar .qt-multi-paste__combo .qt-multi-paste__input.ui-input,
.table-bar.has-filter-bar .qt-multi-paste__combo .qt-multi-paste__input.ui-input {
  height: 100%;
  min-height: calc(var(--control-h-filter) - 2px);
}
.qt-multi-paste--bulk .qt-multi-paste__input.ui-input {
  padding-right: 56px;
}
.qt-multi-paste__clear-btn {
  position: absolute;
  right: 30px;
  top: 50%;
  transform: translateY(-50%);
  display: none;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--color-text-tertiary);
  cursor: pointer;
  line-height: 1;
}
.qt-multi-paste__clear-btn:hover {
  color: var(--color-text-secondary);
}
.qt-multi-paste__ctl.is-focused .qt-multi-paste__clear-btn.is-visible {
  display: inline-flex;
}
.ui-date-range-field {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: var(--control-h-filter);
  min-height: var(--control-h-filter);
  min-width: 248px;
  max-width: 280px;
  padding: 0 12px;
  margin: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  color: var(--color-text);
  font: inherit;
  font-size: var(--fs-body);
  line-height: 1;
  cursor: pointer;
  box-sizing: border-box;
  white-space: nowrap;
}
.ui-date-range-field:hover:not(:disabled) {
  border-color: var(--color-border-hover);
}
.ui-date-range-field:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}
.ui-date-range-field.is-open,
.ui-date-range-field:focus-visible {
  border-color: var(--color-primary);
  box-shadow: var(--shadow-focus);
  outline: none;
}
.ui-date-range-field__ico {
  flex-shrink: 0;
  color: var(--color-text-tertiary);
}
.ui-date-range-field__text {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
  color: var(--color-text);
}
.ui-date-range-field__text.is-placeholder {
  color: var(--color-text-tertiary);
}
.field-range {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
}
/* 增强后原生 input 藏进 .ui-date；区间宽钉在触发器上 */
.field-range > .ui-date {
  flex: 0 0 auto;
  width: auto;
  min-width: 140px;
  max-width: 168px;
}
.field-range > .ui-date .ui-date-trigger {
  min-width: 140px;
}
.field > .ui-date {
  flex: 0 0 auto;
  width: auto;
  min-width: 140px;
}
.field > .ui-date:has(.ui-date-native[type="datetime-local"]) {
  min-width: 196px;
}
.field > .ui-date:has(.ui-date-native[type="datetime-local"]) .ui-date-trigger {
  min-width: 196px;
}
.field-sep {
  color: var(--color-text-tertiary);
  flex-shrink: 0;
  line-height: 1;
}
.field {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: var(--space-2);
  flex: 0 0 auto;
  flex-shrink: 0;
  width: max-content;
  min-width: max-content;
  white-space: nowrap;
}
.field > .lbl {
  flex: 0 0 auto;
  flex-shrink: 0;
  color: var(--color-text-secondary);
  font-size: var(--fs-caption);
  line-height: var(--lh-tight);
  white-space: nowrap;
}
.field > input:not([type="checkbox"]):not([type="radio"]),
.field > .wide,
.ui-field input:not([type="radio"]):not([type="checkbox"]),
.ui-field select,
.ui-field textarea,
select.ui-combo,
select.ui-input,
input.wide {
  box-sizing: border-box;
  height: var(--control-h-md);
  padding: 0 var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  color: var(--color-text);
  font: inherit;
  font-size: var(--fs-body);
}
/* 工具栏搜索：钉死宽度，避免挤扁左侧分段/标题（对齐 Table Pro 筛字段 160） */
.field input.wide,
input.wide {
  width: 160px;
  max-width: 100%;
  flex-shrink: 0;
}
.field > input:not([type="checkbox"]):not([type="radio"]):focus,
.ui-field input:not([type="checkbox"]):not([type="radio"]):focus,
.ui-field textarea:focus,
select.ui-input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: var(--shadow-focus);
}

.table-scroll {
  flex: 1 1 auto;
  min-height: 0;
  border: 1px solid var(--color-divider);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  overflow: auto;
  overscroll-behavior-x: none;
}

/* 页内说明：list-shell 内 Alert 顶满筛区宽，不额外缩进 */
.list-shell > .ui-alert {
  flex-shrink: 0;
}
.sys-plugin-help .ui-alert-content > .ui-alert-title {
  margin-top: var(--space-3);
}
.list-shell > .table-wrap {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
.list-shell > .table-wrap > .table-scroll {
  flex: 1 1 auto;
  min-height: 0;
}

table.data {
  border-collapse: separate;
  border-spacing: 0;
  width: max-content;
  min-width: 100%;
  font-size: var(--fs-body);
}
table.data th,
table.data td {
  box-sizing: border-box;
  height: var(--table-row-h);
  padding: 0 var(--space-3);
  border-bottom: 1px solid var(--color-divider);
  border-right: 1px solid var(--color-divider);
  white-space: nowrap;
  background: var(--color-bg);
  color: var(--color-text);
  min-width: 96px;
  line-height: var(--lh-tight);
  vertical-align: middle;
}
table.data th {
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--color-table-header);
  color: var(--color-text-secondary);
  font-size: var(--fs-caption);
  font-weight: 700;
}
/* 末行保留底边：表体未撑满时不因 base 的 last-child 去边而悬空 */
.ui table.data tbody tr:last-child td,
table.data tbody tr:last-child td {
  border-bottom: 1px solid var(--color-divider);
}
/* 表内空态（V11）：icon↑文案↓，单元格 xy 居中 */
table.data td.cell-empty {
  height: auto;
  min-height: 200px;
  padding: var(--space-8) var(--space-4);
  text-align: center;
  vertical-align: middle;
  background: var(--color-bg);
  border-right: 0;
}
.ui-table-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  width: 100%;
  min-height: 160px;
  margin: 0 auto;
  box-sizing: border-box;
  color: var(--color-text-secondary);
}
.ui-table-empty__icon,
.ui-table-empty > .ui-icon {
  flex-shrink: 0;
  font-size: 40px;
  width: 40px;
  height: 40px;
  line-height: 1;
  color: var(--color-text-tertiary);
}
.ui-table-empty__title {
  margin: 0;
  max-width: 28em;
  font-size: var(--fs-body);
  font-weight: 500;
  line-height: var(--lh-tight);
  color: var(--color-text-secondary);
}
.ui-table-empty__desc {
  margin: 0;
  max-width: 28em;
  font-size: var(--fs-caption);
  line-height: var(--lh-normal);
  color: var(--color-text-tertiary);
}
table.data th.sortable { cursor: pointer; user-select: none; }
table.data th.sortable:hover { color: var(--color-primary); }
table.data th .th-inner { display: inline-flex; align-items: center; gap: 4px; }
table.data th .sort {
  display: inline-flex;
  flex-direction: column;
  width: 10px;
  height: 14px;
  justify-content: center;
  gap: 1px;
  opacity: 0.35;
}
table.data th .sort i {
  display: block;
  width: 0;
  height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
}
table.data th .sort .up { border-bottom: 4px solid currentColor; }
table.data th .sort .down { border-top: 4px solid currentColor; }
table.data th.is-asc .sort,
table.data th.is-desc .sort { opacity: 1; color: var(--color-primary); }
table.data th.is-asc .sort .down { opacity: 0.25; }
table.data th.is-desc .sort .up { opacity: 0.25; }
table.data tbody tr:nth-child(even) td { background: var(--color-bg-subtle); }
table.data tbody tr:hover td { background: var(--color-table-hover); }
table.data tr.selected td { background: var(--color-table-selected); }
table.data td.cell-name-code .cell-name-code__name,
table.data td.cell-name-code .cell-name-code__code { display: block; }
table.data td.cell-name-code .cell-name-code__code {
  font-size: var(--fs-overline);
  line-height: 1.4;
  color: var(--color-primary);
}
table.data .fix-l { position: sticky; left: 0; z-index: 1; }
table.data th.fix-l { z-index: 6; background: var(--color-table-header); }
table.data .fix-r {
  position: sticky;
  right: 0;
  z-index: 1;
  text-align: center;
  background: var(--color-bg);
  box-shadow: -6px 0 12px rgba(0, 0, 0, 0.06);
}
table.data th.fix-r {
  z-index: 6;
  background: var(--color-table-header);
}
table.data tbody tr:nth-child(even) td.fix-r {
  background: var(--color-bg-subtle);
}
table.data tbody tr:hover td.fix-r {
  background: var(--color-table-hover);
}
table.data tr.selected td.fix-r {
  background: var(--color-table-selected);
}
table.data .xydc-pin-sel,
table.data .xydc-pin-act {
  position: sticky;
  z-index: 1;
  background: var(--color-bg);
}
table.data .xydc-pin-act {
  right: 0;
  text-align: center;
}
table.data .xydc-pin-sel {
  right: var(--xydc-act-w, 0);
  box-shadow: -6px 0 12px rgba(0, 0, 0, 0.06);
}
table.data th.xydc-pin-sel,
table.data th.xydc-pin-act {
  z-index: 6;
  background: var(--color-table-header);
}
table.data tbody tr:nth-child(even) td.xydc-pin-sel,
table.data tbody tr:nth-child(even) td.xydc-pin-act {
  background: var(--color-bg-subtle);
}
table.data tbody tr:hover td.xydc-pin-sel,
table.data tbody tr:hover td.xydc-pin-act {
  background: var(--color-table-hover);
}
table.data tr.selected td.xydc-pin-sel,
table.data tr.selected td.xydc-pin-act {
  background: var(--color-table-selected);
}
/* 列设置左固定列（data-pin-ix，left 由 JS 按列宽累计）：底色同 fix-r，末列右侧软阴影 */
table.data td.fix-l[data-pin-ix] {
  background: var(--color-bg);
}
table.data tbody tr:nth-child(even) td.fix-l[data-pin-ix] {
  background: var(--color-bg-subtle);
}
table.data tbody tr:hover td.fix-l[data-pin-ix] {
  background: var(--color-table-hover);
}
table.data tr.selected td.fix-l[data-pin-ix] {
  background: var(--color-table-selected);
}
table.data .fix-l-last[data-pin-ix] {
  box-shadow: 6px 0 12px rgba(0, 0, 0, 0.06);
}
.qt-col-set__row .ui-switch + .ui-switch,
.qt-col-set__status + .qt-col-set__status {
  margin-left: 0;
}
.qt-col-set__row--head,
.qt-col-set__row--head:hover {
  cursor: default;
  background: var(--color-bg);
}
.qt-col-set__row--head {
  min-height: 32px;
  font-size: var(--fs-caption);
  color: var(--color-text-tertiary);
}
.qt-col-set__row--head .qt-col-set__label {
  font-size: var(--fs-caption);
  color: inherit;
}
/* 操作列多链/按钮：横向留白（对齐 ui-cell-actions-inner gap）；列随内容收窄；文字居中 */
table.data th.cell-actions,
table.data td.cell-actions {
  white-space: nowrap;
  text-align: center;
  width: 1%;
}
table.data td.cell-actions {
  white-space: nowrap;
}
table.data td.cell-actions.fix-r {
  background: var(--color-bg);
  box-shadow: -6px 0 12px rgba(0, 0, 0, 0.06);
  text-align: center;
}
table.data th.cell-actions.fix-r {
  text-align: center;
}
table.data td.cell-actions .ui-cell-actions-inner {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
}
table.data tbody tr:nth-child(even) td.cell-actions.fix-r {
  background: var(--color-bg-subtle);
}
table.data tbody tr:hover td.cell-actions.fix-r {
  background: var(--color-table-hover);
}
table.data tr.selected td.cell-actions.fix-r {
  background: var(--color-table-selected);
}
table.data td.cell-actions > * + * {
  margin-left: var(--space-2);
}
table.data tfoot td {
  position: sticky;
  bottom: 0;
  z-index: 4;
  background: var(--color-bg-page);
  border-top: 1px solid var(--color-border);
  font-size: var(--fs-caption);
  font-weight: 500;
}
table.data tfoot td.stats-label { color: var(--color-primary); font-weight: 700; text-align: center; }
table.data th.col-check,
table.data td.col-check {
  width: 36px;
  min-width: 36px;
  max-width: 36px;
  text-align: center;
  padding: 0 var(--space-2);
}
table.data .col-check input[type="checkbox"] {
  width: 16px;
  height: 16px;
}
table.data th.ui-cell-check,
table.data td.ui-cell-check {
  width: 40px;
  min-width: 40px;
  max-width: 40px;
  padding: 0;
  text-align: center;
}
table.data .ui-cell-check .ui-check input {
  width: 16px;
  height: 16px;
  accent-color: var(--color-text);
}

/* 2.7.3.1 产品管理编辑抽屉：左主区 + 右附件栏（排布同全流程项目抽屉） */
.pm-notice {
  margin-bottom: var(--space-4);
}
.pm-drawer-body {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  min-width: 0;
}
.pm-drawer-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.pm-drawer-side {
  flex: none;
  width: 240px;
  min-width: 0;
  position: sticky;
  top: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.pm-drawer-side .ui-drawer-panel {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin: 0;
}
.pm-drawer-side .ui-drawer-panel-title {
  margin: 0;
}
.pm-hero {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  min-width: 0;
}
.pm-hero-img {
  flex: none;
  width: 64px;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg-subtle);
  color: var(--color-text-tertiary);
}
.pm-hero-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.pm-hero-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.pm-hero-title {
  margin: 0;
  font-size: var(--fs-body);
  font-weight: 600;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pm-hero-head {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
}
.pm-hero-head .pm-hero-title {
  flex: 1;
  min-width: 0;
}
.pm-hero-state {
  flex: none;
  width: 160px;
}
.pm-hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-4);
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  font-variant-numeric: tabular-nums;
}
.pm-hero-k {
  margin-right: var(--space-1);
  color: var(--color-text-tertiary);
}
.pm-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
  align-items: start;
}
.pm-grid .ui-field {
  margin: 0;
}
.pm-grid .ui-field .ui-label {
  margin-bottom: var(--space-1);
}
.pm-span2 {
  grid-column: span 2;
}
.pm-span3 {
  grid-column: span 3;
}
.pm-span4 {
  grid-column: 1 / -1;
}
.pm-dims {
  display: flex;
  gap: var(--space-2);
}
.pm-dims .ui-input {
  flex: 1;
  min-width: 0;
}
.pm-kv {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-2) var(--space-3);
  margin: 0;
}
.pm-kv-item {
  min-width: 0;
}
.pm-kv dt {
  margin: 0;
  font-size: var(--fs-caption);
  color: var(--color-text-tertiary);
}
.pm-kv dd {
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--color-text);
}
.pm-kv dd.is-num {
  font-weight: 600;
  color: var(--color-numeric);
  font-variant-numeric: tabular-nums;
}
.pm-grid + .pm-kv {
  margin-top: var(--space-4);
}
.pm-kv[hidden] {
  display: none;
}
.pm-ms.ui-select {
  display: block;
  width: 100%;
}
.pm-ms .ui-select-trigger {
  width: 100%;
}
.pm-ms .ui-select-value {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pm-ms-menu .ui-select-option {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.pm-ms-menu .ui-select-option .ui-check {
  margin: 0;
  pointer-events: none;
}
.pm-ms-search {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: var(--space-1) var(--space-1) var(--space-2);
  list-style: none;
  background: var(--color-bg);
}
.pm-ms-search .ui-input {
  width: 100%;
}
.pm-ls {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2);
  margin: 0;
}
.pm-ls > [data-pm-ls-body] {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  align-self: stretch;
}
.pm-ls-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr)) minmax(0, 1fr) repeat(2, minmax(0, 1.2fr)) minmax(0, 1.2fr) auto;
  gap: var(--space-2);
  align-items: center;
  align-self: stretch;
}
.pm-ls-head {
  font-size: var(--fs-caption);
  color: var(--color-text-tertiary);
}
.pm-file {
  margin: 0;
}
.pm-file .ui-label {
  margin-bottom: var(--space-1);
}
.pm-upload .ui-upload-drop {
  padding: var(--space-3);
}
.pm-upload .ui-upload-file-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pm-file-acts {
  display: inline-flex;
  flex: none;
  gap: var(--space-2);
}
.pm-file.is-busy .ui-upload {
  opacity: 0.6;
  pointer-events: none;
}
table.data th.col-index,
table.data td.col-index { width: 56px; min-width: 56px; max-width: 56px; }
table.data.table-cols { table-layout: fixed; width: auto; }
table.data.table-cols th,
table.data.table-cols td { min-width: 0; }
/* sticky 表头须保留；relative 会盖掉 sticky。sticky 同样可作 col-resizer 定位参照 */
table.data.table-cols th {
  position: sticky;
  top: 0;
  z-index: 5;
  overflow: visible;
}
table.data.table-cols th .th-inner,
table.data.table-cols td {
  overflow: hidden;
  text-overflow: ellipsis;
}
table.data .col-resizer {
  position: absolute;
  top: 0;
  right: -3px;
  z-index: 5;
  width: 8px;
  height: 100%;
  cursor: col-resize;
}
body.qt-col-resizing {
  cursor: col-resize !important;
  user-select: none !important;
}
body.qt-col-resizing * {
  cursor: col-resize !important;
}

.list-footer {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-3);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  font-size: var(--fs-body);
  color: var(--color-text-secondary);
  flex-shrink: 0;
  box-sizing: border-box;
}
.list-footer .spacer { flex: 1; min-width: var(--space-2); }
.list-footer__nav {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-left: auto;
}
/* 多维表格类型壳底栏：与筛栏同档 36，压缩翻页占位 */
.list-shell[data-query-table] .list-footer,
[data-query-table] .list-footer {
  --control-h-md: var(--control-h-filter);
  --control-h-sm: var(--control-h-filter);
  --btn-h: var(--control-h-filter);
  --ui-select-h: var(--control-h-filter);
  gap: var(--space-2);
}
.list-shell[data-query-table] .list-footer .pager,
[data-query-table] .list-footer .pager {
  gap: var(--space-1);
}
.list-shell[data-query-table] .list-footer .pager button,
.list-shell[data-query-table] .list-footer .pager .ui-page-btn,
[data-query-table] .list-footer .pager button,
[data-query-table] .list-footer .pager .ui-page-btn {
  height: var(--control-h-filter);
  min-height: var(--control-h-filter);
  min-width: var(--control-h-filter);
  box-sizing: border-box;
}
.list-shell[data-query-table] .list-footer .ui-table-pagesize,
.list-shell[data-query-table] .list-footer select.ui-input.ui-table-pagesize,
[data-query-table] .list-footer .ui-table-pagesize,
[data-query-table] .list-footer select.ui-input.ui-table-pagesize {
  height: var(--control-h-filter);
  min-height: var(--control-h-filter);
}
/* 页码：对齐 ui-pagination / ui-page-btn（壳外仍 control-md 40） */
.pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-body);
  color: var(--color-text-secondary);
}
.pager button,
.pager .ui-page-btn {
  appearance: none;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--control-h-md);
  height: var(--control-h-md);
  padding: 0 var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  color: var(--color-text);
  font-family: inherit;
  font-size: var(--fs-body);
  font-weight: var(--fw-regular, 400);
  line-height: 1;
  cursor: pointer;
}
.pager button:hover:not(:disabled):not(.on):not(.is-active),
.pager .ui-page-btn:hover:not(:disabled):not(.on):not(.is-active) {
  border-color: var(--color-primary);
  color: var(--color-primary);
}
.pager button.on,
.pager button.is-active,
.pager .ui-page-btn.on,
.pager .ui-page-btn.is-active {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
  font-weight: var(--fw-medium, 500);
}
.pager button:disabled,
.pager .ui-page-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.pager button:focus-visible,
.pager .ui-page-btn:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus);
}
.pager button .ui-icon,
.pager .ui-page-btn .ui-icon {
  font-size: 18px;
  line-height: 1;
  pointer-events: none;
}
.pager-ellipsis {
  min-width: var(--control-h-md);
  height: var(--control-h-md);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fs-body);
  color: var(--color-text-tertiary);
}
.pager-status {
  display: inline-flex;
  align-items: center;
  height: var(--control-h-md);
  padding: 0 var(--space-2);
  font-size: var(--fs-body);
  color: var(--color-text-secondary);
  white-space: nowrap;
}
/* 每页条数：与页码同高 control-md；禁止 ui-input-sm */
.pager-size {
  display: inline-flex;
  align-items: center;
}
.pager-size .ui-combo,
.pager-size .ui-input,
.pager-size .ui-select,
.pager-size select {
  width: auto;
  min-width: 96px;
  height: var(--control-h-md);
  font-size: var(--fs-body);
  box-sizing: border-box;
}
.pager-size .ui-select {
  --ui-select-h: var(--control-h-md);
}

.page-segment {
  display: inline-flex;
  align-items: stretch;
  flex-shrink: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--color-bg-subtle);
  box-sizing: border-box;
  margin: 0;
}
.page-segment button {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0 var(--space-4);
  height: var(--control-h-md);
  font: inherit;
  font-size: var(--fs-body);
  color: var(--color-text-secondary);
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
}
.page-segment button.on {
  background: var(--color-bg);
  color: var(--color-primary);
  font-weight: 600;
  box-shadow: var(--shadow-sm);
}

.cell-int, .cell-decimal, .cell-money, .cell-rate {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-bold);
  color: var(--color-numeric, var(--color-brand-60, #2f5bb8));
}
.cell-money.is-neg, .cell-int.is-neg, .cell-decimal.is-neg, .cell-rate.is-neg {
  color: var(--color-danger);
}
.cell-rate.is-pick-up { color: var(--color-success); }
.cell-rate.is-pick-down { color: var(--color-danger); }
.cell-clip { white-space: nowrap; }
.cell-clip[data-clip-full] { cursor: pointer; }
.cell-code { font-family: var(--font-mono); font-size: var(--fs-caption); }
.cell-thumb__img { width: 32px; height: 32px; object-fit: contain; display: block; }
.cell-user__inner {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
}
.cell-user__avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border-radius: var(--radius-pill);
  background: var(--color-primary-soft);
  color: var(--color-primary);
  font-size: var(--fs-caption);
}
.cell-user__name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ui-dropdown { position: relative; display: inline-flex; }
.ui-dropdown-trigger {
  height: auto;
  min-height: 0;
  padding: 0 4px;
  border: none;
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
  font: inherit;
}
/* 操作列「更多」与同列 a.link 一致：主色蓝字；语义态见 V18 */
table.data td.cell-actions .ui-dropdown-trigger {
  color: var(--color-primary);
  font-weight: 500;
  padding: 0;
}
table.data td.cell-actions .ui-dropdown-trigger:hover:not(:disabled):not(.is-disabled) {
  text-decoration: underline;
}
table.data td.cell-actions a.link,
table.data td.cell-actions a.ui-link,
table.data td.cell-actions .ui-btn-link {
  color: var(--color-primary);
  font-weight: 500;
}
table.data td.cell-actions a.link.is-danger,
table.data td.cell-actions a.link--danger,
table.data td.cell-actions a.is-danger,
table.data td.cell-actions .ui-btn-link.is-danger {
  color: var(--color-danger);
}
table.data td.cell-actions a.link.is-success,
table.data td.cell-actions a.link--ok,
table.data td.cell-actions .ui-btn-link.is-success {
  color: var(--color-success);
}
table.data td.cell-actions a.link.is-warning,
table.data td.cell-actions .ui-btn-link.is-warning {
  color: var(--color-warning);
}
table.data td.cell-actions a.link.is-disabled,
table.data td.cell-actions a[aria-disabled="true"],
table.data td.cell-actions .ui-btn-link:disabled,
table.data td.cell-actions .ui-btn-link.is-disabled {
  color: var(--color-text-disabled);
  cursor: not-allowed;
  text-decoration: none;
  pointer-events: none;
}
/* 业务下拉：默认靠 hidden；is-open 仅给账户菜单兜底（未走 portal） */
.ui-dropdown-menu {
  z-index: 50;
  min-width: 120px;
}
.ui-dropdown-menu.is-portal,
body > .ui-dropdown-menu {
  z-index: 1600;
}
.ui-dropdown.is-open > .ui-dropdown-menu:not([hidden]) { display: block; }
.ui-dropdown.is-drop-up > .ui-dropdown-menu {
  top: auto;
  bottom: calc(100% + 4px);
}
.account-menu.ui-dropdown > .ui-dropdown-menu {
  right: 0;
  left: auto;
}

.ui-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 200px;
  padding: var(--space-6) var(--space-4);
  text-align: center;
}
.ui-empty-title { margin: 0; font-size: var(--fs-subtitle); font-weight: 600; }
.ui-empty-desc { margin: 0; max-width: 360px; font-size: var(--fs-caption); color: var(--color-text-secondary); }

.ui-field { margin-bottom: var(--space-4); }
.ui-field:last-child { margin-bottom: 0; }
.ui-field > .ui-label,
.ui-field > label:not(.ui-radio):not(.ui-check) {
  display: block;
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  margin-bottom: 4px;
}
.ui-field label .req { color: var(--color-danger); }
.ui-field input:not([type="radio"]):not([type="checkbox"]),
.ui-field select,
.ui-field textarea { width: 100%; }
.ui-field textarea { height: 56px; padding: var(--space-2); resize: vertical; }
.form-page { padding: var(--space-3) 0 0; overflow-y: auto; }
.form-page .ui-field input,
.form-page .ui-field select { width: 360px; max-width: 100%; }
.form-page__hint { margin-top: 4px; font-size: var(--fs-caption); color: var(--color-text-secondary); }
.form-page__foot { display: flex; gap: var(--space-2); margin-top: var(--space-4); }
.page-segment.system-setting-tabs { align-self: flex-start; }

select.ui-combo,
select.ui-input { min-width: 108px; appearance: none; background-image: none; }
select.ui-select-native { position: absolute !important; width: 1px !important; height: 1px !important; opacity: 0; pointer-events: none; }

/* 下拉面板须高于 drawer（210）；dialog 内另由 uiguide 挂进 dialog top-layer */
.ui-select-menu,
.ui-date-panel,
.ui-dropdown-menu.is-portal,
body > .ui-dropdown-menu {
  z-index: 1600;
}

/* Dialog / Drawer — 业务尺寸修饰；开合动画走规范 dialog/drawer，勿再叠 .show */
dialog.ui-dialog.ui-dialog--form {
  max-width: min(560px, calc(100% - 32px));
}
/* 2.4.8.6 下发/统计通知：弹层吃满可用高度，表单区可滚，底栏贴底 */
dialog.ui-dialog.ui-dialog--dispatch {
  max-width: min(520px, calc(100% - 32px));
  width: min(520px, calc(100% - 32px));
  height: min(86vh, 720px);
  max-height: min(86vh, 720px);
  box-sizing: border-box;
}
dialog.ui-dialog.ui-dialog--dispatch[open] {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
dialog.ui-dialog.ui-dialog--dispatch > .ui-dialog-header,
dialog.ui-dialog.ui-dialog--dispatch > .ui-dialog-footer {
  flex: 0 0 auto;
}
dialog.ui-dialog.ui-dialog--dispatch > .ui-dialog-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
}
dialog.ui-dialog.ui-dialog--dispatch > .ui-dialog-footer {
  margin-top: auto;
}
/* 脚本管理：生成/展示注册码 — 加高且禁止滚动条
   注意：body 若仅设 overflow-x:hidden，按 CSS 规范 overflow-y 会变成 auto，必出竖滚条 */
dialog.ui-dialog.ui-dialog--repo-code {
  max-width: min(560px, calc(100% - 32px));
  width: min(560px, calc(100% - 32px));
  min-height: 360px;
  box-sizing: border-box;
}
dialog.ui-dialog.ui-dialog--repo-code > .ui-dialog-body {
  max-height: none !important;
  overflow: visible !important;
  overflow-x: visible !important;
  overflow-y: visible !important;
}
.sc-repo-code-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
}
.sc-repo-code-row code {
  flex: 1 1 auto;
  min-width: 0;
  display: block;
  word-break: break-all;
  user-select: all;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  background: var(--color-bg-muted);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: var(--fs-body);
}
.sc-repo-code-row .ui-btn-icon.is-copied {
  color: var(--color-success, #0f766e);
}
dialog.ui-dialog.ui-dialog--lg {
  max-width: min(880px, calc(100% - 32px));
}
/* 2.4.8.6 定时规则：列表态不让整块 body 滚动；仅 .table-scroll 在行多时滚。
   display:flex 必须挂在 [open]，否则 close 后仍被强制显示（原生 dialog 依赖 UA 的 display:none）。 */
dialog.ui-dialog.ui-dialog--xl {
  /* 第一层脚本列表：接近主区满幅 */
  max-width: calc(100vw - 48px);
  width: calc(100vw - 48px);
  max-height: calc(100vh - 48px);
  height: calc(100vh - 64px);
  box-sizing: border-box;
}
/* 第二层：该脚本规则列表，略小露出底层（对齐产品标注约 78% 视口） */
dialog.ui-dialog.ui-dialog--sched-l2 {
  max-width: min(1120px, 78vw);
  width: min(1120px, 78vw);
  max-height: min(760px, 78vh);
  height: min(760px, 78vh);
  box-sizing: border-box;
}
/* 第三层：新建/编辑表单窄窗（对齐产品标注） */
dialog.ui-dialog.ui-dialog--sched-form {
  max-width: min(440px, 92vw);
  width: min(440px, 92vw);
  max-height: min(720px, 78vh);
  height: auto;
  box-sizing: border-box;
}
dialog.ui-dialog.ui-dialog--xl[open],
dialog.ui-dialog.ui-dialog--sched-l2[open],
dialog.ui-dialog.ui-dialog--sched-form[open] {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
dialog.ui-dialog.ui-dialog--xl > .ui-dialog-header,
dialog.ui-dialog.ui-dialog--xl > .ui-dialog-footer,
dialog.ui-dialog.ui-dialog--sched-l2 > .ui-dialog-header,
dialog.ui-dialog.ui-dialog--sched-l2 > .ui-dialog-footer,
dialog.ui-dialog.ui-dialog--sched-form > .ui-dialog-header,
dialog.ui-dialog.ui-dialog--sched-form > .ui-dialog-footer {
  flex: 0 0 auto;
}
dialog.ui-dialog.ui-dialog--sched-l2 > .ui-dialog-header {
  align-items: flex-start;
}
dialog.ui-dialog.ui-dialog--sched-l2 .auto-sched-rules-head {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding-right: var(--space-3);
}
dialog.ui-dialog.ui-dialog--sched-l2 .auto-sched-rules-sub {
  margin: 0;
  line-height: 1.4;
  word-break: break-all;
}
/* 规则列表：底栏不要关闭/新建（新建上移到筛选行） */
dialog.ui-dialog.ui-dialog--xl.is-sched-list > .ui-dialog-footer,
dialog.ui-dialog.ui-dialog--sched-l2.is-sched-list > .ui-dialog-footer {
  display: none;
}
dialog.ui-dialog.ui-dialog--xl > .ui-dialog-body,
dialog.ui-dialog.ui-dialog--sched-l2 > .ui-dialog-body {
  /* 压过全局 .ui-dialog-body 的 max-height + overflow:auto */
  max-height: none !important;
  overflow: hidden !important;
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
dialog.ui-dialog.ui-dialog--xl.is-sched-list > .ui-dialog-body > .table-bar,
dialog.ui-dialog.ui-dialog--xl.is-sched-list > .ui-dialog-body > .list-footer,
dialog.ui-dialog.ui-dialog--sched-l2.is-sched-list > .ui-dialog-body > .table-bar,
dialog.ui-dialog.ui-dialog--sched-l2.is-sched-list > .ui-dialog-body > .list-footer {
  flex: 0 0 auto;
}
/* 第二层规则列表较窄：右侧「新建」等勿 flex 撑满首行，否则「查询」会被挤到单独一行空半边 */
dialog.ui-dialog.ui-dialog--sched-l2 .table-bar.filter-bar > .table-bar-right,
dialog.ui-dialog.ui-dialog--sched-l2 .table-bar.has-filter-bar > .table-bar-right {
  flex: 0 0 auto;
}
dialog.ui-dialog.ui-dialog--xl.is-sched-list > .ui-dialog-body > .table-scroll,
dialog.ui-dialog.ui-dialog--sched-l2.is-sched-list > .ui-dialog-body > .table-scroll {
  flex: 1 1 auto;
  min-height: 280px;
  max-height: none;
  overflow: auto;
}
/* 弹层内空态略收一点，避免把 body 顶出滚动 */
dialog.ui-dialog.ui-dialog--xl.is-sched-list table.data td.cell-empty,
dialog.ui-dialog.ui-dialog--sched-l2.is-sched-list table.data td.cell-empty {
  min-height: 160px;
  padding: var(--space-6) var(--space-4);
}
dialog.ui-dialog.ui-dialog--xl.is-sched-list .ui-table-empty,
dialog.ui-dialog.ui-dialog--sched-l2.is-sched-list .ui-table-empty {
  min-height: 120px;
}
/* 新建/编辑步骤：表单可在 body 内滚动 */
dialog.ui-dialog.ui-dialog--xl.is-sched-form > .ui-dialog-body,
dialog.ui-dialog.ui-dialog--sched-form.is-sched-form > .ui-dialog-body,
dialog.ui-dialog.ui-dialog--sched-form > .ui-dialog-body {
  overflow: auto !important;
  display: block;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none !important;
}
dialog.ui-dialog.ui-dialog--image {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  overflow: hidden;
}
dialog.ui-dialog.ui-dialog--image::backdrop {
  background: rgba(0, 0, 0, 0.72);
}
.ui-dialog-body {
  max-height: min(70vh, 640px);
  overflow: auto;
}
/* 列设置：搜索/批量固定，仅列表滚（对齐 ui-guide .qt-col-set） */
.ui-dialog-body.qt-col-set {
  max-height: min(60vh, 480px);
  overflow: hidden;
}
.ui-drawer-actions { display: inline-flex; align-items: center; gap: var(--space-2); }

/* 2.4.8.6 任务详情抽屉：tab 固定，仅下方内容滚动 */
#autoTaskDrawerRoot > .ui-drawer-header {
  align-items: flex-start;
}
#autoTaskDrawerRoot .ui-drawer-sub {
  margin-top: var(--space-2);
}
#autoTaskDrawerRoot .ui-drawer-body {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-height: 0;
}
#autoTaskDrawerRoot .auto-task-drawer-tabs {
  flex-shrink: 0;
  margin-bottom: var(--space-4);
}
#autoTaskDrawerRoot .auto-task-drawer-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
#autoTaskDrawerRoot .auto-task-params-ro {
  pointer-events: none;
}
#autoTaskDrawerRoot .auto-task-log-toolbar {
  display: flex;
  justify-content: flex-end;
  margin-bottom: var(--space-3);
}
#autoTaskDrawerRoot .auto-task-execution-log {
  margin: 0;
  padding: var(--space-3);
  max-height: min(60vh, 480px);
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-word;
  font-family: var(--font-mono);
  font-size: var(--fs-caption);
  line-height: 1.5;
  background: var(--color-bg-subtle, var(--color-bg));
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  color: var(--color-text);
}
#autoTaskDrawerRoot .auto-task-result-summary {
  white-space: pre-wrap;
  word-break: break-word;
  line-height: 1.5;
}

/* 2.4.8.7 操作台运行详情：浅底正文块（禁 ui-pre 黑底） */
.auto-console-detail-text {
  margin: 0;
  padding: var(--space-3);
  max-height: min(40vh, 320px);
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-word;
  line-height: 1.5;
  font-size: var(--fs-body);
  color: var(--color-text);
  background: var(--color-bg-subtle, var(--color-bg));
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}

/* 2.4.8.6 任务状态：点+字同语义色（规范 badge 默认只染点） */
.auto-task-status.is-success {
  color: var(--color-success);
}
.auto-task-status.is-danger {
  color: var(--color-danger);
}
.auto-task-status.is-warning {
  color: var(--color-warning);
}
.auto-task-status.is-processing {
  color: var(--color-info);
}
.auto-task-status.is-muted {
  color: var(--color-text-tertiary);
}
.auto-task-status.is-muted .ui-badge-status-dot {
  background: var(--color-text-tertiary);
}

/* 2.4.8.6 运行统计（只读；与列表筛选解耦）
 * Operate polish：语义 soft 底 + 字重/数字色分层；禁顶条色块装饰 */
.auto-task-stats {
  margin-bottom: var(--space-5);
  padding: var(--space-4) var(--space-5);
  background: var(--color-bg);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  box-sizing: border-box;
}
.auto-task-stats__range {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  padding-bottom: var(--space-4);
  margin-bottom: var(--space-4);
  border-bottom: 1px solid var(--color-divider);
}
.auto-task-stats__label {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  font-weight: var(--fw-medium);
  letter-spacing: 0.02em;
}
.auto-task-stats__actions {
  margin-left: auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
}
.auto-task-stats__last {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  font-weight: var(--fw-medium);
  max-width: min(360px, 42vw);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.auto-task-stats__last.is-off,
.ui-field-hint.auto-task-stats__last.is-off {
  color: var(--color-text-tertiary);
}
.auto-task-stats__last.is-success,
.ui-field-hint.auto-task-stats__last.is-success {
  color: var(--color-success);
}
.auto-task-stats__last.is-danger,
.ui-field-hint.auto-task-stats__last.is-danger {
  color: var(--color-danger);
}
.auto-task-stats-notify-time {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-2);
}
.auto-task-stats-notify-time > .ui-select {
  width: auto;
  flex: 1 1 0;
  min-width: 0;
}
.auto-task-stats-notify-time__sep {
  flex: 0 0 auto;
  color: var(--color-text-secondary);
  font-weight: var(--fw-medium);
}
.auto-task-stats__grid {
  margin: 0;
}
.auto-task-stat {
  position: relative;
  overflow: hidden;
  box-sizing: border-box;
}
.auto-task-stat .ui-stat-title {
  margin-bottom: var(--space-2);
}
.auto-task-stat .ui-stat-value {
  font-size: 28px;
  font-weight: var(--fw-bold);
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.auto-task-stat--total {
  background: var(--color-primary-soft);
}
.auto-task-stat--total .ui-stat-value {
  color: var(--color-numeric, var(--color-primary));
}
.auto-task-stat--success {
  background: var(--color-success-soft);
}
.auto-task-stat--success .ui-stat-value {
  color: var(--color-success);
}
.auto-task-stat--failed {
  background: var(--color-danger-soft);
}
.auto-task-stat--failed .ui-stat-value {
  color: var(--color-danger);
}
.auto-task-stat--cancelled {
  background: var(--color-bg-subtle);
}
.auto-task-stat--cancelled .ui-stat-value {
  color: var(--color-text-secondary);
}

/* 自动化任务筛条：占位「任务标识 / 名称 / 脚本」须整显；选择器须压过 base input.ui-input width:100% */
input.ui-input.auto-task-filter-q {
  width: 260px;
  max-width: 100%;
  flex: 0 0 auto;
  flex-shrink: 0;
  box-sizing: border-box;
}

/* 2.4.8.6 / 2.4.8.6.1 任务完成通知：分区拉开，避免控件堆叠 */
.auto-notify-block {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}
.auto-notify-block > .ui-field {
  margin-bottom: 0;
}
.auto-notify-body:not([hidden]) {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-bg-subtle);
}
.auto-notify-body[hidden],
.auto-notify-panel[hidden] {
  display: none !important;
}
.auto-notify-body > .ui-field,
.auto-notify-types {
  margin-bottom: 0;
}
.auto-notify-type-stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin-top: var(--space-3);
}
.auto-notify-type {
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-bg);
}
.auto-notify-type__check {
  font-size: var(--fs-subtitle);
  font-weight: var(--fw-bold);
}
.auto-notify-panel:not([hidden]) {
  display: block;
  margin-top: var(--space-4);
  padding-top: var(--space-4);
  border-top: 1px solid var(--color-border);
}
.auto-notify-panel > .ui-field {
  margin-bottom: var(--space-3);
}
.auto-notify-picker {
  max-height: 160px;
  overflow: auto;
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg-subtle);
}
.auto-notify-picker:empty::before {
  content: "暂无可选对象";
  color: var(--color-text-tertiary);
  font-size: var(--fs-caption);
}
.ui-fold {
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
}
.ui-fold + .ui-fold { margin-top: var(--space-2); }
.ui-fold-header {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-height: var(--table-row-h);
  padding: 0 var(--space-3);
  border-bottom: 1px solid var(--color-divider);
}
.ui-fold.is-collapsed > .ui-fold-header { border-bottom-color: transparent; }
.ui-fold-toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  border: 0;
  background: transparent;
  cursor: pointer;
  font: inherit;
  font-weight: 600;
  color: var(--color-text);
}
.ui-fold-chev {
  width: 8px;
  height: 8px;
  border-right: 1px solid var(--color-text);
  border-bottom: 1px solid var(--color-text);
  transform: rotate(45deg);
  transition: transform var(--dur-enter) var(--ease-out);
}
.ui-fold.is-collapsed .ui-fold-chev { transform: rotate(-45deg); }
.ui-fold-wrap {
  display: grid;
  grid-template-rows: 1fr;
  transition: grid-template-rows var(--dur-enter) var(--ease-out);
}
.ui-fold.is-collapsed > .ui-fold-wrap { grid-template-rows: 0fr; }
.ui-fold-body {
  overflow: hidden;
  min-height: 0;
  padding: var(--space-3);
  transition: padding var(--dur-enter) var(--ease-out);
}
.ui-fold.is-collapsed > .ui-fold-wrap .ui-fold-body {
  padding-top: 0;
  padding-bottom: 0;
}

.ui-radio-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-3);
}
.ui-field .ui-radio:has(input:checked),
label.ui-radio:has(input:checked) {
  color: var(--color-primary);
  font-weight: var(--fw-medium);
}
.ui-field .ui-radio:has(input:checked) .ui-radio-hint,
label.ui-radio:has(input:checked) .ui-radio-hint {
  color: var(--color-text-secondary);
  font-weight: var(--fw-regular);
}

.ui-doc {
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--color-text);
}
.ui-doc > :first-child { margin-top: 0; }
.ui-doc-note {
  margin: 0 0 var(--space-2);
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  line-height: var(--lh-body);
}
.ui-doc h3 {
  margin: var(--space-4) 0 var(--space-2);
  font-size: var(--fs-title);
  font-weight: 600;
}
.ui-doc h4 {
  margin: var(--space-3) 0 var(--space-2);
  font-size: var(--fs-body);
  font-weight: 600;
}
.ui-doc p { margin: 0 0 var(--space-2); }
.ui-doc ul,
.ui-doc ol {
  margin: 0 0 var(--space-2);
  padding-left: var(--space-4);
}
.ui-doc li { margin: 0 0 var(--space-1); }
.ui-doc strong { font-weight: 600; }

.ui-chart {
  position: relative;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-4) var(--space-4) var(--space-2);
}
.ui-chart--flat {
  border: 0;
  padding: 0;
  background: transparent;
  border-radius: 0;
}
.ui-chart-header {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-bottom: 4px;
  min-height: 24px;
}
.ui-chart-title {
  font-size: var(--fs-title);
  font-weight: 600;
  color: var(--color-text);
  line-height: var(--lh-tight);
  margin-right: auto;
}
.ui-chart-legend {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  font-size: var(--fs-caption);
  color: var(--color-text);
}
.ui-chart-legend-item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.ui-chart-legend-item i {
  width: 12px;
  height: 2px;
  background: var(--color-primary);
  flex-shrink: 0;
}
.ui-chart-legend-item i.is-bar,
.ui-chart-legend-item i.is-swatch {
  width: 8px;
  height: 8px;
}
.ui-chart-legend-item em {
  font-style: normal;
  color: var(--color-text-secondary);
  margin-left: 2px;
}
.ui-chart-body {
  width: 100%;
  position: relative;
}
.ui-chart-body--pie {
  display: flex;
  align-items: center;
  justify-content: center;
}
.ui-chart-svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.ui-chart-bar,
.ui-chart-slice { transition: opacity 0.12s ease; }
.ui-chart-tip {
  position: absolute;
  z-index: 5;
  min-width: 140px;
  padding: var(--space-2) var(--space-3);
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
  pointer-events: none;
  font-size: var(--fs-caption);
  color: var(--color-text);
  line-height: var(--lh-tight);
}
.ui-chart-tip-title {
  font-weight: 600;
  margin-bottom: var(--space-2);
}
.ui-chart-tip-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: 4px;
}
.ui-chart-tip-row i {
  width: 8px;
  height: 8px;
  flex-shrink: 0;
}
.ui-chart-tip-row span { flex: 1; color: var(--color-text); }
.ui-chart-tip-row b { font-weight: 600; }

/* Toast 布局/样式以 ui-guide `.ui-toast-stack` + `.ui-alert` 为准；仅抬 z-index 盖过页内 dialog */
.ui-toast-stack {
  z-index: 1700;
  max-width: calc(100vw - 40px);
}

.ui-modal--image,
dialog.ui-dialog--image {
  max-width: none;
  background: transparent;
  border: 0;
  box-shadow: none;
}
dialog.ui-dialog--image .ui-modal-image__close {
  position: absolute;
  top: var(--space-4);
  right: var(--space-4);
  z-index: 3;
  color: var(--color-text-inverse);
  background: rgba(0, 0, 0, 0.4);
  pointer-events: auto;
}
dialog.ui-dialog--image .ui-modal-image__close:hover {
  color: var(--color-text-inverse);
  background: rgba(255, 255, 255, 0.18);
}
dialog.ui-dialog--image .ui-modal-image__close .ui-icon {
  color: inherit;
}
.ui-modal-image__stage {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  min-height: 0;
}
.ui-modal-image__img {
  display: block;
  max-width: none;
  max-height: none;
  object-fit: contain;
  object-position: center;
  transform-origin: center center;
  user-select: none;
  -webkit-user-drag: none;
  pointer-events: auto;
}
dialog.ui-dialog--image.is-zoomed .ui-modal-image__img {
  cursor: grab;
}
dialog.ui-dialog--image.is-zoomed .ui-modal-image__img:active {
  cursor: grabbing;
}
.ui-modal-image__tools {
  position: absolute;
  left: 50%;
  bottom: var(--space-4);
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-2);
  border-radius: var(--radius-md);
  background: rgba(17, 24, 39, 0.78);
  color: var(--color-text-inverse);
  transform: translateX(-50%);
  pointer-events: auto;
}
.ui-modal-image__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 32px;
  height: 32px;
  padding: 0 var(--space-2);
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: inherit;
  cursor: pointer;
  font: inherit;
  font-size: var(--fs-caption);
  line-height: 1;
}
.ui-modal-image__btn:hover:not(:disabled) {
  background: rgba(255, 255, 255, 0.14);
}
.ui-modal-image__btn:disabled {
  opacity: 0.4;
  cursor: default;
}
.ui-modal-image__btn .ui-icon {
  color: inherit;
}
.ui-modal-image__pct {
  min-width: 40px;
  color: inherit;
  font-size: var(--fs-caption);
  font-variant-numeric: tabular-nums;
  text-align: center;
}
dialog.ui-dialog--lg#yjJsonRoot,
dialog.ui-dialog--json#yjJsonRoot,
#yjJsonRoot {
  z-index: 1300;
  max-height: min(86vh, 720px);
  flex-direction: column;
  overflow: hidden;
  box-sizing: border-box;
}
dialog.ui-dialog--lg#yjJsonRoot[open],
dialog.ui-dialog--json#yjJsonRoot[open],
#yjJsonRoot[open] {
  display: flex;
}
dialog.ui-dialog--lg#yjJsonRoot:not([open]),
dialog.ui-dialog--json#yjJsonRoot:not([open]),
#yjJsonRoot:not([open]) {
  display: none !important;
}
#yjJsonRoot .ui-dialog-header { flex-shrink: 0; }
#yjJsonRoot .ui-dialog-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: auto;
}
.ui-json { font-family: var(--font-mono); font-size: var(--fs-caption); min-width: 0; }
.ui-json-line {
  display: flex;
  gap: 8px;
  min-height: 24px;
  min-width: 0;
  padding-left: calc(var(--d, 0) * 16px);
}
.ui-json-toggle { width: 16px; flex-shrink: 0; border: 0; background: transparent; cursor: pointer; color: var(--color-text-secondary); }
.ui-json-str,
.ui-json__str { word-break: break-all; min-width: 0; }
.ui-json-raw { white-space: pre-wrap; word-break: break-word; }

.account-menu > button {
  border: 0;
  background: transparent;
  padding: 0;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.account-menu > button > .ui-icon {
  flex-shrink: 0;
  color: var(--color-text-tertiary);
}

#dialogRoot { z-index: 1500; }
#yjImageRoot { z-index: 1300; }
#orgMembersRoot { z-index: 1280; }

.org-member-list { list-style: none; margin: 0; padding: 0; max-height: min(52vh, 420px); overflow: auto; }
.org-member-list__item {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-height: 40px;
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--color-divider);
}
.org-member-list__meta { margin-left: auto; font-size: var(--fs-caption); color: var(--color-text-secondary); }
.org-member-list__empty { padding: var(--space-6) 0; text-align: center; color: var(--color-text-secondary); }

.notify-bell { position: relative; }
.notify-bell__badge {
  position: absolute;
  top: 2px; right: 2px;
  min-width: 16px; height: 16px;
  padding: 0 4px;
  border-radius: var(--radius-pill);
  background: var(--color-danger);
  color: #fff;
  font-size: 10px;
  line-height: 16px;
  text-align: center;
}
#notifyDrawerRoot > .ui-drawer { width: 400px; max-width: 100%; }
#notifyDrawerRoot .ui-drawer-body { display: flex; flex-direction: column; padding: 0; overflow: hidden; background: var(--color-bg); }
.notify-inbox__toolbar {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0 var(--space-4);
  border-bottom: 1px solid var(--color-divider);
  min-height: 40px;
}
.notify-inbox__tabs { display: flex; flex: 1; }
.notify-inbox__tab {
  appearance: none;
  border: 0;
  background: transparent;
  padding: var(--space-3);
  color: var(--color-text-secondary);
  cursor: pointer;
  border-bottom: 2px solid transparent;
}
.notify-inbox__tab.is-active {
  color: var(--color-primary);
  border-bottom-color: var(--color-primary);
  font-weight: 600;
}
.notify-inbox__link, .notify-inbox__all {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--color-primary);
  cursor: pointer;
  font-size: var(--fs-caption);
}
.notify-inbox__filters {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-divider);
}
.notify-inbox__search {
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
}
/* 增强后 .ui-select 默认 width:100%，须钉死宽度，避免挤掉搜索框 */
.notify-inbox__filters > .ui-select,
.notify-inbox__filters > select.notify-inbox__type {
  flex: 0 0 120px;
  width: 120px;
  max-width: 120px;
}
.notify-inbox__list {
  flex: 1;
  overflow: auto;
  padding: var(--space-3) var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.notify-inbox__foot {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4) var(--space-4);
  border-top: 1px solid var(--color-divider);
}
.notify-inbox__foot .spacer {
  flex: 1 1 auto;
  min-width: 0;
}
.notify-inbox__foot > .ui-select,
.notify-inbox__foot > select.notify-inbox__page-size {
  flex: 0 0 auto;
  width: auto;
  min-width: 96px;
  max-width: none;
  height: var(--control-h-md);
  font-size: var(--fs-body);
  box-sizing: border-box;
}
.notify-inbox__foot .ui-select {
  --ui-select-h: var(--control-h-md);
}
/* 2.9 通知等级语义色（通知绿 / 警告黄 / 危险红）+ 未读可见标识 */
.notify-level {
  font-weight: 600;
}
.notify-level--info {
  color: var(--color-success);
}
.notify-level--warn {
  color: var(--color-warning);
}
.notify-level--danger {
  color: var(--color-danger);
}
.notify-level-sep,
.notify-title-text {
  color: var(--color-text);
  font-weight: 600;
}

.notify-card {
  display: block;
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: #fff;
  cursor: pointer;
  text-align: left;
  transition: background-color 0.15s ease, border-color 0.15s ease;
}
.notify-card.is-unread {
  background: var(--color-primary-soft);
  border-color: color-mix(in srgb, var(--color-primary) 28%, var(--color-border));
}
.notify-card__main {
  min-width: 0;
}
.notify-card__row {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  justify-content: space-between;
}
.notify-card__title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
  flex: 1;
  font-size: var(--fs-body);
  font-weight: 600;
  color: var(--color-text);
  overflow: hidden;
}
.notify-card__title-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.notify-card__dot {
  width: 8px;
  height: 8px;
  border-radius: var(--radius-pill);
  flex: 0 0 auto;
}
.notify-card__dot--unread {
  background: var(--color-danger);
}
.notify-card__dot--read {
  background: var(--color-text-tertiary);
  opacity: 0.45;
}
.notify-card__time,
.notify-card__source {
  flex: 0 0 auto;
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.notify-card__msg {
  margin-top: var(--space-2);
  font-size: var(--fs-body);
  color: var(--color-text);
  line-height: var(--lh-normal);
}
.notify-msg-link {
  color: var(--color-primary);
  text-decoration: underline;
}
.notify-empty {
  padding: var(--space-6) 0;
  text-align: center;
  color: var(--color-text-secondary);
}

.notify-item {
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--color-divider);
  cursor: pointer;
}
.notify-item:last-child {
  border-bottom: 0;
}
.notify-item.is-unread {
  background: var(--color-primary-soft);
  margin: 0 calc(var(--space-4) * -1);
  padding-left: var(--space-4);
  padding-right: var(--space-4);
}
.notify-item.is-unread .notify-item__title {
  font-weight: 600;
}
.notify-item__head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
}
.notify-item__dot {
  width: 8px;
  height: 8px;
  border-radius: var(--radius-pill);
  background: var(--color-danger);
  flex: 0 0 auto;
}
.notify-item__title {
  flex: 1 1 auto;
  min-width: 0;
  font-weight: 500;
  color: var(--color-text);
}
.notify-item__type,
.notify-item__time,
.notify-item__meta,
.notify-item__level,
.notify-item__read {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.notify-item__msg {
  margin-top: var(--space-2);
  font-size: var(--fs-body);
  color: var(--color-text);
  line-height: var(--lh-normal);
}

/* 我的待办：筛条 / 行态 / 底栏（壳 gap 管纵向间距，统计区不再叠 margin） */
.todo-center > .todo-center__faces,
.todo-center > .todo-stats,
.todo-center > .table-bar,
.todo-center > .list-footer {
  flex-shrink: 0;
}
.todo-center__faces {
  align-self: flex-start;
}
.todo-center__filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
}
.todo-center .todo-row {
  cursor: pointer;
  transition: background-color 0.12s ease;
}
.todo-center .todo-row:hover > td {
  background: var(--color-table-hover, var(--color-bg-subtle));
}
.todo-center .todo-row:focus-visible {
  outline: none;
  box-shadow: inset var(--shadow-focus);
}
.todo-center .todo-row.is-overdue > td {
  background: color-mix(in srgb, var(--color-danger) 6%, transparent);
}
.todo-center .todo-row.is-overdue:hover > td {
  background: color-mix(in srgb, var(--color-danger) 10%, transparent);
}
.todo-center__title {
  font-weight: 600;
  color: var(--color-text);
}
.todo-center__summary {
  color: var(--color-text-secondary);
}
.todo-center__due.is-overdue {
  color: var(--color-danger);
  font-weight: 600;
}
.todo-center__overdue-mark {
  display: inline-block;
  margin-left: var(--space-2);
  padding: 0 var(--space-2);
  font-size: var(--fs-caption, 12px);
  font-weight: 500;
  line-height: 1.4;
  border-radius: var(--radius-sm, 6px);
  background: color-mix(in srgb, var(--color-danger) 12%, transparent);
  color: var(--color-danger);
}
.todo-center .todo-priority-tag,
.todo-center .todo-close-tag {
  justify-content: center;
  min-width: 52px;
  box-sizing: border-box;
}
.todo-center__table tbody td {
  height: auto;
  min-height: var(--row-h, 48px);
  padding-top: var(--space-3);
  padding-bottom: var(--space-3);
  vertical-align: middle;
}

/* 我的待办：分档统计 — soft 底 + 语义数字色（禁顶条装饰） */
.todo-stats {
  margin: 0;
  pointer-events: none;
}
.todo-stats__grid {
  margin: 0;
}
.todo-stat {
  overflow: hidden;
}
.todo-stat .ui-stat-title {
  color: var(--color-text-secondary);
}
.todo-stat .ui-stat-value {
  font-size: 32px;
  line-height: 1.1;
  color: var(--color-numeric, var(--color-text));
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}
.todo-stat--total {
  background: var(--color-primary-soft);
}
.todo-stat--total .ui-stat-value {
  color: var(--color-primary);
}
.todo-stat--urgent {
  background: var(--color-danger-soft);
}
.todo-stat--urgent .ui-stat-value {
  color: var(--color-danger);
}
.todo-stat--high {
  background: var(--color-warning-soft);
}
.todo-stat--high .ui-stat-value {
  color: var(--color-warning);
}
.todo-stat--normal {
  background: var(--color-bg-subtle);
}
.todo-stat--normal .ui-stat-value {
  color: var(--color-text);
}

/* 通知中心：分段进 table-bar 左；行内标题/正文层次 + 未读洗色 */
.notify-center-row {
  cursor: pointer;
}
.notify-center-row.is-unread,
.notify-center-row.is-unread > td {
  background: var(--color-primary-soft);
}
.notify-center-row.is-unread .notify-center-row__title {
  font-weight: 600;
}
.notify-center-row.is-unread .notify-center-row__msg {
  color: var(--color-text);
}
.notify-center-row__title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  line-height: var(--lh-tight);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--color-text);
}
.notify-center-row__dot {
  width: 8px;
  height: 8px;
  border-radius: var(--radius-pill);
  flex: 0 0 auto;
  background: transparent;
}
.notify-center-row__dot.is-unread {
  background: var(--color-danger);
}
.notify-center-row__title-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.notify-center-row__msg {
  margin-top: var(--space-1);
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  line-height: var(--lh-normal);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 40em;
}
.notify-center__table tbody td {
  height: auto;
  min-height: var(--row-h, 48px);
  padding-top: var(--space-3);
  padding-bottom: var(--space-3);
  white-space: normal;
  vertical-align: middle;
  line-height: var(--lh-normal);
}
.notify-center__table td.notify-center-row__body {
  vertical-align: top;
}

/* 权限/成员选择弹层（sys-role · table-role） */
.perm-picker {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-width: 0;
}
.perm-picker__search {
  flex-shrink: 0;
}
.perm-picker__search .ui-input,
.perm-picker__search input[type="search"] {
  width: 100%;
  box-sizing: border-box;
}
.perm-picker__hint {
  margin: 0;
  font-size: var(--fs-caption);
  line-height: var(--lh-normal);
}
.perm-picker__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  flex-shrink: 0;
}
.perm-picker__all {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0;
  font-size: var(--fs-body);
  color: var(--color-text);
  cursor: pointer;
  user-select: none;
}
.perm-picker__all input {
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
  accent-color: var(--color-primary);
  cursor: pointer;
}
.perm-picker__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  max-height: min(50vh, 360px);
  min-height: 120px;
  overflow: auto;
  padding: var(--space-2);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  box-sizing: border-box;
}
label.ui-radio.perm-picker__row,
label.ui-check.perm-picker__row,
.perm-picker__row {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  margin: 0;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  line-height: var(--lh-normal);
  color: var(--color-text);
  cursor: pointer;
  user-select: none;
  box-sizing: border-box;
}
.perm-picker__row:hover {
  background: var(--color-bg-subtle);
}
label.ui-radio.perm-picker__row input,
label.ui-check.perm-picker__row input,
.perm-picker__row input {
  width: 16px;
  height: 16px;
  margin: 2px 0 0;
  flex-shrink: 0;
  accent-color: var(--color-primary);
  cursor: pointer;
}
.perm-picker__row-text {
  flex: 1 1 auto;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.perm-picker__empty {
  margin: 0;
  padding: var(--space-6) var(--space-3);
  text-align: center;
}

/* 系统角色 · 配置权限树 */
.perm-save-status {
  display: inline-flex;
  align-items: center;
  min-height: var(--control-h-sm);
  font-size: var(--fs-caption);
  font-weight: var(--fw-medium);
  line-height: var(--lh-tight);
}
.perm-save-status--ok { color: var(--color-success); }
.perm-save-status--dirty { color: var(--color-danger); }

.perm-config-shell {
  min-height: 0;
}
.perm-config-shell .table-bar-left--status {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  min-width: 0;
}
.perm-tree-panel {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: var(--space-3) var(--space-4) 0;
  box-sizing: border-box;
}
.perm-tree-search {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}
.perm-tree-search__field {
  position: relative;
  width: 240px;
  max-width: 100%;
  flex-shrink: 0;
}
.perm-tree-search__input {
  width: 100%;
  padding-right: 36px;
  box-sizing: border-box;
}
.perm-tree-search__clear {
  position: absolute;
  right: var(--space-2);
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: var(--radius-md);
  background: var(--color-bg-muted);
  color: var(--color-text-secondary);
  cursor: pointer;
}
.perm-tree-search__clear:hover {
  color: var(--color-text);
  background: var(--color-gray-5, var(--color-bg-subtle));
}
.perm-tree-search__clear .ui-icon {
  font-size: 14px;
  line-height: 1;
}
.perm-tree-search__actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
}
.perm-tree-search__actions .icon-ui-btn {
  width: var(--control-h-md);
  min-width: var(--control-h-md);
  height: var(--control-h-md);
  padding: 0;
}
.perm-tree-tool-ico {
  display: block;
  width: 16px;
  height: 16px;
  position: relative;
  color: var(--color-text-secondary);
}
.perm-tree-tool-ico--collapse::before,
.perm-tree-tool-ico--collapse::after {
  content: "";
  position: absolute;
  left: 2px;
  right: 2px;
  height: 0;
  border-top: 2px solid currentColor;
}
.perm-tree-tool-ico--collapse::before {
  top: 4px;
  box-shadow: 0 4px 0 currentColor;
}
.perm-tree-tool-ico--collapse::after {
  top: 12px;
}
.perm-tree-tool-ico--expand::before {
  content: "";
  position: absolute;
  left: 7px;
  top: 2px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 6px 5px 0 5px;
  border-color: currentColor transparent transparent transparent;
}
.perm-tree-tool-ico--expand::after {
  content: "";
  position: absolute;
  left: 2px;
  right: 2px;
  bottom: 3px;
  height: 0;
  border-top: 2px solid currentColor;
}
.perm-tree {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  overflow: hidden;
}
.perm-tree__head {
  flex-shrink: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) 88px;
  align-items: center;
  min-height: var(--control-h-md);
  border-bottom: 1px solid var(--color-divider);
  background: var(--color-bg-page);
  color: var(--color-text-secondary);
  font-size: var(--fs-caption);
  font-weight: var(--fw-medium);
  box-sizing: border-box;
}
.perm-tree__body {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
.perm-tree__empty {
  padding: var(--space-6) var(--space-4);
  margin: 0;
  text-align: center;
  color: var(--color-text-secondary);
}
.perm-tree__row {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) 88px;
  align-items: center;
  min-height: var(--table-row-h);
  border-bottom: 1px solid var(--color-divider);
  box-sizing: border-box;
}
.perm-tree__head > div {
  padding: var(--space-2) var(--space-4);
}
.perm-tree__col-all {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding: var(--space-2) var(--space-4);
}
.perm-tree__col-perm {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-4);
  padding: var(--space-2) var(--space-4);
  min-width: 0;
}
.perm-tree__col-mod {
  min-width: 0;
  padding-right: var(--space-2);
  box-sizing: border-box;
}
.perm-tree__block { border-bottom: 0; }
.perm-tree__row--branch { background: #fff; }
.perm-tree__row--leaf { background: var(--color-bg); }
.perm-tree__hd {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  min-height: var(--table-row-h);
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: var(--color-text);
  font: inherit;
  font-size: var(--fs-body);
  font-weight: var(--fw-medium);
  box-sizing: border-box;
}
.perm-tree__hd--static {
  cursor: default;
  font-weight: var(--fw-regular);
}
.perm-tree__hd:hover { color: var(--color-text); }
.perm-tree__label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.perm-tree__icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  position: relative;
}
.perm-tree__icon--chev::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 5px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 5px 0 5px 6px;
  border-color: transparent transparent transparent var(--color-text-secondary);
  transform: rotate(0deg);
  transform-origin: 4px 5px;
  transition: transform var(--dur-fast) var(--ease);
}
.perm-tree__icon--chev.is-open::before {
  transform: rotate(90deg);
}
.perm-tree__icon--leaf::before {
  content: "";
  position: absolute;
  left: 6px;
  top: 0;
  width: 8px;
  height: 10px;
  border-left: 1px solid var(--color-text-tertiary);
  border-bottom: 1px solid var(--color-text-tertiary);
}
.perm-opt {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  font-size: var(--fs-caption);
  color: var(--color-text);
  cursor: pointer;
  user-select: none;
}
.perm-opt input {
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
  accent-color: var(--color-primary);
  cursor: pointer;
}
.perm-opt.is-disabled {
  cursor: default;
  color: var(--color-text-secondary);
  pointer-events: none;
}
.perm-opt.is-disabled input { cursor: default; }
.perm-tree__all {
  width: 16px;
  height: 16px;
  margin: 0;
  accent-color: var(--color-primary);
  cursor: pointer;
}
.perm-tree__all:disabled {
  cursor: default;
  opacity: 0.7;
}

/* 成员管理（系统角色 · 绑定成员/部门） */
.perm-members-shell {
  min-height: 0;
}
.perm-members-shell .table-bar-left--status {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  min-width: 0;
}
.perm-bind-panel {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  box-sizing: border-box;
}
.perm-bind-block {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  overflow: hidden;
}
.perm-bind-toolbar {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--color-divider);
  background: var(--color-bg-page);
}
.perm-bind-toolbar__left,
.perm-bind-toolbar__right {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  min-width: 0;
}
.perm-bind-toolbar__left strong {
  font-weight: 600;
  color: var(--color-text);
}
.perm-bind-search {
  margin: 0;
}
.perm-bind-search .ui-input {
  width: 160px;
  max-width: 100%;
  box-sizing: border-box;
}
.perm-bind-toolbar .page-segment {
  flex-shrink: 0;
}
.perm-bind-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
.perm-bind-scroll .data {
  margin: 0;
  border: 0;
  border-radius: 0;
}

.collect-tree { font-size: var(--fs-caption); }
.collect-summary-line {
  margin: 0 0 var(--space-3);
  color: var(--color-text-secondary);
  font-size: var(--fs-caption);
  font-variant-numeric: tabular-nums;
}

.target-filter-drawer .ui-drawer-body { display: flex; flex-direction: column; }
.target-filter-panel { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.target-filter-block { margin-bottom: var(--space-4); }
.target-filter-block > .ui-label { margin-bottom: var(--space-2); }
.target-filter-prompt-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-3); margin-bottom: var(--space-2);
}
.target-filter-prompt-head .ui-label { margin-bottom: 0; }
.target-filter-prompt-actions { display: flex; gap: var(--space-2); flex-shrink: 0; }
.target-filter-block textarea { resize: none; }
.target-filter-stats {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-4); margin-bottom: var(--space-3);
}
.target-filter-bar {
  height: var(--space-2); border-radius: var(--radius-pill);
  background: var(--color-primary-soft); overflow: hidden;
}
.target-filter-bar > div { height: var(--space-2); width: 0; background: var(--color-primary); }
.target-filter-meta {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-3); margin-top: var(--space-3);
  font-size: var(--fs-caption); color: var(--color-text-secondary);
}
.target-filter-result { flex: 1; min-height: 0; display: flex; flex-direction: column; margin-bottom: 0; }
.target-filter-result-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-3); margin-bottom: var(--space-2);
}
.target-filter-result-head .ui-label { margin-bottom: 0; }
.target-filter-table { flex: 1; min-height: 0; }
.collect-row {
  display: grid;
  grid-template-columns: minmax(140px, 1.8fr) 92px minmax(72px, 1fr) 76px 72px 92px 64px 76px;
  align-items: center;
  min-height: var(--table-row-h);
  gap: var(--space-2);
  padding: 0 var(--space-3);
  border-bottom: 1px solid var(--color-divider);
}
.collect-row--head {
  color: var(--color-text-secondary);
  font-size: 12px;
}
.collect-cell--name {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
}
.collect-row__toggle {
  width: 16px;
  border: 0;
  background: transparent;
  cursor: pointer;
  color: var(--color-text-secondary);
}
.collect-row__label {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  font: inherit;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.collect-row__thumb {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--color-divider);
  border-radius: var(--radius-sm, 6px);
  background: var(--color-bg-muted, #f5f5f5);
  cursor: pointer;
  overflow: hidden;
}
.collect-row__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.collect-kids { padding-left: var(--space-4); }
.collect-row__status {
  flex: 0 0 auto;
  color: var(--color-text-secondary);
}
.collect-row__force {
  flex: 0 0 auto;
  height: auto;
  padding: 0;
}
/* 2.3.1.1.2：折叠栏统计、每行用时、内部步骤行与置灰的重采入口 */
.collect-row__stats,
.collect-row__extra,
.collect-row__at {
  flex: 0 0 auto;
  color: var(--color-text-secondary);
  white-space: nowrap;
}
.collect-row__at { min-width: 84px; text-align: right; }
.collect-row__dur {
  flex: 0 0 auto;
  min-width: 64px;
  text-align: right;
  color: var(--color-text-secondary);
  font-variant-numeric: tabular-nums;
}
.collect-row__dur.is-live { color: var(--color-primary); }
.collect-row__force.is-disabled {
  color: var(--color-text-disabled, var(--color-text-secondary));
  cursor: not-allowed;
  opacity: 0.55;
}
.collect-row.is-step {
  background: var(--color-bg-page);
  color: var(--color-text-secondary);
}
.collect-row.is-step .collect-row__label { cursor: default; }
.ui-tag.collect-count { font-variant-numeric: tabular-nums; }

.profit-snap { display: grid; grid-template-columns: 160px 1fr; }
.profit-snap dt, .profit-snap dd {
  min-height: 32px;
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--color-divider);
  margin: 0;
  font-size: var(--fs-caption);
}
.profit-snap dt { color: var(--color-text-secondary); background: var(--color-bg-page); }
.sales-trend-stack { display: flex; flex-direction: column; gap: var(--space-2); }
.market-picks { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4); }
.market-picks label { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-caption); }

td.cell-inline { cursor: text; }
td.cell-inline input, td .cell-input {
  width: 100%;
  height: var(--control-h-sm);
  margin: 0;
  padding: 0 var(--space-2);
  border: 0;
  border-radius: var(--radius-md);
  font: inherit;
  background: #fff;
}
td.cell-decimal .cell-input,
td.cell-money .cell-input,
td.cell-rate .cell-input { font-variant-numeric: tabular-nums; }

.ui-opened-page-close[hidden] { display: none !important; }

/* Checkbox：自定义方框，不用系统原生外观 */
input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  box-sizing: border-box;
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
  vertical-align: middle;
  border: 1.5px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background-color: var(--color-bg);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 12px 12px;
  cursor: pointer;
  transition:
    background-color var(--dur-fast) var(--ease),
    border-color var(--dur-fast) var(--ease),
    box-shadow var(--dur-fast) var(--ease);
}
input[type="checkbox"]:hover:not(:disabled) {
  border-color: var(--color-primary);
}
input[type="checkbox"]:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus);
}
input[type="checkbox"]:checked {
  border-color: var(--color-primary);
  background-color: var(--color-primary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.2l3 3.1 6-6.4' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
input[type="checkbox"]:indeterminate {
  border-color: var(--color-primary);
  background-color: var(--color-primary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8h9' stroke='%23fff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}
input[type="checkbox"]:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.ui-check input[type="checkbox"],
.ui-check-group input[type="checkbox"],
.ui-check-stack input[type="checkbox"] {
  accent-color: unset;
}

/* Switch 内的 checkbox 只作状态源，须藏掉，避免被上面的自定义方框盖住轨道 */
.ui-switch input[type="checkbox"],
.ui-switch input[type="checkbox"]:hover:not(:disabled),
.ui-switch input[type="checkbox"]:focus-visible,
.ui-switch input[type="checkbox"]:checked,
.ui-switch input[type="checkbox"]:indeterminate,
.ui-switch input[type="checkbox"]:disabled {
  appearance: none;
  -webkit-appearance: none;
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  cursor: inherit;
}

.ui-sidebar-footer a { color: inherit; text-decoration: none; }
.ui-sidebar-footer a:hover { color: var(--color-primary); }

/* 备案：仅登录页底栏；业务壳不挂，正文占满高度 */
.wj-beian {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 40;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
  padding: 3px 8px;
  box-sizing: border-box;
  font-size: 12px;
  line-height: 1.25;
  color: var(--color-text-tertiary, #8a8f98);
  background: color-mix(in srgb, var(--color-bg-page, #f5f6f8) 88%, transparent);
  pointer-events: none;
}
.wj-beian a {
  pointer-events: auto;
  color: inherit;
  text-decoration: none;
}
.wj-beian a:hover {
  color: var(--color-primary);
  text-decoration: underline;
}
.wj-beian__sep {
  opacity: 0.55;
  user-select: none;
}
body.auth-page {
  padding-bottom: 22px;
  box-sizing: border-box;
}
/* 业务壳贴底，不预留备案条高度 */
body.ui-app:has(> .ui-shell) {
  padding-bottom: 0;
}

/* 侧栏 L1：Icon 上、标题下；无展开 chevron（折叠态仍靠组开合） */
.ui-sidebar-group {
  gap: var(--space-1);
}
.ui-sidebar-group__bd {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  min-width: 0;
}
.ui-sidebar-group__bd[hidden] {
  display: none !important;
}
.ui-sidebar-label {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  width: 100%;
  margin: 0;
  padding: 16px var(--space-1);
  border: 0;
  border-radius: 0;
  background: transparent;
  box-sizing: border-box;
  font-family: inherit;
  font-size: var(--sidebar-l1-fs);
  font-weight: var(--fw-medium);
  letter-spacing: 0;
  color: var(--color-text-secondary);
  line-height: 1.2;
  text-align: center;
  cursor: pointer;
}
.ui-sidebar-label:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus);
}
.ui-sidebar-label-ico,
.ui-sidebar-label-ico.ui-icon,
.ui-sidebar-label-ico.ui-icon-md {
  flex-shrink: 0;
  font-size: var(--sidebar-l1-ico);
  line-height: 1;
  color: inherit;
}
.ui-sidebar-label-text {
  display: block;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: normal;
}
.ui-sidebar-label:hover,
.ui-sidebar-label:hover .ui-sidebar-label-ico,
.ui-sidebar-group.is-open > .ui-sidebar-label,
.ui-sidebar-group.is-open > .ui-sidebar-label .ui-sidebar-label-ico,
.ui-sidebar-label.is-flyout-open,
.ui-sidebar-label.is-flyout-open .ui-sidebar-label-ico {
  color: var(--color-primary);
}
.ui-sidebar-item {
  font-size: 14px;
  gap: var(--space-2);
  padding-left: var(--space-3);
  padding-right: var(--space-3);
}
.ui-sidebar-item .ui-icon:not(.ui-sidebar-item-trail) {
  display: none;
}
.ui-sidebar-item-trail {
  display: inline-flex !important;
  margin-left: auto;
  flex-shrink: 0;
  color: var(--color-text-tertiary);
}
.ui-sidebar-item.has-flyout.is-flyout-open,
.ui-sidebar-item.has-flyout.is-flyout-open .ui-sidebar-item-trail {
  color: var(--color-primary);
}

/* 2.2：停用常驻中栏；L3/L4 悬停 absolute 悬浮 */
.ui-shell > .ui-subnav {
  display: none !important;
}
.ui-shell:has(> .ui-subnav:not([hidden])) {
  grid-template-columns: var(--sidebar-app-w) minmax(0, 1fr);
  column-gap: var(--space-4);
}
.ui-shell:has(> .ui-subnav:not([hidden])) > .ui-shell-body {
  margin-left: 0;
}

.ui-shell {
  position: relative;
}
/* .nav-flyout 样式以 docs/ui-guide/style/css/components.css 为准；此处不覆盖宽高/定位 */

[data-query-table] .qt-table-pane {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
[data-query-table] .qt-empty-overlay {
  position: absolute;
  inset: 0;
  z-index: 6;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  color: var(--color-text-secondary);
}
[data-query-table] .qt-empty-overlay .ui-table-empty {
  pointer-events: none;
}

/* 市场分析矩阵：按对象组隔行底色（合并格跨行），左侧维度/指标列冻结，右侧对比列冻结，表末合计组随表滚动 */
[data-query-table="mkt-target"] table.mt-matrix tbody tr td {
  background: var(--color-bg);
  vertical-align: middle;
}
[data-query-table="mkt-target"] table.mt-matrix tbody tr.is-alt td {
  background: var(--color-bg-subtle);
}
[data-query-table="mkt-target"] table.mt-matrix tbody tr:hover td {
  background: var(--color-table-hover);
}
[data-query-table="mkt-target"] table.mt-matrix td.fix-l {
  z-index: 2;
}
[data-query-table="mkt-target"] table.mt-matrix th .mt-sort-metric {
  margin-left: var(--space-1);
  font-size: var(--fs-caption);
  font-weight: 400;
  color: var(--color-primary);
}
[data-query-table="mkt-target"] table.mt-matrix th.fix-l {
  z-index: 7;
}
[data-query-table="mkt-target"] table.mt-matrix td.mt-dim,
[data-query-table="mkt-target"] table.mt-matrix td.mt-sub {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* 合并格内容在本组行范围内吸顶；td 用 clip 而非 hidden，hidden 会让 td 自成滚动容器使 sticky 失效 */
[data-query-table="mkt-target"] table.mt-matrix td.mt-dim {
  overflow: clip;
}
[data-query-table="mkt-target"] table.mt-matrix .mt-dim-stick {
  position: sticky;
  top: var(--mt-head-h, 0px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 46px;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-query-table="mkt-target"] table.mt-matrix .mt-dim-stick > span {
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-query-table="mkt-target"] table.mt-matrix .mt-dim-stick--thumb {
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: var(--space-2);
}
[data-query-table="mkt-target"] table.mt-matrix .mt-dim-thumb {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  color: var(--color-text-tertiary);
}
[data-query-table="mkt-target"] table.mt-matrix .mt-dim-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
[data-query-table="mkt-target"] table.mt-matrix .mt-dim-text > span {
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-query-table="mkt-target"] table.mt-matrix tbody tr.mt-total-row td,
[data-query-table="mkt-target"] table.mt-matrix tbody tr.mt-sum-row td {
  background: var(--color-bg-page);
  font-weight: 700;
}
[data-query-table="mkt-target"] table.mt-matrix tbody tr.mt-sum-row td {
  background: #e1e1e1;
}
[data-query-table="mkt-target"] table.mt-matrix tbody tr.mt-sum-first td {
  border-top: 2px solid #ddd;
}
[data-query-table="mkt-target"] table.mt-matrix .mt-cmp {
  position: sticky;
  z-index: 2;
}
[data-query-table="mkt-target"] table.mt-matrix th.mt-cmp {
  z-index: 7;
  background: var(--color-table-header);
}
[data-query-table="mkt-target"] table.mt-matrix .mt-cmp-first {
  box-shadow: -6px 0 12px rgba(0, 0, 0, 0.06);
}

[data-query-table="mkt-target"] table.mt-matrix td.mt-dim-link {
  cursor: pointer;
}
[data-query-table="mkt-target"] table.mt-matrix td.mt-dim-link:hover .cell-name-code__name {
  color: var(--color-primary);
}

/* 市场分析 · 走势 Drawer（内联 SVG 折线图） */
.mt-trend-drawer .mt-trend-code {
  margin-left: var(--space-2);
  font-size: var(--fs-caption);
  font-weight: 400;
  color: var(--color-primary);
}
.mt-trend-drawer .mt-trend-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 260px;
  gap: var(--space-4);
  align-items: start;
  margin-bottom: var(--space-4);
}
.mt-trend-drawer .mt-trend-row--full {
  grid-template-columns: minmax(0, 1fr);
}
.mt-trend-drawer .mt-trend-chart {
  min-width: 0;
}
.mt-trend-drawer .mt-trend-chart__title {
  margin: 0 0 var(--space-1);
  font-size: var(--fs-caption);
  font-weight: 700;
}
.mt-trend-drawer .mt-trend-unit {
  margin-left: var(--space-2);
  font-size: var(--fs-caption);
  font-weight: 400;
  color: var(--color-text-tertiary);
}
.mt-trend-drawer .mt-pie {
  min-width: 0;
}
.mt-trend-drawer .mt-pie__title {
  margin-bottom: var(--space-1);
  font-size: var(--fs-caption);
  font-weight: 700;
  text-align: center;
}
.mt-trend-drawer .mt-g2 {
  min-width: 0;
}
.mt-trend-drawer .mt-g2--line {
  height: 200px;
}
.mt-trend-drawer .mt-g2--pie {
  height: 180px;
}
.mt-trend-drawer .mt-pie-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 180px;
  font-size: var(--fs-caption);
  color: var(--color-text-tertiary);
}
.mt-trend-drawer .mt-pie-legend {
  margin: var(--space-2) 0 0;
  padding: 0;
  list-style: none;
  font-size: var(--fs-overline);
}
.mt-trend-drawer .mt-pie-legend li {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  line-height: 1.6;
}
.mt-trend-drawer .mt-pie-swatch {
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: var(--radius-sm);
  background: var(--color-primary);
}
.mt-trend-drawer .mt-pie-legend__name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.mt-trend-drawer .mt-pie-legend__pct {
  font-variant-numeric: tabular-nums;
  color: var(--color-numeric);
  font-weight: 700;
}

/* 市场分析 · 经营看板 Drawer（SKU / ASIN 视图） */
.mt-board-drawer .ui-drawer-actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}
.mt-board-drawer .mt-board-card {
  margin-bottom: var(--space-4);
  padding: var(--space-4);
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  min-width: 0;
}
.mt-board-drawer .mt-board-card__title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
  font-size: var(--fs-subtitle);
  font-weight: 700;
}
.mt-board-drawer .mt-board-card__no {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: var(--radius-sm);
  background: var(--color-primary-soft);
  color: var(--color-primary);
  font-size: var(--fs-caption);
}
.mt-board-drawer .mt-board-sample {
  flex-shrink: 0;
  margin-left: var(--space-2);
  height: 20px;
  font-weight: 400;
  white-space: nowrap;
}
.mt-board-drawer .mt-board-card__title,
.mt-board-drawer .mt-board-stat__label {
  white-space: nowrap;
}
.mt-board-drawer .mt-board-card__title,
.mt-board-drawer .mt-board-stat__label {
  flex-wrap: wrap;
  row-gap: var(--space-1);
}
.mt-board-drawer .mt-board-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(240px, 24%);
  grid-template-rows: auto auto auto;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}
.mt-board-drawer .mt-board-layout__trend {
  grid-column: 1;
  grid-row: 1;
}
.mt-board-drawer .mt-board-layout__trio {
  grid-column: 1;
  grid-row: 2;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-4);
}
.mt-board-drawer .mt-board-layout__wide {
  grid-column: 1;
  grid-row: 3;
}
.mt-board-drawer .mt-board-layout__rate {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
}
.mt-board-drawer .mt-board-layout__ai {
  grid-column: 2;
  grid-row: 2 / span 2;
  min-width: 0;
}
.mt-board-drawer .mt-board-layout .mt-board-card {
  margin-bottom: 0;
}
.mt-board-drawer .mt-board-layout__trend > .mt-board-card,
.mt-board-drawer .mt-board-layout__rate > .mt-board-card,
.mt-board-drawer .mt-board-layout__wide > .mt-board-card,
.mt-board-drawer .mt-board-layout__ai > .mt-board-card {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.mt-board-drawer .mt-board-ai-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.mt-board-drawer .mt-board-rates {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: var(--space-3);
}
.mt-board-drawer .mt-board-rates > .mt-board-rate {
  display: flex;
  flex: 1;
  flex-direction: column;
  min-height: 0;
}
.mt-board-drawer .mt-board-rate__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
  white-space: nowrap;
}
.mt-board-drawer .mt-board-rate__value {
  font-size: var(--fs-subtitle);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.mt-board-drawer .mt-board-scroll {
  overflow-x: auto;
}
.mt-board-drawer .mt-board-grid {
  display: grid;
  gap: var(--space-3);
}
.mt-board-drawer .mt-board-grid--delta {
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  margin-top: var(--space-3);
}
.mt-board-drawer .mt-board-swatch.is-qty {
  background: var(--color-chart-1);
}
.mt-board-drawer .mt-board-swatch.is-gmv {
  background: var(--color-chart-2);
}
.mt-board-drawer .mt-board-swatch.is-gp {
  background: var(--color-chart-3);
}
.mt-board-drawer .mt-board-legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
  margin: 0 0 var(--space-2);
  padding: 0;
  list-style: none;
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.mt-board-drawer .mt-board-legend--title {
  margin: 0;
  font-weight: 400;
  white-space: normal;
}
.mt-board-drawer .mt-board-legend--title[hidden] {
  display: none;
}
.mt-board-drawer .mt-board-trend-tabs {
  margin-left: auto;
  flex-shrink: 0;
}
.mt-board-drawer .mt-board-legend--title li {
  cursor: pointer;
}
.mt-board-drawer .mt-board-legend--title li.is-off {
  opacity: 0.35;
}
.mt-board-drawer .mt-board-card__period {
  margin-right: var(--space-6);
  font-size: var(--fs-caption);
  font-weight: 400;
  color: var(--color-text-secondary);
}
.mt-board-drawer .mt-board-legend li {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}
.mt-board-drawer .mt-board-swatch {
  width: 12px;
  height: 4px;
  border-radius: var(--radius-sm);
  background: var(--color-primary);
}
.mt-board-drawer .mt-board-delta,
.mt-board-drawer .mt-board-kpi {
  padding: var(--space-3);
  border-radius: var(--radius-md);
  background: var(--color-bg-subtle);
  min-width: 0;
}
.mt-board-drawer .mt-board-delta__label,
.mt-board-drawer .mt-board-kpi__label {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.mt-board-drawer .mt-board-delta__value {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  margin-top: var(--space-1);
  font-size: var(--fs-title);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.mt-board-drawer .mt-board-stats {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.mt-board-drawer .mt-board-stats--pair {
  flex-direction: row;
  margin-top: var(--space-3);
  margin-bottom: 0;
}
.mt-board-drawer .mt-board-stats--pair .mt-board-stat {
  flex: 1;
  min-width: 0;
}
.mt-board-drawer .mt-board-stats--line {
  flex-direction: row;
  flex-wrap: wrap;
}
.mt-board-drawer .mt-board-stats--line .mt-board-stat {
  flex: 1;
  min-width: 0;
}
.mt-board-drawer .mt-board-stat__sub {
  margin-top: var(--space-1);
  font-size: var(--fs-caption);
  color: var(--color-text-tertiary);
  font-variant-numeric: tabular-nums;
}
.mt-board-drawer .mt-board-stat {
  padding: var(--space-3);
  border-radius: var(--radius-md);
  background: var(--color-bg-subtle);
}
.mt-board-drawer .mt-board-stat__label {
  display: flex;
  align-items: center;
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.mt-board-drawer .mt-board-stat__value {
  margin-top: var(--space-1);
  font-size: var(--fs-subtitle);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.mt-board-drawer .mt-board-stats:not(.mt-board-stats--pair) .mt-board-stat__value {
  font-size: 18px;
}
.mt-board-drawer .mt-board-stat__value .cell-int {
  color: var(--color-numeric);
}
.mt-board-drawer .mt-board-delta__sub,
.mt-board-drawer .mt-board-kpi__sub {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  margin-top: var(--space-1);
  font-size: var(--fs-caption);
  color: var(--color-text-tertiary);
  font-variant-numeric: tabular-nums;
}
.mt-board-drawer .is-good {
  color: var(--color-success);
}
.mt-board-drawer .is-warn {
  color: var(--color-warning);
}
.mt-board-drawer .is-bad {
  color: var(--color-danger);
}
.mt-board-drawer .mt-board-swatch.is-c-0 {
  background: var(--color-chart-1);
}
.mt-board-drawer .mt-board-swatch.is-c-1 {
  background: var(--color-chart-2);
}
.mt-board-drawer .mt-board-swatch.is-c-2 {
  background: var(--color-chart-3);
}
.mt-board-drawer .mt-board-swatch.is-c-3 {
  background: var(--color-chart-4);
}
.mt-board-drawer .mt-board-swatch.is-c-4 {
  background: var(--color-chart-5);
}
.mt-board-drawer .mt-board-swatch.is-c-5 {
  background: var(--color-chart-6);
}
.mt-board-drawer .mt-board-swatch.is-c-6 {
  background: var(--color-chart-7);
}
.mt-board-drawer .mt-board-swatch.is-c-7 {
  background: var(--color-chart-8);
}
.mt-board-drawer .mt-board-swatch.is-c-other {
  background: var(--color-chart-other);
}
.mt-board-drawer .mt-board-subtitle {
  margin: var(--space-3) 0 var(--space-2);
  font-size: var(--fs-caption);
  font-weight: 700;
}
.mt-board-drawer .mt-board-subtitle--first {
  margin-top: 0;
}
.mt-board-drawer .mt-g2--trend {
  height: 220px;
}
.mt-board-drawer .mt-g2--rate {
  flex: 1;
  min-height: 72px;
}
.mt-board-drawer .mt-board-pie {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-3);
}
.mt-board-drawer .mt-board-subtitle + .mt-board-pie {
  margin-top: 0;
}
.mt-board-drawer .mt-g2--pie-sm,
.mt-board-drawer .mt-board-pie__empty {
  flex: none;
  width: 150px;
  height: 150px;
}
.mt-board-drawer .mt-board-legend--pie {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-1) var(--space-4);
  align-self: stretch;
  margin: 0;
}
.mt-board-drawer .mt-board-legend--pie li {
  min-width: 0;
  white-space: nowrap;
}
.mt-board-drawer .mt-board-legend--pie .mt-board-swatch {
  width: 8px;
  height: 8px;
}
.mt-board-drawer .mt-board-legend__pct {
  color: var(--color-numeric);
  font-variant-numeric: tabular-nums;
}
.mt-board-drawer .mt-board-muted {
  margin: var(--space-2) 0 0;
  font-size: var(--fs-caption);
  color: var(--color-text-tertiary);
}
.mt-board-drawer .mt-board-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-caption);
}
.mt-board-drawer .mt-board-table th,
.mt-board-drawer .mt-board-table td {
  padding: var(--space-2);
  border-bottom: 1px solid var(--color-border);
  text-align: left;
  white-space: nowrap;
}
.mt-board-drawer .mt-board-table th {
  font-weight: 700;
  color: var(--color-text-secondary);
}
.mt-board-drawer .mt-board-table .cell-int,
.mt-board-drawer .mt-board-table .cell-money,
.mt-board-drawer .mt-board-foot b {
  font-weight: 700;
  color: var(--color-numeric);
  font-variant-numeric: tabular-nums;
}
.mt-board-drawer .mt-board-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-4);
  margin-top: var(--space-3);
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.mt-board-drawer .mt-board-alert {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  margin: var(--space-2) 0 0;
  color: var(--color-danger);
  font-size: var(--fs-caption);
}
.mt-board-drawer .mt-board-ai {
  margin: var(--space-2) 0 0;
  font-size: var(--fs-caption);
  line-height: 1.6;
}

/* 市场分析 · 指标显示设置 Drawer */
.mt-color-drawer .mt-color-tabs {
  margin-bottom: var(--space-3);
}
.mt-color-drawer .mt-color-hint,
.mt-color-drawer .mt-color-empty {
  margin: 0 0 var(--space-3);
  font-size: var(--fs-caption);
  color: var(--color-text-tertiary);
}
.mt-cell-color-grid {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.mt-cell-swatch {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.mt-cell-swatch__chip {
  width: var(--space-4);
  height: var(--space-4);
  border-radius: var(--radius-sm);
}
.mt-color-drawer .mt-color-metric {
  margin-bottom: var(--space-6);
}
.mt-color-drawer .mt-color-metric__title {
  margin: 0 0 var(--space-3);
  font-size: var(--fs-body);
  font-weight: 700;
}
.mt-color-drawer .mt-rule {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}
.mt-color-drawer .mt-rule .ui-input {
  width: 120px;
}
.mt-color-drawer .mt-rule select,
.mt-color-drawer .mt-rule .ui-select {
  width: 96px;
}
.mt-color-drawer .mt-rule-swatch {
  flex: none;
  width: 16px;
  height: 16px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--color-border);
}
.mt-color-drawer .mt-rule-unit {
  color: var(--color-text-tertiary);
}

/* 合计格：可点选统计方式；菜单 fixed 挂 body，避开 list-shell overflow */
[data-query-table] td.qt-stat {
  cursor: pointer;
  user-select: none;
}
[data-query-table] td.qt-stat.is-muted {
  color: var(--color-text-tertiary);
}
.qt-stat-menu {
  position: fixed;
  z-index: 80;
  min-width: 128px;
  max-width: min(240px, calc(100vw - 24px));
  padding: var(--space-1);
  margin: 0;
  box-sizing: border-box;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
}
.qt-stat-menu[hidden] {
  display: none !important;
}
.qt-stat-menu__item {
  display: flex;
  align-items: center;
  width: 100%;
  box-sizing: border-box;
  padding: var(--space-2) var(--space-3);
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--color-text);
  font: inherit;
  font-size: var(--fs-body);
  text-align: left;
  cursor: pointer;
}
.qt-stat-menu__item:hover:not(:disabled) {
  background: var(--color-bg-subtle);
}
.qt-stat-menu__item.is-active {
  color: var(--color-primary);
  font-weight: var(--fw-medium, 500);
}
.qt-stat-menu__item:disabled {
  color: var(--color-text-disabled);
  cursor: not-allowed;
  opacity: 0.55;
}

/* 顶栏须压过主区 sticky 表头；账户 ui-dropdown-menu 未挂 body，否则会被 thead 遮住 */
.ui-page-top {
  position: relative;
  z-index: 6;
}
/* 已开页面可点：取消账户区负边距抢命中；tab 叠在账户之上 */
.ui-page-top > .ui-opened-pages {
  position: relative;
  z-index: 3;
}
.ui-page-top > .ui-sidebar-account {
  z-index: 2;
  margin-inline-start: 0;
  padding-inline-start: var(--space-4);
  pointer-events: auto;
}

/* .ui i 会把 Remix 图标打成 italic，显式压回 */
.ui-app i.ui-icon,
.ui i.ui-icon {
  font-style: normal !important;
}

.source-flow-toolbar {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.source-flow-card {
  cursor: pointer;
  text-align: left;
  border: 1px solid var(--color-border);
  background: var(--color-bg);
}
.source-flow-card.is-active {
  border-color: var(--color-primary);
}

/* 2.3.1.2.3 报告正文走规范 .ui-report；此处只留抽屉壳与分析态 */
.ai-report-shell {
  min-width: 0;
}
.ui-report__status {
  padding: var(--space-8) var(--space-4);
  text-align: center;
  color: var(--color-text-secondary);
  font-size: var(--fs-subtitle);
}
.ui-report__status.is-err {
  color: var(--color-danger);
}
.ui-report__warn {
  margin: 0 0 var(--space-3);
  color: var(--color-warning);
  font-size: var(--fs-caption);
}
.ui-report__foot {
  margin-top: var(--space-5);
  padding-top: var(--space-4);
  border-top: var(--border-w) solid var(--color-border);
  display: flex;
  justify-content: flex-start;
}

/* 2.11.4 广告规则：表体只在 .table-scroll 滚；底栏固定可见 */
.ad-rules-page.ui-page-main,
.ad-rules-page .ad-rules-page__body {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
  height: 100%;
}
.ad-rules-page__body > .ad-rules-head {
  flex: 0 0 auto;
}
.ad-rules-page__body > .list-shell {
  flex: 1 1 auto;
  min-height: 0;
}
.ad-rules-tabs {
  margin: var(--space-3) 0 var(--space-2);
}
.ad-rules-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.ad-rules-status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--color-text-tertiary, #9ca3af);
}
.ad-rules-status.is-on .ad-rules-status-dot {
  background: var(--color-success, #0f766e);
}
.ad-rules-status.is-on {
  color: var(--color-success, #0f766e);
}
.ad-rules-list .col-actions {
  white-space: nowrap;
}
.ad-rules-list .col-actions .ui-btn-link + .ui-btn-link {
  margin-left: var(--space-3);
}
.ad-rules-digest {
  flex: 0 0 auto;
  padding: var(--space-3);
  border: 1px solid var(--color-divider);
  border-radius: var(--radius-md);
}
.ad-rules-digest__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-2);
}
.ad-rules-camps,
.ad-rules-json {
  width: 100%;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: var(--fs-caption, 12px);
}
.ad-rules-edit-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.ad-rules-page .ui-drawer-xl {
  width: min(960px, 96vw);
  max-width: 96vw;
}
.ad-rules-row-ops {
  display: flex;
  justify-content: flex-end;
}
.ad-rules-more {
  padding: var(--space-1) var(--space-2);
  min-width: 32px;
}
.ad-rules-flyout {
  position: fixed;
  z-index: 60;
  display: flex;
  flex-direction: column;
  min-width: 140px;
  padding: var(--space-2);
  background: var(--color-surface, #fff);
  border: 1px solid var(--color-divider);
  border-radius: var(--radius-md);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
}
/* 自动规则列表：表头固定 + 可排序（沿用 table.data 排序三角） */
.ad-rules-list > .table-scroll > table.data thead th {
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--color-table-header, #f5f5f5);
}
.ad-rules-flyout button {
  text-align: left;
  background: none;
  border: 0;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  cursor: pointer;
  color: var(--color-text);
  font: inherit;
}
.ad-rules-flyout button:hover {
  background: var(--color-fill-secondary, #f3f4f6);
}
.ad-rules-type-mask {
  z-index: 40;
}
.ad-rules-type-modal {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  z-index: 41;
  width: min(720px, 92vw);
  max-height: min(80vh, 640px);
  display: flex;
  flex-direction: column;
  background: var(--color-surface, #fff);
  border-radius: var(--radius-xl, 20px);
  border: 1px solid var(--color-divider);
  box-shadow: 0 16px 48px rgba(15, 23, 42, 0.18);
}
.ad-rules-type-modal__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--color-divider);
}
.ad-rules-type-modal__head h2 {
  margin: 0;
  font-size: var(--font-size-lg, 18px);
  font-weight: 600;
}
.ad-rules-type-modal__body {
  padding: var(--space-4) var(--space-5) var(--space-5);
  overflow: auto;
}
.ad-rules-type-cat {
  margin: var(--space-3) 0 var(--space-2);
  font-size: var(--font-size-sm, 13px);
  color: var(--color-text-secondary, #64748b);
  font-weight: 600;
}
.ad-rules-type-cat:first-child {
  margin-top: 0;
}
.ad-rules-type-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: var(--space-3);
}
.ad-rules-type-card {
  position: relative;
  text-align: left;
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md, 10px);
  border: 1px solid var(--color-divider);
  background: var(--color-fill-secondary, #f8fafc);
  cursor: pointer;
  font: inherit;
  color: var(--color-text);
  min-height: 88px;
}
.ad-rules-type-card.is-on {
  background: color-mix(in srgb, var(--color-primary, #5687DF) 12%, #fff);
  border-color: color-mix(in srgb, var(--color-primary, #5687DF) 45%, #fff);
}
.ad-rules-type-card.is-on:hover {
  border-color: var(--color-primary, #5687DF);
}
.ad-rules-type-card.is-disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.ad-rules-type-card h3 {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-sm, 13px);
  font-weight: 600;
}
.ad-rules-type-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
}
.ad-rules-type-card__tags span {
  font-size: 12px;
  color: var(--color-text-secondary, #64748b);
}
.ad-rules-type-card__soon {
  display: block;
  margin-top: var(--space-2);
  font-size: 12px;
  color: var(--color-text-secondary, #64748b);
}
.ad-rules-list {
  position: relative;
}
.ad-rules-steps {
  display: flex;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}
.ad-rules-steps span {
  color: var(--color-text-tertiary);
}
.ad-rules-steps span.is-on {
  color: var(--color-primary, #5687df);
  font-weight: 600;
}
.ad-xfer {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: var(--space-3);
  min-height: 360px;
}
.ad-xfer-pane {
  border: 1px solid var(--color-divider);
  border-radius: var(--radius-md);
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
.ad-xfer-pane-head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2);
  border-bottom: 1px solid var(--color-divider);
  flex: 0 0 auto;
}
.ad-xfer-pane-head .ui-input {
  flex: 1 1 auto;
  min-width: 0;
}
.ad-xfer-count {
  white-space: nowrap;
  color: var(--color-text-tertiary);
  font-size: var(--fs-caption, 12px);
}
.ad-xfer-tree {
  flex: 1 1 auto;
  overflow: auto;
  padding: var(--space-2);
  max-height: 420px;
}
.ad-xfer-arrow {
  display: flex;
  align-items: center;
  color: var(--color-text-tertiary);
  font-size: 20px;
}
.ad-xfer-group-head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  text-align: left;
  background: none;
  border: 0;
  padding: var(--space-2);
  cursor: pointer;
  font: inherit;
}
.ad-xfer-group-head.static {
  cursor: default;
  font-weight: 600;
}
.ad-xfer-item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-2) var(--space-1) var(--space-4);
  cursor: pointer;
}
.ad-xfer-item span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ad-xfer-empty,
.ad-xfer-error {
  padding: var(--space-3);
  color: var(--color-text-tertiary);
}
.ad-xfer-error {
  color: var(--color-danger, #b91c1c);
}
.ad-rules-row--program .ad-rules-status.is-readonly {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  color: var(--color-text-tertiary);
  cursor: default;
}
.ad-rules-wizard.is-readonly .ui-input,
.ad-rules-wizard.is-readonly input,
.ad-rules-wizard.is-readonly select,
.ad-rules-wizard.is-readonly textarea,
.ad-rules-camps.is-readonly .ad-xfer-item input[type="checkbox"],
.ad-rules-camps.is-readonly [data-xfer="select-all"] {
  background: var(--color-bg-muted, #f5f5f5) !important;
  color: var(--color-text-secondary);
  cursor: not-allowed;
}
.ad-rules-camps.is-readonly .ad-xfer-pane-head .ui-input {
  background: var(--color-bg-surface, #fff) !important;
  cursor: text;
  color: inherit;
}
.ad-rules-wizard .ad-auto {
  gap: var(--space-3);
}
.ad-rules-wizard .ad-auto-card {
  padding: var(--space-2) var(--space-3);
}
.ad-rules-wizard .ad-auto-card-head {
  margin-bottom: var(--space-2);
}
.ad-rules-wizard .ad-auto-sec {
  margin-bottom: var(--space-2);
}
.ad-rules-wizard .ad-xfer {
  min-height: 280px;
}
.ad-rules-wizard .ad-xfer-tree {
  max-height: 320px;
}
/* 向导内压过 uiguide .ui-select{width:100%}，条件/操作同行横排 */
.ad-rules-wizard .ad-auto-cond,
.ad-rules-wizard .ad-auto-action-row {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-2);
}
.ad-rules-wizard .ad-auto-cond > .ui-select,
.ad-rules-wizard .ad-auto-action-row > .ui-select {
  display: inline-flex;
  width: auto !important;
  flex: 0 0 auto;
}
.ad-rules-wizard .ad-auto-cond > .ui-select .ui-select-trigger,
.ad-rules-wizard .ad-auto-action-row > .ui-select .ui-select-trigger {
  width: auto;
  min-width: 72px;
  max-width: 180px;
}
.ad-rules-wizard .ad-auto-cond > .ui-select:has([data-auto="cond-scope"]) .ui-select-trigger,
.ad-rules-wizard .ad-auto-cond > .ui-select:has([data-auto="cond-vtype"]) .ui-select-trigger {
  min-width: 88px;
  max-width: 120px;
}
.ad-rules-wizard .ad-auto-cond > .ui-select:has([data-auto="cond-metric"]) .ui-select-trigger {
  min-width: 100px;
  max-width: 160px;
}
.ad-rules-wizard .ad-auto-cond > .ui-select:has([data-auto="cond-op"]) .ui-select-trigger {
  min-width: 64px;
  max-width: 88px;
}
.ad-rules-wizard .ad-auto-action-row > .ui-select:has([data-auto="act"]) .ui-select-trigger {
  min-width: 120px;
  max-width: 200px;
}
.ad-rules-wizard .ad-auto-action-row > .ui-select:has([data-auto="act-unit"]) .ui-select-trigger {
  min-width: 64px;
  max-width: 80px;
}
.ad-auto {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.ad-auto-title {
  font-weight: 600;
  margin-bottom: 0;
}
.ad-auto-label {
  font-weight: 600;
  flex: 0 0 72px;
  line-height: 32px;
  color: var(--color-text-secondary);
}
.ad-auto-card {
  border: 1px solid var(--color-divider);
  border-radius: var(--radius-md);
  padding: var(--space-3);
}
.ad-auto-card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-2);
}
.ad-auto-card-acts {
  display: flex;
  gap: var(--space-2);
}
.ad-auto-sec {
  margin-bottom: var(--space-2);
}
.ad-auto-sec--row {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
}
.ad-auto-sec--row > .ad-auto-label {
  margin: 0;
}
.ad-auto-sec-body {
  flex: 1 1 auto;
  min-width: 0;
}
/* 条件区：多行竖排；每一行内控件横排（对齐旧站） */
.ad-auto-conds {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-2);
}
.ad-auto-cond,
.ad-auto-action-row {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  min-width: 0;
  overflow-x: auto;
}
.ad-auto-action-row {
  margin: 0;
}
/* uiguide .ui-select 默认 width:100%，会把同行控件各占一整行 —— 此处强制内容宽 */
.ad-auto-cond > .ui-select,
.ad-auto-action-row > .ui-select,
.ad-auto-cond > select.ui-input,
.ad-auto-action-row > select.ui-input,
.ad-auto-cond > input.ui-input,
.ad-auto-action-row > input.ui-input {
  flex: 0 0 auto;
  width: auto !important;
  max-width: none;
  min-width: 0;
}
.ad-auto-cond > .ui-select .ui-select-trigger,
.ad-auto-action-row > .ui-select .ui-select-trigger {
  width: auto;
  min-width: 72px;
  max-width: 200px;
  white-space: nowrap;
}
.ad-auto-cond > input.ui-input,
.ad-auto-action-row > input.ui-input,
.ad-auto-cond .ad-auto-affix .ui-input,
.ad-auto-action-row .ad-auto-affix .ui-input {
  width: 88px !important;
  min-width: 64px !important;
  flex: 0 0 auto;
}
.ad-auto-val {
  width: 64px !important;
  min-width: 64px !important;
}
.ad-auto-logic {
  color: var(--color-text-tertiary);
  font-size: var(--fs-caption, 12px);
  flex: 0 0 auto;
  line-height: 32px;
  padding-left: var(--space-1);
}
.ad-auto-logic.or {
  font-weight: 600;
  color: var(--color-primary, #5687df);
  margin: var(--space-1) 0;
  padding-left: 0;
}
.ad-auto-or {
  border: 1px dashed var(--color-divider);
  border-radius: var(--radius-md);
  padding: var(--space-2);
  margin-bottom: var(--space-2);
}
.ad-auto-or-tools,
.ad-auto-footer {
  display: flex;
  gap: var(--space-2);
  margin-top: var(--space-2);
  flex-wrap: wrap;
}
.ad-auto-affix {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  flex: 0 0 auto;
  white-space: nowrap;
}
.ad-auto-affix .ui-input {
  width: 88px;
  min-width: 64px;
}
.ad-auto-check {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  white-space: nowrap;
  flex: 0 0 auto;
}
.ad-freq {
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-divider);
}
/* 店铺 / 品牌管理列表对齐 list-shell + table-scroll + table.data；下列仅表单弹层 */
.ops-brand-dialog {
  width: min(480px, calc(100vw - 32px));
}
.ops-brand-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}
.ops-brand-field-lbl {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.ops-brand-field .ui-input,
.ops-brand-field .ui-select,
.ops-brand-field .ui-select-trigger {
  width: 100%;
}
.ops-site-dialog {
  width: min(480px, calc(100vw - 32px));
}
.ops-site-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}
.ops-site-field-lbl {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.ops-site-field .ui-input,
.ops-site-field .ui-select,
.ops-site-field .ui-select-trigger {
  width: 100%;
}
.osss-form-dialog {
  width: min(480px, calc(100vw - 32px));
}
.osss-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}
.osss-field-lbl {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.osss-field .ui-input,
.osss-field .ui-select,
.osss-field .ui-select-trigger {
  width: 100%;
}
.osss-sku-row {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}
.osss-sku-box {
  flex: 1;
  min-width: 0;
}
.osss-sku-empty {
  color: var(--color-text-secondary);
  font-size: var(--fs-caption);
}
.osss-sku-picked {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.osss-sku-code {
  font-weight: 600;
}
.osss-sku-sub {
  font-size: var(--fs-caption);
  color: var(--color-text-secondary);
}
.osss-thumb {
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: var(--radius-md);
  background: var(--color-fill-subtle, #f5f5f5);
}
.osss-thumb--empty {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text-secondary);
}
/* 选 SKU：盖过 base max-width:480px；压过全局 .ui-dialog-body 的 max-height，表体吃满剩余高度 */
dialog.ui-dialog.osss-picker-dialog {
  max-width: calc(100vw - 48px);
  width: calc(100vw - 48px);
  max-height: calc(100vh - 48px);
  height: calc(100vh - 64px);
  box-sizing: border-box;
}
dialog.ui-dialog.osss-picker-dialog[open] {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
dialog.ui-dialog.osss-picker-dialog > .ui-dialog-header,
dialog.ui-dialog.osss-picker-dialog > .ui-dialog-footer {
  flex: 0 0 auto;
}
dialog.ui-dialog.osss-picker-dialog > .ui-dialog-body {
  max-height: none !important;
  overflow: hidden !important;
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
dialog.ui-dialog.osss-picker-dialog .osss-picker-filters,
dialog.ui-dialog.osss-picker-dialog .list-footer {
  flex: 0 0 auto;
}
dialog.ui-dialog.osss-picker-dialog .osss-picker-scroll {
  flex: 1 1 auto;
  min-height: 280px;
  max-height: none;
  overflow: auto;
}
.ops-store-dialog {
  width: min(480px, 92vw);
}
.ops-store-field {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-2);
  margin: 0 0 var(--space-4);
}
.ops-store-field-lbl {
  color: var(--color-text-secondary);
  font-size: var(--fs-caption);
  line-height: var(--lh-tight);
}
.ops-store-field .ui-input,
.ops-store-field .ui-select,
.ops-store-field .ui-select-trigger {
  width: 100%;
  max-width: none;
  box-sizing: border-box;
}
.ops-store-textarea {
  min-height: 72px;
  resize: vertical;
}
.ops-store-ext-title {
  margin: 0 0 var(--space-3);
  font-size: var(--fs-body);
  font-weight: var(--fw-medium);
  color: var(--color-text);
}
.ops-store-brand-pick {
  margin: 0 0 var(--space-4);
}
/* .ops-store-field 的 display:flex 会压过原生 [hidden] */
.ops-store-brand-pick[hidden] {
  display: none !important;
}
.ops-store-brand-pick .ops-store-ms {
  width: 100%;
}
.ops-store-brand-empty {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--fs-caption);
}
.ops-store-ms-menu .ui-check {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  cursor: pointer;
}
.wff {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-4);
  padding: var(--space-4);
  box-sizing: border-box;
}
.wff-range {
  margin: 0;
}
.wff-progress {
  flex: 1 1 160px;
  min-width: 120px;
  height: 8px;
}
.wff-progress[hidden] {
  display: none;
}

.stats-profit {
  overflow: auto;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-3);
}
.stats-profit-head {
  display: flex;
  align-items: center;
  align-self: stretch;
  gap: var(--space-3);
  min-width: 0;
}
.stats-profit-head > .table-bar-right {
  margin-left: auto;
}
.stats-profit-block {
  display: flex;
  flex-direction: column;
  align-self: stretch;
  gap: var(--space-3);
  min-width: 0;
}
.stats-profit-form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
}
.stats-profit-form label {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.stats-profit-cell {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: var(--space-2);
}
.stats-profit .ui-table th,
.stats-profit .ui-table td,
.stats-profit-calc-drawer .ui-table th,
.stats-profit-calc-drawer .ui-table td {
  border-right: 1px solid var(--color-divider);
}
.stats-profit-calc-drawer {
  width: min(1020px, 92vw);
}
.stats-profit-calc-drawer .ui-drawer-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.stats-profit-calc-drawer .stats-profit-tabs {
  align-self: flex-start;
  flex-shrink: 0;
}
.stats-profit-calc-drawer .stats-profit-form {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-3);
}
.stats-profit-calc-drawer .stats-profit-form-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: var(--space-3);
}
.stats-profit-calc-drawer .stats-profit-form-row:first-child {
  margin-top: var(--space-5);
}
.stats-profit-calc-drawer .stats-profit-form .ui-field {
  margin-bottom: 0;
  min-width: 0;
  flex: 1 1 0;
}
.stats-profit-calc-drawer .stats-profit-form .ui-field > .ui-label {
  display: block;
  margin-bottom: var(--space-1);
}
.stats-profit-calc-drawer [data-calc-msg]:empty {
  display: none;
}
.stats-profit-calc-drawer .stats-profit-result-block,
.stats-profit-calc-drawer .stats-profit-stage-block {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
/* 测算结果与按尺寸/按重量/按价格：同序号列宽一致 */
.stats-profit-calc-drawer .stats-profit-align-cols {
  table-layout: fixed;
  width: 100%;
}
.stats-profit-calc-drawer .stats-profit-align-cols col:nth-child(1) {
  width: 28%;
}
.stats-profit-calc-drawer .stats-profit-align-cols col:nth-child(2) {
  width: 18%;
}
.stats-profit-calc-drawer .stats-profit-align-cols col:nth-child(3) {
  width: 18%;
}
.stats-profit-calc-drawer .stats-profit-align-cols col:nth-child(4) {
  width: 36%;
}
.stats-profit-calc-drawer .stats-profit-align-cols th {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.stats-profit-calc-drawer .stats-profit-align-cols td {
  white-space: normal;
  word-break: break-word;
}
.stats-profit-calc-drawer .stats-profit-result-title,
.stats-profit-calc-drawer .stats-profit-stage-title {
  font-weight: var(--fw-bold);
}
.stats-profit-calc-drawer .stats-profit-stage-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  min-width: 0;
}
.stats-profit-calc-drawer .stats-profit-stage-tip {
  flex: 0 1 auto;
  text-align: right;
  font-weight: var(--fw-regular);
  font-size: var(--fs-body);
  color: var(--color-warning);
}
.stats-profit-calc-drawer .stats-profit-result-title {
  margin-top: var(--space-5);
}
.stats-profit-calc-drawer .stats-profit-result {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-width: 0;
}
.stats-profit-calc-drawer .stats-profit-vars {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-bg);
  font-size: var(--fs-body);
  line-height: var(--lh-normal);
  color: var(--color-text);
  white-space: normal;
  word-break: break-word;
}
.stats-profit-calc-drawer .stats-profit-vars-title {
  font-weight: var(--fw-bold);
  margin-bottom: var(--space-1);
}
.stats-profit-calc-drawer .stats-profit-var {
  min-width: 0;
}
.stats-profit-calc-drawer .stats-profit-var-formula {
  color: var(--color-text-secondary);
}
.stats-profit-calc-drawer .stats-profit-var-value {
  font-variant-numeric: tabular-nums;
  color: var(--color-numeric);
  font-weight: var(--fw-bold);
}
.stats-profit .table-bar-left {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--space-3);
  min-width: 0;
}
.stats-profit-cell .ui-input {
  width: calc(var(--space-8) * 2);
  min-width: 0;
  flex: 0 0 calc(var(--space-8) * 2);
  box-sizing: border-box;
  padding-left: var(--space-2);
  padding-right: var(--space-2);
}
.stats-profit-cell .ui-select,
.stats-profit-form .ui-select {
  width: calc(var(--space-8) * 3);
  min-width: 0;
  flex: 0 0 calc(var(--space-8) * 3);
  box-sizing: border-box;
}
.stats-profit-form .ui-input {
  width: calc(var(--space-8) * 3);
  min-width: 0;
  box-sizing: border-box;
}
.stats-profit-form .ui-input[data-sku] {
  width: calc(var(--space-8) * 5);
}
/* 抽屉测算表单：压过参数表固定宽，避免下拉按最长 option 撑破换行 */
.stats-profit-calc-drawer .stats-profit-form .ui-field > .ui-select,
.stats-profit-calc-drawer .stats-profit-form .ui-field > .ui-date {
  width: 100%;
  max-width: none;
  flex: none;
}
.stats-profit-calc-drawer .stats-profit-form .ui-select-trigger,
.stats-profit-calc-drawer .stats-profit-form .ui-date-trigger,
.stats-profit-calc-drawer .stats-profit-form .ui-field > .ui-input:not(.ui-select-native) {
  width: 100%;
  max-width: none;
  box-sizing: border-box;
}
.stats-profit-calc-drawer .stats-profit-form .ui-select-native {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
  pointer-events: none;
}
.stats-profit .ui-table thead th,
.stats-profit-calc-drawer .ui-table thead th {
  background: var(--color-table-header);
}
.stats-profit th.stats-profit-param {
  position: sticky;
  left: 0;
  z-index: 2;
  white-space: nowrap;
  background: var(--color-bg);
  box-shadow: inset -1px 0 0 var(--color-divider);
}
.stats-profit thead th.stats-profit-param {
  z-index: 3;
  background: var(--color-table-header);
}
.stats-profit-num {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-bold);
  color: var(--color-numeric);
}
.stats-profit-delta {
  margin-left: var(--space-1);
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-bold);
  color: var(--color-danger);
}
.stats-profit .ui-table th:not(.stats-profit-param) {
  text-align: center;
}
/* 2.3.11 上架全流程 */
.lf {
  display: block;
  gap: 0;
  padding: var(--space-4);
  padding-bottom: var(--space-8);
  box-sizing: border-box;
}
.lf > .lf-head,
.lf > .lf-panel {
  margin-bottom: var(--space-4);
}
.lf > .lf-panel:last-child {
  margin-bottom: 0;
}
.lf-head {
  margin: 0;
}
.lf-title {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-lg);
  font-weight: 600;
}
.lf-desc {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-sm);
}
.lf-panel {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: var(--space-4);
}
.lf-row {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.lf-field-label {
  flex: 0 0 72px;
  color: var(--color-text-secondary);
  font-size: var(--font-size-sm);
}
.lf-cat-field {
  display: flex;
  flex: 1;
  gap: var(--space-2);
  min-width: 0;
}
.lf-cat-field .ui-input {
  flex: 1;
  min-width: 0;
}
.lf-actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}
.lf-status {
  font-size: var(--font-size-sm);
  color: var(--color-text-secondary);
}
.lf-status.is-error {
  color: var(--color-danger);
}
.lf-meta {
  display: grid;
  gap: var(--space-2);
  font-size: var(--font-size-sm);
}
.lf-form-head {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.lf-form-head h3 {
  margin: 0;
  font-size: var(--font-size-md);
}
.lf-badge {
  font-size: var(--font-size-sm);
  color: var(--color-text-secondary);
}
.lf-only-req {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-sm);
}
.lf-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.lf-field {
  display: grid;
  grid-template-columns: minmax(140px, 220px) 1fr;
  gap: var(--space-3);
  align-items: start;
}
/* 仅看必填：用 class 隐藏（勿靠 [hidden]，会被 .lf-field 的 display:grid 盖掉） */
.lf-form > .lf-omit {
  display: none !important;
}
/* 布尔/二选一：横向单选，对齐领星 */
.lf-radio-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-5);
  min-height: 40px;
}
.lf-radio-group .ui-radio {
  margin: 0;
}
.lf-label-zh {
  font-size: var(--font-size-sm);
  font-weight: 500;
}
.lf-label-en {
  font-size: var(--font-size-xs);
  color: var(--color-text-secondary);
}
.lf-req {
  color: var(--color-danger);
  margin-right: var(--space-1);
}
.lf-group {
  border: 1px solid var(--color-divider);
  border-radius: var(--radius-md);
  padding: var(--space-3);
}
.lf-group-head {
  display: flex;
  gap: var(--space-2);
  align-items: baseline;
  margin-bottom: var(--space-3);
}
.lf-group-zh {
  font-weight: 600;
}
.lf-group-en {
  font-size: var(--font-size-xs);
  color: var(--color-text-secondary);
}
.lf-group-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
/* 多值：输入/选择 + 右侧「添加」（对齐领星 maxUniqueItems>1） */
.lf-multi-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  width: 100%;
}
.lf-multi-row {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
}
.lf-multi-input {
  flex: 1 1 auto;
  min-width: 0;
}
.lf-multi-input .ui-input,
.lf-multi-input .ui-select,
.lf-multi-input .ui-select-wrap {
  width: 100%;
}
.lf-multi-actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex: 0 0 auto;
  white-space: nowrap;
}
.lf-array-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--color-divider);
}
.lf-array-item:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}
.lf-array-actions {
  justify-content: flex-end;
}
.lf-multi-link {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  cursor: pointer;
  font: inherit;
  font-size: var(--font-size-sm);
  color: var(--color-primary);
  line-height: 1.4;
}
.lf-multi-link:hover {
  text-decoration: underline;
}
.lf-multi-link.lf-multi-del {
  color: var(--color-text-secondary);
}
.lf-multi-link[hidden] {
  display: none !important;
}
.lf-picker {
  width: min(1080px, 96vw);
  max-height: 80vh;
}
.lf-picker-bar {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.lf-crumb {
  font-size: var(--font-size-sm);
  color: var(--color-text-secondary);
}
.lf-picker-list {
  overflow: auto;
  max-height: 52vh;
}
.lf-cat-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-sm);
  table-layout: fixed;
}
.lf-cat-table th:nth-child(1),
.lf-cat-table td:nth-child(1) {
  width: 52%;
}
.lf-cat-table th:nth-child(2),
.lf-cat-table td:nth-child(2) {
  width: 32%;
}
.lf-cat-table th:nth-child(3),
.lf-cat-table td:nth-child(3) {
  width: 16%;
}
.lf-cat-table th,
.lf-cat-table td {
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--color-divider);
  text-align: left;
  vertical-align: middle;
}
.lf-cat-table td:nth-child(1),
.lf-cat-table td:nth-child(2) {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lf-cat-table tr:hover td {
  background: var(--color-fill-hover, rgba(86, 135, 223, 0.06));
}
.lf-cat-act.is-muted,
.lf-muted {
  color: var(--color-text-secondary);
  font-size: var(--font-size-sm);
}
.lf-muted.is-error {
  color: var(--color-danger);
}
