body.ui-v2 .jm-card {
  min-width: 0;
  margin-bottom: var(--jm-space-5);
  padding: var(--jm-space-5) var(--jm-space-6);
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-lg);
  background: var(--jm-card-bg);
  box-shadow: var(--jm-shadow-sm);
}
body.ui-v2 [hidden] { display: none !important; }

body.ui-v2 .cards > .jm-card,
body.ui-v2 .group-grid > .jm-card { margin-bottom: 0; }

body.ui-v2 .jm-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--jm-space-4);
  margin-bottom: var(--jm-space-4);
}

body.ui-v2 .jm-card-header h2 { margin: 0 0 var(--jm-space-1); }
body.ui-v2 .jm-card-header p { margin: 0; color: var(--jm-text-secondary); }

body.ui-v2 .jm-back-nav {
  position: sticky;
  top: var(--jm-header-offset, 12px);
  z-index: 30;
  display: flex;
  align-items: center;
  min-width: 0;
  min-height: 52px;
  margin: -8px 0 var(--jm-space-4);
  padding: 8px 0;
  border-bottom: 1px solid rgba(208, 217, 230, .88);
  background: rgba(245, 247, 251, .96);
  box-shadow: 0 8px 14px -14px rgba(16, 24, 40, .48);
  backdrop-filter: blur(8px);
}

body.ui-v2 .jm-back-link {
  min-width: 0;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 8px 12px;
  border: 1px solid transparent;
  border-radius: var(--jm-radius-md);
  color: var(--jm-primary);
  font-size: var(--jm-font-sm);
  font-weight: 800;
  text-decoration: none;
}

body.ui-v2 .jm-back-link:hover { border-color: var(--jm-border); background: #fff; color: var(--jm-primary-hover); }
body.ui-v2 .jm-back-link:focus-visible { outline: 3px solid rgba(20, 99, 255, .28); outline-offset: 2px; }
body.ui-v2 .jm-back-icon { flex: 0 0 auto; font-size: 18px; line-height: 1; }
body.ui-v2 .jm-back-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .jm-back-nav ~ * [id] { scroll-margin-top: 76px; }
body.ui-v2 .jm-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; overflow: hidden; margin: 0 0 var(--jm-space-4); border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: var(--jm-border); }
body.ui-v2 .jm-detail-grid > div { min-width: 0; padding: 12px 14px; background: #fff; }
body.ui-v2 .jm-detail-grid dt { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); font-weight: 700; }
body.ui-v2 .jm-detail-grid dd { margin: 5px 0 0; overflow-wrap: anywhere; font-weight: 700; }
body.ui-v2 .jm-audit-json-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--jm-space-4); margin: var(--jm-space-4) 0; }
body.ui-v2 .jm-audit-json-grid section, body.ui-v2 .jm-audit-block { min-width: 0; padding: 14px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #f8fafc; }
body.ui-v2 .jm-audit-json-grid h3, body.ui-v2 .jm-audit-block h3 { margin: 0 0 8px; font-size: var(--jm-font-sm); }
body.ui-v2 .jm-audit-json-grid pre, body.ui-v2 .jm-audit-block pre { max-height: 420px; margin: 0; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; font: 12px/1.65 Consolas, monospace; }
body.ui-v2 .jm-audit-block { margin-top: var(--jm-space-4); }
body.ui-v2 .jm-audit-block p { margin: 0; white-space: pre-wrap; }
body.ui-v2 .jm-audit-block.is-error { border-color: #fecaca; background: #fff1f2; color: #991b1b; }
body.ui-v2 .jm-muted { display: block; margin-top: 3px; color: var(--jm-text-secondary); font-size: 12px; }

body.ui-v2 .jm-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 9px 16px;
  border: 1px solid var(--jm-primary);
  border-radius: 9px;
  background: var(--jm-primary);
  color: #fff;
  text-decoration: none;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
}

body.ui-v2 .jm-btn:hover { border-color: var(--jm-primary-hover); background: var(--jm-primary-hover); }
body.ui-v2 .jm-btn-secondary { border-color: var(--jm-border-strong); background: #fff; color: var(--jm-primary); box-shadow: none; }
body.ui-v2 .jm-btn-secondary:hover { background: var(--jm-primary-soft); color: var(--jm-primary-hover); }
body.ui-v2 .jm-btn-danger { border-color: var(--jm-danger); background: var(--jm-danger); color: #fff; }
body.ui-v2 .jm-btn-warning { border-color: #d97706; background: #d97706; color: #fff; }
body.ui-v2 .jm-btn-warning:hover { border-color: #b45309; background: #b45309; color: #fff; }
body.ui-v2 .jm-btn[disabled], body.ui-v2 button[disabled] { cursor: wait; opacity: .68; }

body.ui-v2 .jm-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(220px, 1fr));
  gap: 18px 20px;
}

body.ui-v2 .jm-field,
body.ui-v2 .jm-filter-field {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 7px;
  color: #344054;
  font-weight: 800;
}

body.ui-v2 .jm-form-grid label { position: relative; }
body.ui-v2 .jm-required-indicator {
  display: inline;
  margin-left: 4px;
  color: var(--jm-danger);
  font-size: var(--jm-font-xs);
  font-weight: 800;
  line-height: inherit;
}

body.ui-v2 .jm-field > span,
body.ui-v2 .jm-filter-field > span { font-size: var(--jm-font-sm); }

body.ui-v2 .jm-field-error {
  display: block;
  margin-top: 2px;
  color: var(--jm-danger);
  font-size: var(--jm-font-xs);
  font-weight: 700;
}
body.ui-v2 input.is-invalid,
body.ui-v2 select.is-invalid,
body.ui-v2 textarea.is-invalid { border-color: var(--jm-danger); box-shadow: 0 0 0 3px var(--jm-danger-soft); }

body.ui-v2 .jm-required { color: var(--jm-danger); }
body.ui-v2 .jm-optional { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); font-weight: 500; }

body.ui-v2 .jm-form-grid input:not([type="checkbox"]):not([type="radio"]),
body.ui-v2 .jm-form-grid select,
body.ui-v2 .jm-form-grid textarea,
body.ui-v2 .jm-filter-form input,
body.ui-v2 .jm-filter-form select,
body.ui-v2 .jm-filter-panel input:not([type="checkbox"]):not([type="radio"]),
body.ui-v2 .jm-filter-panel select {
  width: 100%;
  min-height: 42px;
}

body.ui-v2 .jm-form-grid input[type="checkbox"],
body.ui-v2 .jm-form-grid input[type="radio"] {
  width: 18px;
  height: 18px;
  min-height: 18px;
  margin: 0;
}

body.ui-v2 .jm-form-grid label:has(input[type="checkbox"]),
body.ui-v2 .jm-form-grid label:has(input[type="radio"]) {
  align-self: end;
  flex-direction: row;
  align-items: center;
}

body.ui-v2 .jm-form-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: var(--jm-space-3);
  padding-top: var(--jm-space-2);
}

body.ui-v2 .jm-supplemental {
  display: grid;
  grid-template-columns: repeat(2, minmax(220px, 1fr));
  gap: var(--jm-space-4);
  margin: 0;
  padding: var(--jm-space-4);
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-md);
  background: #fafcff;
}

body.ui-v2 .jm-supplemental legend {
  padding: 0 var(--jm-space-2);
  color: #344054;
  font-weight: 800;
}

body.ui-v2 .jm-filter-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  align-items: end;
  gap: var(--jm-space-3);
  padding: 0;
  border: 0;
  background: transparent;
}

body.ui-v2 .jm-filter-actions { display: flex; gap: var(--jm-space-2); align-items: center; }

body.ui-v2 .jm-filter-panel {
  display: grid;
  gap: var(--jm-space-4);
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
}

body.ui-v2 .jm-filter-primary,
body.ui-v2 .jm-filter-extra-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: end;
  gap: var(--jm-space-3);
  min-width: 0;
}

body.ui-v2 .jm-filter-field { min-width: 0; }
body.ui-v2 .jm-filter-field > span { overflow-wrap: normal; word-break: keep-all; }

body.ui-v2 .jm-filter-extra {
  grid-column: 1 / -1;
  min-width: 0;
  padding-top: var(--jm-space-3);
  border-top: 1px dashed var(--jm-border);
}

body.ui-v2 .jm-filter-extra[hidden] { display: none; }

body.ui-v2 .jm-filter-options {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--jm-space-3) var(--jm-space-5);
  min-width: 0;
}

body.ui-v2 .jm-filter-option {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: var(--jm-space-2);
  color: #344054;
  font-size: var(--jm-font-sm);
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
}

body.ui-v2 .jm-filter-option input[type="checkbox"] {
  width: 18px;
  height: 18px;
  min-height: 18px;
  flex: 0 0 18px;
  margin: 0;
}

body.ui-v2 .jm-filter-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--jm-space-3);
  min-width: 0;
  padding-top: var(--jm-space-3);
  border-top: 1px solid var(--jm-border);
}

body.ui-v2 .jm-filter-summary {
  min-width: max-content;
  color: var(--jm-text-secondary);
  font-size: var(--jm-font-xs);
  font-weight: 700;
  white-space: nowrap;
}

body.ui-v2 .jm-filter-footer .jm-filter-actions {
  flex: 0 0 auto;
  justify-content: flex-end;
  flex-wrap: wrap;
}

body.ui-v2 .jm-filter-footer .jm-btn { white-space: nowrap; }

body.ui-v2 .jm-tabs {
  display: flex;
  gap: var(--jm-space-2);
  margin: 0 0 var(--jm-space-5);
  padding: var(--jm-space-2);
  overflow-x: auto;
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-md);
  background: var(--jm-card-bg);
  box-shadow: var(--jm-shadow-sm);
  scrollbar-width: thin;
}

body.ui-v2 .jm-tab {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  padding: 8px 14px;
  border-radius: var(--jm-radius-sm);
  color: #475467;
  text-decoration: none;
  font-weight: 800;
  white-space: nowrap;
}

body.ui-v2 .jm-tab:hover { background: var(--jm-primary-soft); color: var(--jm-primary-hover); }
body.ui-v2 .jm-tab.is-active { background: var(--jm-primary); color: #fff; }

body.ui-v2 .jm-table-wrap {
  width: 100%;
  min-width: 0;
  overflow-x: auto;
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-md);
}

body.ui-v2 .jm-table { min-width: 760px; }
body.ui-v2 .jm-table th { position: sticky; top: 0; z-index: 1; background: #f7f9fc; }
body.ui-v2 .jm-table tbody tr { transition: background .15s ease; }
body.ui-v2 .jm-table tbody tr:hover { background: #f8fbff; }
body.ui-v2 .jm-table small { margin-top: 3px; }

body.ui-v2 .jm-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 24px;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: var(--jm-font-xs);
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
}

body.ui-v2 .jm-badge-success { background: var(--jm-success-soft); color: var(--jm-success); }
body.ui-v2 .jm-badge-info, body.ui-v2 .jm-badge-ready { background: var(--jm-info-soft); color: var(--jm-info); }
body.ui-v2 .jm-badge-warning, body.ui-v2 .jm-badge-reverse { background: var(--jm-warning-soft); color: var(--jm-warning); }
body.ui-v2 .jm-badge-danger { background: var(--jm-danger-soft); color: var(--jm-danger); }
body.ui-v2 .jm-badge-void, body.ui-v2 .jm-badge-neutral { background: var(--jm-disabled-soft); color: var(--jm-text-secondary); }

body.ui-v2 .jm-empty-state {
  display: grid;
  place-items: center;
  gap: var(--jm-space-2);
  min-height: 110px;
  padding: var(--jm-space-6);
  color: var(--jm-text-secondary);
  text-align: center;
}

body.ui-v2 .jm-empty-state span { font-size: 24px; color: #b8c1cf; }
body.ui-v2 .jm-empty-state p { margin: 0; }

body.ui-v2 .jm-pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--jm-space-4);
  margin-top: var(--jm-space-4);
}

body.ui-v2 .jm-pagination-summary { color: var(--jm-text-secondary); font-size: var(--jm-font-sm); }
body.ui-v2 .jm-pagination-actions { display: flex; gap: var(--jm-space-2); }

body.ui-v2 .jm-toast-region {
  position: fixed;
  top: 18px;
  right: 20px;
  width: min(420px, calc(100vw - 32px));
  z-index: var(--jm-z-toast);
}

body.ui-v2 .jm-toast {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--jm-space-3);
  margin-bottom: var(--jm-space-2);
  padding: 13px 14px;
  border: 1px solid;
  border-radius: var(--jm-radius-md);
  background: #fff;
  box-shadow: var(--jm-shadow-md);
  font-weight: 700;
}

body.ui-v2 .jm-toast-success { border-color: #bfe8d2; color: #087443; }
body.ui-v2 .jm-toast-error { border-color: #ffd0d0; color: #b42318; }
body.ui-v2 .jm-toast button { min-height: auto; padding: 0 2px; border: 0; background: transparent; color: currentColor; box-shadow: none; font-size: 20px; }

body.ui-v2 .jm-modal[hidden] { display: none; }
body.ui-v2 .jm-modal { position: fixed; inset: 0; display: grid; place-items: center; padding: var(--jm-space-4); z-index: var(--jm-z-modal); }
body.ui-v2 .jm-modal-backdrop { position: absolute; inset: 0; background: rgba(8, 43, 95, .48); }
body.ui-v2 .jm-modal-dialog {
  position: relative;
  width: min(460px, 100%);
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--jm-space-4);
  padding: var(--jm-space-6);
  border-radius: var(--jm-radius-lg);
  background: #fff;
  box-shadow: 0 24px 72px rgba(6, 31, 73, .28);
}
body.ui-v2 .jm-modal-dialog h2 { margin: 0 0 var(--jm-space-2); }
body.ui-v2 .jm-modal-dialog p { margin: 0; color: var(--jm-text-secondary); }
body.ui-v2 .jm-modal-icon { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: var(--jm-warning-soft); color: var(--jm-warning); font-weight: 900; }
body.ui-v2 .jm-modal-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: var(--jm-space-2); margin-top: var(--jm-space-2); }
body.ui-v2 .jm-undo-receive-modal form {
  grid-column: 1 / -1;
  display: grid;
  gap: var(--jm-space-4);
}
body.ui-v2 .jm-undo-effect-list {
  display: grid;
  gap: var(--jm-space-2);
  margin: 0;
  padding: var(--jm-space-3) var(--jm-space-4);
  border-radius: var(--jm-radius-md);
  background: var(--jm-warning-soft);
  color: #7c2d12;
  list-style: none;
}
body.ui-v2 .jm-undo-effect-list li::before { content: "\2713"; margin-right: 8px; font-weight: 900; }
body.ui-v2 .jm-undo-receive-modal textarea { width: 100%; min-height: 96px; resize: vertical; }
body.ui-v2 .jm-undo-unavailable { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); }

body.ui-v2 .jm-input-compact { width: 82px; min-width: 82px; }
body.ui-v2 .jm-management-actions { display: flex; flex-wrap: wrap; gap: var(--jm-space-2); align-items: center; }
body.ui-v2 .jm-management-actions form { margin: 0; }

body.ui-v2 .jm-login-card { border: 1px solid rgba(255, 255, 255, .28); }
body.ui-v2 .jm-login-card .jm-form-field { display: flex; flex-direction: column; gap: 7px; font-weight: 800; }
body.ui-v2 .jm-login-card .jm-required { margin-left: 3px; }

@media print {
  body.ui-v2 .jm-back-nav { display: none !important; }
}

/* Phase 2: shared patterns for core business pages. */
body.ui-v2 .jm-callout {
  display: flex;
  align-items: flex-start;
  gap: var(--jm-space-3);
  margin-bottom: var(--jm-space-4);
  padding: 13px 15px;
  border: 1px solid var(--jm-info-soft);
  border-left: 4px solid var(--jm-info);
  border-radius: var(--jm-radius-md);
  background: #f5f9ff;
  color: #344054;
}
body.ui-v2 .jm-callout strong { display: block; margin-bottom: 2px; color: var(--jm-text); }
body.ui-v2 .jm-callout p { margin: 0; color: var(--jm-text-secondary); }
body.ui-v2 .jm-callout-warning { border-color: #f6d9a8; border-left-color: var(--jm-warning); background: var(--jm-warning-soft); }
body.ui-v2 .jm-callout-success { border-color: #bfe8d2; border-left-color: var(--jm-success); background: var(--jm-success-soft); }

body.ui-v2 .jm-mode-card {
  grid-column: 1 / -1;
  padding: 13px 15px;
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-md);
  background: #f8fafc;
}
body.ui-v2 .jm-mode-card[data-mode="account"] { border-left: 4px solid var(--jm-primary); background: var(--jm-primary-soft); }
body.ui-v2 .jm-mode-card[data-mode="swap"] { border-left: 4px solid var(--jm-warning); background: var(--jm-warning-soft); }
body.ui-v2 .jm-mode-card strong { display: block; margin-bottom: 3px; }
body.ui-v2 .jm-mode-card p { margin: 0; color: var(--jm-text-secondary); }

body.ui-v2 .jm-process-steps {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr));
  gap: var(--jm-space-2);
  margin: 0 0 var(--jm-space-5);
  padding: 0;
  list-style: none;
}
body.ui-v2 .jm-process-step {
  display: flex;
  align-items: center;
  gap: var(--jm-space-2);
  min-height: 46px;
  padding: 9px 12px;
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-md);
  background: #fff;
  color: var(--jm-text-secondary);
  font-size: var(--jm-font-sm);
  font-weight: 800;
}
body.ui-v2 .jm-process-index { display: grid; width: 26px; height: 26px; flex: 0 0 26px; place-items: center; border-radius: 50%; background: var(--jm-disabled-soft); }
body.ui-v2 .jm-process-step.is-current { border-color: #9fc0ff; background: var(--jm-primary-soft); color: var(--jm-primary); }
body.ui-v2 .jm-process-step.is-current .jm-process-index { background: var(--jm-primary); color: #fff; }
body.ui-v2 .jm-process-step.is-complete { color: var(--jm-success); }
body.ui-v2 .jm-process-step.is-complete .jm-process-index { background: var(--jm-success-soft); }

body.ui-v2 .jm-metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(135px, 1fr)); gap: var(--jm-space-3); margin-bottom: var(--jm-space-5); }
body.ui-v2 .jm-metric-card { min-width: 0; padding: 15px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #fff; box-shadow: var(--jm-shadow-sm); }
body.ui-v2 .jm-metric-card > span { display: block; color: var(--jm-text-secondary); font-size: var(--jm-font-xs); font-weight: 800; }
body.ui-v2 .jm-metric-card strong { display: block; margin-top: 6px; color: var(--jm-text); font-size: 24px; line-height: 1.1; }
body.ui-v2 .jm-metric-card small { display: block; margin-top: 5px; color: var(--jm-text-secondary); }
body.ui-v2 .jm-metric-danger { border-color: #ffd0d0; }
body.ui-v2 .jm-metric-danger strong { color: var(--jm-danger); }
body.ui-v2 .jm-metric-warning { border-color: #f6d9a8; }
body.ui-v2 .jm-metric-warning strong { color: var(--jm-warning); }
body.ui-v2 .jm-metric-success strong { color: var(--jm-success); }

body.ui-v2 .jm-more-filters { grid-column: 1 / -1; }
body.ui-v2 .jm-more-filters[hidden] { display: none; }
body.ui-v2 .jm-more-filter-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); align-items: end; gap: var(--jm-space-3); padding-top: var(--jm-space-3); border-top: 1px dashed var(--jm-border); }
body.ui-v2 .jm-filter-toggle { border-color: transparent; background: transparent; color: var(--jm-primary); }

body.ui-v2 .jm-quick-filters { display: flex; flex-wrap: wrap; gap: var(--jm-space-2); margin: 0 0 var(--jm-space-4); }
body.ui-v2 .jm-filter-chip { min-height: 34px; padding: 7px 12px; border: 1px solid var(--jm-border-strong); border-radius: 999px; background: #fff; color: var(--jm-text-secondary); font-weight: 800; cursor: pointer; }
body.ui-v2 .jm-filter-chip.is-active { border-color: var(--jm-primary); background: var(--jm-primary-soft); color: var(--jm-primary); }
body.ui-v2 .jm-row-error { background: #fff5f5; }
body.ui-v2 .jm-row-warning { background: #fffbeb; }
body.ui-v2 .jm-row-duplicate { background: #f8fafc; color: var(--jm-text-secondary); }
body.ui-v2 .jm-import-actions { position: sticky; bottom: 0; z-index: 3; display: flex; justify-content: flex-end; gap: var(--jm-space-2); margin: var(--jm-space-4) 0 0; padding: 13px 0 2px; border-top: 1px solid var(--jm-border); background: rgba(255,255,255,.96); }

body.ui-v2 .jm-qty { text-align: right; font-variant-numeric: tabular-nums; font-weight: 800; }
body.ui-v2 .jm-negative { color: var(--jm-danger); }
body.ui-v2 .jm-dispatch-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: var(--jm-space-3); margin-bottom: var(--jm-space-4); padding: var(--jm-space-4); border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #f8fafc; }
body.ui-v2 .jm-dispatch-summary span { color: var(--jm-text-secondary); }
body.ui-v2 .jm-dispatch-summary b { color: var(--jm-text); }

body.ui-v2 .jm-more-menu { position: relative; display: inline-block; }
body.ui-v2 .jm-more-menu summary { list-style: none; cursor: pointer; color: var(--jm-primary); font-weight: 800; }
body.ui-v2 .jm-more-menu summary::-webkit-details-marker { display: none; }
body.ui-v2 .jm-more-menu[open] > div { position: absolute; right: 0; z-index: 4; width: min(320px, 70vw); padding: 12px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #fff; box-shadow: var(--jm-shadow-md); }
body.ui-v2 .jm-more-menu form { display: grid; gap: var(--jm-space-2); margin-top: var(--jm-space-2); }
body.ui-v2 .jm-factory-import-page .jm-table { min-width: 1680px; }
body.ui-v2 .jm-hefei-shanghai-import-page .jm-table { min-width: 1380px; }
body.ui-v2 .jm-transaction-list-page .jm-table { min-width: 1180px; }
body.ui-v2 .jm-shanghai-receive-page .jm-table { min-width: 1060px; }
body.ui-v2 .jm-inventory-query-page .jm-table { min-width: 920px; }

body.ui-v2 .jm-mobile-only { display: none !important; }
body.ui-v2 .jm-mobile-list { gap: var(--jm-space-3); }
body.ui-v2 .jm-mobile-card {
  min-width: 0;
  padding: 15px;
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-md);
  background: #fff;
  box-shadow: var(--jm-shadow-sm);
}
body.ui-v2 .jm-mobile-card.is-void { color: var(--jm-text-secondary); background: var(--jm-disabled-soft); text-decoration: line-through; }
body.ui-v2 .jm-mobile-card.is-reverse { border-color: #f6d9a8; background: var(--jm-warning-soft); }
body.ui-v2 .jm-mobile-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--jm-space-3); margin-bottom: var(--jm-space-3); }
body.ui-v2 .jm-mobile-card-header h3 { margin: 0; font-size: 16px; line-height: 1.35; }
body.ui-v2 .jm-mobile-card-header small { display: block; margin-top: 4px; color: var(--jm-text-secondary); }
body.ui-v2 .jm-mobile-quantity { color: var(--jm-primary); font-size: 26px; font-weight: 900; line-height: 1; font-variant-numeric: tabular-nums; white-space: nowrap; }
body.ui-v2 .jm-mobile-quantity.jm-negative { color: var(--jm-danger); }
body.ui-v2 .jm-mobile-kv { display: grid; grid-template-columns: minmax(88px, .7fr) minmax(0, 1.3fr); gap: 8px 12px; margin: 0; }
body.ui-v2 .jm-mobile-kv dt { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); font-weight: 800; }
body.ui-v2 .jm-mobile-kv dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
body.ui-v2 .jm-mobile-card-actions { display: flex; align-items: center; justify-content: space-between; gap: var(--jm-space-2); margin-top: var(--jm-space-4); padding-top: var(--jm-space-3); border-top: 1px solid var(--jm-border); }
body.ui-v2 .jm-mobile-card details { margin-top: var(--jm-space-3); }
body.ui-v2 .jm-mobile-card details > summary { min-height: 44px; display: flex; align-items: center; color: var(--jm-primary); font-weight: 800; cursor: pointer; }

body.ui-v2 .jm-supplemental-details { grid-column: 1 / -1; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #fafcff; }
body.ui-v2 .jm-supplemental-details > summary { min-height: 44px; display: flex; align-items: center; padding: 0 var(--jm-space-4); color: #344054; font-weight: 900; cursor: pointer; }
body.ui-v2 .jm-supplemental-details > .jm-supplemental { border: 0; border-top: 1px solid var(--jm-border); border-radius: 0 0 var(--jm-radius-md) var(--jm-radius-md); }
body.ui-v2 .jm-filter-count { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); font-weight: 700; }

body.ui-v2 .jm-touch-table td[data-label]::before { content: none; }
body.ui-v2 .jm-stocktake-diff-live { font-weight: 900; font-variant-numeric: tabular-nums; }
body.ui-v2 .jm-damage-action-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--jm-space-4); }
body.ui-v2 .jm-damage-action-grid .subpanel { min-width: 0; margin: 0; align-content: start; }

/* Dashboard专项：只使用现有数据，压缩信息密度并移除嵌套长表格。 */
body.ui-v2 .jm-dashboard-v2 { display: grid; gap: var(--jm-space-5); }
body.ui-v2 .jm-dashboard-v2 .jm-dashboard-section { min-width: 0; margin: 0; }
body.ui-v2 .jm-dashboard-meta { display: flex; align-items: center; justify-content: flex-end; gap: var(--jm-space-3); min-height: 40px; color: var(--jm-text-secondary); font-size: var(--jm-font-sm); }
body.ui-v2 .jm-dashboard-meta .jm-btn { min-height: 36px; padding: 7px 13px; }
body.ui-v2 .jm-section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--jm-space-4); margin-bottom: var(--jm-space-3); }
body.ui-v2 .jm-section-heading h2 { margin: 0 0 4px; font-size: 18px; }
body.ui-v2 .jm-section-heading p { margin: 0; color: var(--jm-text-secondary); }
body.ui-v2 .jm-section-heading > a, body.ui-v2 .jm-view-all { color: var(--jm-primary); font-weight: 800; text-decoration: none; white-space: nowrap; }

body.ui-v2 .jm-todo-priority-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--jm-space-3); }
body.ui-v2 .jm-todo-priority { min-width: 0; display: grid; gap: 5px; padding: 14px 15px; border: 1px solid #cfe0ff; border-left: 4px solid var(--jm-info); border-radius: var(--jm-radius-md); background: #f7faff; color: var(--jm-text); text-decoration: none; }
body.ui-v2 .jm-todo-priority.is-warning { border-color: #f6d9a8; border-left-color: var(--jm-warning); background: #fffbf3; }
body.ui-v2 .jm-todo-priority:hover { box-shadow: var(--jm-shadow-sm); transform: translateY(-1px); }
body.ui-v2 .jm-todo-label { color: #344054; font-weight: 900; }
body.ui-v2 .jm-todo-priority strong { color: var(--jm-primary); font-size: 24px; line-height: 1.15; font-variant-numeric: tabular-nums; }
body.ui-v2 .jm-todo-priority.is-warning strong { color: var(--jm-warning); }
body.ui-v2 .jm-todo-priority strong small { display: inline; color: inherit; font-size: 13px; font-weight: 800; }
body.ui-v2 .jm-todo-priority > small { color: var(--jm-text-secondary); }
body.ui-v2 .jm-all-clear { grid-column: 1 / -1; display: flex; align-items: center; gap: var(--jm-space-3); padding: 14px; border: 1px solid #bfe8d2; border-radius: var(--jm-radius-md); background: var(--jm-success-soft); color: var(--jm-success); }
body.ui-v2 .jm-zero-todos { margin-top: var(--jm-space-3); padding-top: var(--jm-space-3); border-top: 1px solid var(--jm-border); color: var(--jm-text-secondary); }
body.ui-v2 .jm-zero-todos > summary { min-height: 40px; display: flex; align-items: center; cursor: pointer; font-weight: 800; }
body.ui-v2 .jm-zero-todos > div { display: flex; flex-wrap: wrap; gap: 8px; padding-top: 8px; }
body.ui-v2 .jm-zero-todos a { display: inline-flex; gap: 8px; padding: 7px 10px; border-radius: 999px; background: var(--jm-disabled-soft); color: var(--jm-text-secondary); text-decoration: none; }

body.ui-v2 .jm-core-stock-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--jm-space-3); }
body.ui-v2 .jm-core-stock-card { min-width: 0; display: grid; gap: 7px; padding: 15px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #fff; color: var(--jm-text); box-shadow: var(--jm-shadow-sm); text-decoration: none; }
body.ui-v2 .jm-core-stock-card > span { color: var(--jm-text-secondary); font-weight: 800; }
body.ui-v2 .jm-core-stock-card > strong { font-size: 27px; line-height: 1.05; font-variant-numeric: tabular-nums; }
body.ui-v2 .jm-core-stock-card > strong small { color: var(--jm-text-secondary); font-size: 13px; }
body.ui-v2 .jm-core-stock-card > div { display: flex; flex-wrap: wrap; gap: 5px 9px; color: var(--jm-text-secondary); }
body.ui-v2 .jm-core-stock-card > em { margin-top: auto; color: var(--jm-primary); font-size: 12px; font-style: normal; font-weight: 800; }
body.ui-v2 .jm-core-stock-card.is-state-pool { background: #fbfcfe; }

body.ui-v2 .jm-asset-ledger-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--jm-space-4); }
body.ui-v2 .jm-asset-ledger-card { min-width: 0; padding: 16px 18px; border: 1px solid var(--jm-border); border-top: 3px solid var(--jm-primary); border-radius: var(--jm-radius-md); background: #fff; box-shadow: var(--jm-shadow-sm); }
body.ui-v2 .jm-asset-card-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
body.ui-v2 .jm-asset-card-title h3 { margin: 0; font-size: 17px; }
body.ui-v2 .jm-asset-card-title span { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); }
body.ui-v2 .jm-asset-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 14px; }
body.ui-v2 .jm-asset-metrics > div { min-width: 0; padding-top: 8px; border-top: 1px solid var(--jm-border); }
body.ui-v2 .jm-asset-metrics span { display: block; color: var(--jm-text-secondary); font-size: var(--jm-font-xs); }
body.ui-v2 .jm-asset-metrics strong { display: block; margin-top: 3px; font-size: 19px; line-height: 1.2; font-variant-numeric: tabular-nums; white-space: nowrap; }
body.ui-v2 .jm-asset-metrics strong small { display: inline; color: var(--jm-text-secondary); font-size: 11px; }
body.ui-v2 .jm-asset-note, body.ui-v2 .jm-ledger-note { margin: 10px 0 0; color: var(--jm-text-secondary); font-size: var(--jm-font-xs); }
body.ui-v2 .jm-asset-note { padding: 8px 10px; border-radius: var(--jm-radius-sm); background: var(--jm-warning-soft); color: #8a5200; }

body.ui-v2 .jm-dashboard-header-actions { display: flex; flex-wrap: wrap; gap: 8px; }
body.ui-v2 .jm-zero-switch { min-height: 40px; display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border: 1px solid var(--jm-border-strong); border-radius: 9px; background: #fff; color: #344054; font-size: 13px; font-weight: 800; cursor: pointer; }
body.ui-v2 .jm-zero-switch input { position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; }
body.ui-v2 .jm-zero-switch > span { position: relative; width: 30px; height: 18px; flex: 0 0 30px; border-radius: 999px; background: #d0d5dd; transition: background .18s ease; }
body.ui-v2 .jm-zero-switch > span::after { content: ""; position: absolute; top: 3px; left: 3px; width: 12px; height: 12px; border-radius: 50%; background: #fff; transition: transform .18s ease; }
body.ui-v2 .jm-zero-switch input:checked + span { background: var(--jm-primary); }
body.ui-v2 .jm-zero-switch input:checked + span::after { transform: translateX(12px); }
body.ui-v2 .jm-zero-switch input:focus-visible + span { outline: 3px solid rgba(20, 99, 255, .22); outline-offset: 2px; }
body.ui-v2 .jm-zero-switch b { font: inherit; }
body.ui-v2 .jm-location-summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--jm-space-4); }
body.ui-v2 .jm-location-summary-card { min-width: 0; padding: 15px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #fff; }
body.ui-v2 .jm-location-summary-card.is-empty { padding-bottom: 12px; background: #fafbfc; }
body.ui-v2 .jm-location-summary-card.is-state-pool { border-style: dashed; background: #fbfcfe; }
body.ui-v2 .jm-location-kind { display: inline-flex; margin-bottom: 4px; padding: 2px 7px; border-radius: 999px; background: var(--jm-primary-soft); color: var(--jm-primary); font-size: 11px; font-weight: 900; }
body.ui-v2 .jm-location-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
body.ui-v2 .jm-location-card-header h3 { margin: 0 0 4px; font-size: 16px; }
body.ui-v2 .jm-location-card-header span { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); }
body.ui-v2 .jm-location-card-header > strong { color: var(--jm-primary); font-size: 23px; white-space: nowrap; font-variant-numeric: tabular-nums; }
body.ui-v2 .jm-location-card-header > strong small { color: var(--jm-text-secondary); font-size: 12px; }
body.ui-v2 .jm-location-preview { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
body.ui-v2 .jm-location-preview li { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(90px, .8fr) auto; align-items: center; gap: 8px; min-height: 38px; border-top: 1px solid var(--jm-border); }
body.ui-v2 .jm-location-preview li > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .jm-location-preview li > span:nth-child(2) { color: var(--jm-text-secondary); }
body.ui-v2 .jm-location-preview strong { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
body.ui-v2 .jm-location-empty { padding: 13px; border-radius: var(--jm-radius-sm); background: var(--jm-disabled-soft); color: var(--jm-text-secondary); text-align: center; }
body.ui-v2 .jm-location-summary-card .jm-view-all { display: inline-flex; margin-top: 10px; }
body.ui-v2 .jm-shanghai-empty { margin-top: 10px; border-top: 1px solid var(--jm-border); }
body.ui-v2 .jm-shanghai-empty > summary { min-height: 40px; display: flex; align-items: center; color: var(--jm-primary); font-weight: 800; cursor: pointer; }
body.ui-v2 .jm-shanghai-empty > div { display: flex; flex-wrap: wrap; gap: 7px; }
body.ui-v2 .jm-shanghai-empty span { padding: 6px 8px; border-radius: var(--jm-radius-sm); background: var(--jm-primary-soft); color: #344054; font-size: var(--jm-font-xs); }

body.ui-v2 .jm-factory-balance-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--jm-space-3); }
body.ui-v2 .jm-factory-balance-card { min-width: 0; border: 1px solid #f6d9a8; border-radius: var(--jm-radius-md); background: #fffdf8; overflow: hidden; }
body.ui-v2 .jm-factory-balance-card.is-zero { border-color: var(--jm-border); background: var(--jm-disabled-soft); }
body.ui-v2 .jm-factory-balance-card > summary { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; cursor: pointer; }
body.ui-v2 .jm-factory-balance-card h3 { margin: 0 0 3px; font-size: 16px; }
body.ui-v2 .jm-factory-balance-card summary span { color: var(--jm-warning); font-size: var(--jm-font-xs); }
body.ui-v2 .jm-factory-balance-card summary b { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); white-space: nowrap; }
body.ui-v2 .jm-factory-balance-lines { display: grid; gap: 8px; padding: 0 14px 13px; }
body.ui-v2 .jm-factory-balance-lines > div { display: grid; grid-template-columns: minmax(90px, .75fr) minmax(0, 1.25fr); gap: 3px 10px; padding-top: 9px; border-top: 1px solid #f6e5c6; }
body.ui-v2 .jm-factory-balance-lines strong { text-align: right; }
body.ui-v2 .jm-factory-balance-lines small { grid-column: 1 / -1; color: var(--jm-text-secondary); text-align: right; }

body.ui-v2 .jm-quick-entry-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--jm-space-3); }
body.ui-v2 .jm-quick-entry { min-height: 56px; display: flex; align-items: center; gap: 10px; padding: 11px 13px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #fff; color: #344054; text-decoration: none; }
body.ui-v2 .jm-quick-entry:hover { border-color: #9fc0ff; background: var(--jm-primary-soft); color: var(--jm-primary); }
body.ui-v2 .jm-quick-entry.is-primary { border-color: var(--jm-primary); background: var(--jm-primary); color: #fff; }
body.ui-v2 .jm-quick-entry-icon { width: 30px; height: 30px; display: grid; place-items: center; flex: 0 0 30px; border-radius: 9px; background: var(--jm-primary-soft); color: var(--jm-primary); font-weight: 900; }
body.ui-v2 .jm-quick-entry.is-primary .jm-quick-entry-icon { background: rgba(255,255,255,.18); color: #fff; }

/* UI review refinements: business forms, pallet lines and upload surfaces. */
body.ui-v2 .jm-core-transaction-page > .jm-card > .jm-form-grid,
body.ui-v2 .jm-factory-import-page > .jm-card > .jm-form-grid {
  width: min(100%, 980px);
}

body.ui-v2 .jm-flow-summary {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 40px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding: 13px 16px;
  border: 1px solid #cfe0ff;
  border-radius: var(--jm-radius-md);
  background: #f7faff;
}
body.ui-v2 .jm-flow-summary > span { min-width: 0; color: #344054; font-weight: 900; }
body.ui-v2 .jm-flow-summary > span:last-child { text-align: right; }
body.ui-v2 .jm-flow-arrow { display: grid; place-items: center; color: var(--jm-primary); font-size: 20px; font-weight: 900; }

body.ui-v2 .jm-pallet-lines {
  position: relative;
  display: grid;
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-md);
  background: #fbfdff;
}
body.ui-v2 .jm-pallet-lines > h3 { margin: 0 0 2px; font-size: 16px; }
body.ui-v2 .jm-pallet-line {
  position: relative;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  padding: 38px 12px 12px;
  border: 1px solid var(--jm-border);
  border-radius: var(--jm-radius-md);
  background: #fff;
}
body.ui-v2 .jm-pallet-line-title { position: absolute; top: 11px; left: 12px; color: #344054; font-size: var(--jm-font-sm); font-weight: 900; }
body.ui-v2 .jm-line-remove {
  position: absolute;
  top: 7px;
  right: 8px;
  width: auto !important;
  min-width: 36px;
  min-height: 32px !important;
  padding: 5px 9px !important;
  border: 1px solid #f3a6a6 !important;
  border-radius: 8px;
  background: #fff !important;
  color: var(--jm-danger) !important;
  font-size: 13px !important;
  line-height: 1 !important;
}
body.ui-v2 .jm-line-remove:hover { border-color: var(--jm-danger) !important; background: var(--jm-danger-soft) !important; }
body.ui-v2 .jm-number-control { position: relative; display: block; }
body.ui-v2 .jm-number-control input { padding-right: 38px; }
body.ui-v2 .jm-number-control > small { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: var(--jm-text-secondary); font-weight: 800; pointer-events: none; }

body.ui-v2 .jm-swap-preview {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  padding: 14px 16px;
  border: 1px solid #f6d9a8;
  border-radius: var(--jm-radius-md);
  background: #fffbf3;
}
body.ui-v2 .jm-swap-preview > strong { grid-column: 1 / -1; }
body.ui-v2 .jm-swap-preview div { display: grid; gap: 3px; color: var(--jm-text-secondary); font-size: var(--jm-font-xs); }
body.ui-v2 .jm-swap-preview b { color: #344054; font-size: 17px; }

body.ui-v2 .jm-inline-error { grid-column: 1 / -1; margin: 0; color: var(--jm-danger); font-size: var(--jm-font-sm); font-weight: 800; }

body.ui-v2 .jm-upload-zone {
  grid-column: 1 / -1;
  position: relative;
  min-height: 150px;
  display: grid;
  place-items: center;
  gap: 6px;
  padding: 24px;
  border: 2px dashed #afc9f5;
  border-radius: var(--jm-radius-lg);
  background: #f8fbff;
  text-align: center;
  cursor: pointer;
}
body.ui-v2 .jm-upload-zone:hover, body.ui-v2 .jm-upload-zone.has-file { border-color: var(--jm-primary); background: var(--jm-primary-soft); }
body.ui-v2 .jm-upload-zone input[type="file"] { position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; }
body.ui-v2 .jm-upload-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px; background: #fff; color: var(--jm-primary); font-size: 24px; box-shadow: var(--jm-shadow-sm); }
body.ui-v2 .jm-upload-zone strong { color: #344054; }
body.ui-v2 .jm-upload-zone small { color: var(--jm-text-secondary); }
body.ui-v2 .jm-upload-file-name { color: var(--jm-primary); font-weight: 900; }
body.ui-v2 .jm-import-help-links { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 10px; }
body.ui-v2 .jm-import-help-links a[aria-disabled="true"] { opacity: .55; pointer-events: none; }
body.ui-v2 .jm-advanced-settings { grid-column: 1 / -1; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #fafcff; }
body.ui-v2 .jm-advanced-settings > summary { min-height: 44px; display: flex; align-items: center; padding: 0 14px; color: #344054; font-weight: 900; cursor: pointer; }
body.ui-v2 .jm-advanced-settings-grid { display: grid; grid-template-columns: repeat(2, minmax(220px, 1fr)); gap: 16px; padding: 16px; border-top: 1px solid var(--jm-border); }
body.ui-v2 .jm-import-instruction-list { display: grid; gap: 7px; margin: 8px 0 0; padding-left: 20px; color: var(--jm-text-secondary); }

body.ui-v2 .jm-result-summary { margin-left: auto; color: var(--jm-text-secondary); font-size: var(--jm-font-sm); font-weight: 800; }
body.ui-v2 .jm-result-count { align-self: center; padding: 6px 10px; border-radius: 999px; background: var(--jm-primary-soft); color: var(--jm-primary); font-size: 13px; white-space: nowrap; }
body.ui-v2 .jm-shanghai-receive-page .jm-filter-actions { grid-column: 1 / -1; justify-content: flex-end; }
body.ui-v2 .jm-filter-context { margin: 10px 0 14px; color: var(--jm-text-secondary); font-size: var(--jm-font-sm); }
body.ui-v2 .jm-detail-line { display: block; }
body.ui-v2 .jm-table thead th { position: sticky; top: 0; z-index: 1; }
body.ui-v2 .jm-id-stack { display: grid; gap: 2px; }
body.ui-v2 .jm-id-stack strong { color: #344054; }
body.ui-v2 .jm-id-stack small { color: var(--jm-text-secondary); font-size: 11px; }

body.ui-v2 .jm-sidebar { scrollbar-width: thin; scrollbar-color: rgba(168,195,232,.55) transparent; }
body.ui-v2 .jm-sidebar::-webkit-scrollbar { width: 6px; }
body.ui-v2 .jm-sidebar::-webkit-scrollbar-thumb { border-radius: 999px; background: rgba(168,195,232,.5); }
body.ui-v2 .jm-sidebar .nav-label { color: #a9c4e8; }
body.ui-v2 .jm-more-actions { margin-top: 12px; }
body.ui-v2 .jm-more-actions > summary { min-height: 42px; display: inline-flex; align-items: center; color: var(--jm-primary); font-weight: 800; cursor: pointer; }
body.ui-v2 .jm-more-actions > div { display: flex; flex-wrap: wrap; gap: 8px; }
body.ui-v2 .jm-more-actions a { padding: 8px 11px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-sm); color: #344054; text-decoration: none; }
body.ui-v2 .is-negative { color: var(--jm-danger) !important; }
body.ui-v2 .jm-receipt-resolution { display: grid; gap: 10px; margin: 0; padding: 14px 16px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #f8fbff; }
body.ui-v2 .jm-receipt-resolution legend { padding: 0 6px; font-weight: 800; color: var(--jm-text-primary); }
body.ui-v2 .jm-receipt-resolution label { display: flex; align-items: flex-start; gap: 8px; min-height: 32px; cursor: pointer; }
body.ui-v2 .jm-receipt-resolution input[type="radio"] { width: 18px; height: 18px; margin-top: 2px; flex: 0 0 auto; }
body.ui-v2 .jm-receipt-resolution .jm-field-help { margin: 0; color: var(--jm-text-secondary); font-size: var(--jm-font-sm); }

/* 正式切换期初库存：沿用现有卡片、上传和状态组件，仅补充安全检查布局。 */
body.ui-v2 .jm-opening-balance-page { display: grid; gap: var(--jm-space-5); }
body.ui-v2 .jm-precondition-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
body.ui-v2 .jm-precondition-item { min-width: 0; display: flex; align-items: flex-start; gap: 10px; padding: 12px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-md); background: #fff; }
body.ui-v2 .jm-precondition-item > span { width: 26px; height: 26px; display: grid; place-items: center; flex: 0 0 26px; border-radius: 50%; font-weight: 900; }
body.ui-v2 .jm-precondition-item > div { min-width: 0; display: grid; gap: 3px; }
body.ui-v2 .jm-precondition-item small { color: var(--jm-text-secondary); overflow-wrap: anywhere; }
body.ui-v2 .jm-precondition-item.is-passed > span { background: var(--jm-success-soft); color: var(--jm-success); }
body.ui-v2 .jm-precondition-item.is-failed { border-color: #f3b7b2; background: #fff8f7; }
body.ui-v2 .jm-precondition-item.is-failed > span { background: var(--jm-danger-soft); color: var(--jm-danger); }
body.ui-v2 .jm-precondition-item.is-advisory { border-color: #f6d9a8; background: var(--jm-warning-soft); }
body.ui-v2 .jm-precondition-item.is-advisory > span { background: #fff; color: var(--jm-warning); }
body.ui-v2 .jm-opening-advisories { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--jm-border); }
body.ui-v2 .jm-opening-advisories h3 { margin: 0 0 4px; font-size: var(--jm-font-size-md); }
body.ui-v2 .jm-opening-advisories > p { margin: 0 0 10px; color: var(--jm-text-secondary); }
body.ui-v2 .jm-opening-meta { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 0 0 16px; }
body.ui-v2 .jm-opening-meta > div { min-width: 0; padding: 11px; border: 1px solid var(--jm-border); border-radius: var(--jm-radius-sm); background: #fafcff; }
body.ui-v2 .jm-opening-meta dt { color: var(--jm-text-secondary); font-size: var(--jm-font-xs); }
body.ui-v2 .jm-opening-meta dd { margin: 4px 0 0; color: #344054; font-weight: 900; overflow-wrap: anywhere; }
body.ui-v2 .jm-callout-danger { border-color: #f3b7b2 !important; background: var(--jm-danger-soft) !important; color: #8d211a; }
body.ui-v2 .jm-opening-success { border-color: #bfe8d2; background: var(--jm-success-soft); color: #17643a; }
body.ui-v2 .jm-opening-confirm .jm-btn-warning { min-width: 190px; }

@media (max-width: 768px) {
  body.ui-v2 .jm-precondition-grid, body.ui-v2 .jm-opening-meta { grid-template-columns: 1fr; }
  body.ui-v2 .jm-opening-balance-page .jm-card-header { align-items: stretch; }
  body.ui-v2 .jm-opening-balance-page .jm-card-header > .jm-btn { width: 100%; }
}
