/*
 * V148 · 页面控件纠错收口层
 * 依据 Vercel Web Interface Guidelines 与现有前端设计审核清单：
 * 统一焦点、弹层、表格、模态框、长文本和低动效行为。
 * 本文件必须放在全部历史主题样式之后加载。
 */

:root {
  --ui-focus-ring: 0 0 0 3px rgba(68, 92, 230, .22);
  --ui-control-border: #cbd7e6;
  --ui-popover-shadow: 0 22px 54px rgba(27, 45, 72, .22);
}

:where(button, a, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid #5266e8 !important;
  outline-offset: 2px !important;
  box-shadow: var(--ui-focus-ring) !important;
}

:where(button, summary, select, input[type="checkbox"], input[type="radio"], a.small-button) {
  touch-action: manipulation;
}

:where(button, input, select, textarea) {
  font: inherit;
}

:where(button, .small-button, .primary-button, .ghost-button)[disabled] {
  cursor: not-allowed;
  opacity: .52;
}

.view-root,
.panel,
.panel-header,
.toolbar,
.catalog-commandbar,
.catalog-filter-row,
.store-catalog-filter-row,
.catalog-product-summary,
.store-product-summary,
.topbar-actions {
  min-width: 0;
}

.view-root :where(.hint, .muted, td, th, strong, span, p) {
  overflow-wrap: anywhere;
}

/* 筛选弹层统一脱离表格层叠上下文，避免数据少时按钮被表头或面板裁掉。 */
.catalog-category-popover.catalog-floating-popover,
.catalog-price-filter-popover.catalog-floating-popover {
  position: fixed !important;
  top: var(--catalog-popover-top) !important;
  right: auto !important;
  bottom: auto !important;
  left: var(--catalog-popover-left) !important;
  z-index: 7000 !important;
  box-sizing: border-box !important;
  width: var(--catalog-popover-width, 320px) !important;
  max-width: calc(100vw - 24px) !important;
  max-height: var(--catalog-popover-max-height, calc(100dvh - 24px)) !important;
  margin: 0 !important;
  transform: none !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  border: 1px solid var(--ui-control-border) !important;
  background: #fff !important;
  color: #22334d !important;
  box-shadow: var(--ui-popover-shadow) !important;
}

.catalog-category-popover.catalog-floating-popover {
  display: grid !important;
  grid-template-rows: auto minmax(0, 1fr) auto;
}

.catalog-category-popover.catalog-floating-popover .catalog-category-options {
  min-height: 0 !important;
  max-height: min(300px, calc(var(--catalog-popover-max-height, 420px) - 116px)) !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
}

.catalog-price-filter-popover.catalog-floating-popover {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  grid-auto-rows: max-content;
}

.catalog-price-filter-popover.catalog-floating-popover .catalog-price-range-inputs {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  gap: 8px !important;
}

.catalog-price-filter-popover.catalog-floating-popover .catalog-price-range-inputs > i {
  display: none !important;
}

.catalog-price-filter-popover.catalog-floating-popover :where(input, select) {
  box-sizing: border-box;
  width: 100% !important;
  min-width: 0 !important;
  height: 36px !important;
  color: #22334d !important;
  background: #fbfdff !important;
  border-color: var(--ui-control-border) !important;
}

.catalog-category-actions,
.catalog-price-filter-actions {
  position: sticky !important;
  bottom: 0 !important;
  z-index: 3 !important;
  margin-top: 8px !important;
  padding: 10px 0 2px !important;
  background: #fff !important;
  border-top: 1px solid #e8edf4 !important;
}

/* 表格要稳：标题固定、数字对齐、长内容不挤坏其他列。 */
.erp-master-table .table-wrap {
  position: relative;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

.erp-master-table thead th {
  position: sticky;
  top: 0;
  z-index: 6;
}

.erp-master-table :where(td, th),
.catalog-price-cell,
.catalog-upc,
.store-stock-value {
  font-variant-numeric: tabular-nums;
}

.catalog-product-copy,
.store-product-summary,
.supplier-cell {
  min-width: 0;
}

.catalog-product-copy > :where(strong, span),
.store-product-summary > :where(strong, span),
.supplier-cell {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.catalog-product-thumb img {
  display: block;
  width: 44px;
  height: 44px;
  object-fit: contain;
}

/* 模态框由外层固定、内容区滚动，页头和操作按钮始终可见。 */
.modal-root {
  overscroll-behavior: contain;
}

body.modal-open {
  overflow: hidden !important;
}

.modal {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  max-height: calc(100dvh - 32px) !important;
  overflow: hidden !important;
  overscroll-behavior: contain;
}

.modal-body {
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
}

.modal-header,
.modal-footer {
  position: relative;
  z-index: 2;
}

/* 送达提醒停靠右下角，不压住页头、筛选栏和下一页按钮。 */
.delivery-reminder-root {
  top: auto !important;
  right: 18px !important;
  bottom: 76px !important;
  max-height: min(520px, calc(100dvh - 116px)) !important;
}

.toast {
  pointer-events: none;
}

.toast :where(button, a) {
  pointer-events: auto;
}

.view-loading-state {
  min-height: 180px;
}

@media (max-width: 980px) {
  .topbar-actions {
    flex-wrap: wrap;
  }

  .catalog-category-popover.catalog-floating-popover,
  .catalog-price-filter-popover.catalog-floating-popover {
    width: min(360px, calc(100vw - 24px)) !important;
  }
}

@media (max-width: 680px) {
  .catalog-category-popover.catalog-floating-popover,
  .catalog-price-filter-popover.catalog-floating-popover {
    right: 12px !important;
    left: 12px !important;
    width: auto !important;
  }

  .delivery-reminder-root {
    right: 12px !important;
    bottom: 68px !important;
    width: calc(100vw - 24px) !important;
  }

  .modal-root {
    padding: 8px !important;
  }

  .modal {
    max-height: calc(100dvh - 16px) !important;
    border-radius: 14px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
