:root {
  --navy: #092b55;
  --navy-2: #0f3d73;
  --blue: #1d6ff2;
  --blue-soft: #edf5ff;
  --line: #dbe3ef;
  --muted: #66758a;
  --text: #172033;
  --surface: #ffffff;
  --page: #f4f7fb;
  --green: #15975d;
  --green-soft: #e9f8ef;
  --amber: #f3a21b;
  --amber-soft: #fff6df;
  --red: #e04f4f;
  --red-soft: #fff0f0;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--page);
  color: var(--text);
  font-family: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 14px;
  letter-spacing: 0;
}

.login-screen {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 18px;
  padding: 24px;
  background:
    radial-gradient(circle at 18% 14%, rgba(29, 111, 242, 0.12), transparent 32%),
    linear-gradient(180deg, #f7faff 0%, #edf3fb 100%);
}

.login-screen[hidden] {
  display: none;
}

.login-panel {
  display: grid;
  width: min(460px, 100%);
  gap: 12px;
  border: 1px solid rgba(75, 104, 150, 0.16);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 24px 54px rgba(15, 42, 83, 0.14);
  color: var(--text);
  padding: 26px;
}

.login-brand {
  display: grid;
  gap: 6px;
}

.login-brand-mark {
  width: 58px;
  height: 58px;
  margin-bottom: 4px;
  font-size: 22px;
}

.login-brand h1 {
  margin: 0;
  color: #172033;
  font-size: 28px;
  line-height: 1.18;
}

.login-brand p {
  margin: 0;
  color: #66758a;
  line-height: 1.6;
}

.login-brand .login-hint {
  color: var(--blue);
  font-weight: 800;
}

.login-tabs {
  display: grid;
  margin: 4px 0 2px;
  border: 1px solid #d7e3f5;
  border-radius: 8px;
  background: #edf5ff;
  padding: 4px;
}

.login-tab {
  min-height: 38px;
  border: 0;
  border-radius: 6px;
  background: white;
  color: var(--blue);
  font-weight: 800;
}

.login-panel label {
  display: grid;
  gap: 6px;
  color: #66758a;
  font-size: 14px;
  font-weight: 700;
}

.login-panel input {
  width: 100%;
  min-height: 44px;
  border: 1px solid #cfd9e8;
  border-radius: 6px;
  background: white;
  color: var(--text);
  padding: 10px 12px;
}

.login-panel input:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(29, 111, 242, 0.12);
  outline: none;
}

.login-error {
  min-height: 18px;
  margin: 0;
  color: var(--red);
  font-size: 13px;
}

.login-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  color: #8a97aa;
  font-size: 14px;
}

.login-links a,
.login-footer a {
  color: var(--blue);
  font-weight: 700;
  text-decoration: none;
}

.login-footnote {
  margin: 2px 0 0;
  color: #8a97aa;
  font-size: 13px;
  text-align: center;
}

.login-footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 12px;
  color: #8a97aa;
  font-size: 12px;
  line-height: 1.5;
  text-align: center;
}

.app-shell.is-locked {
  filter: blur(3px);
  pointer-events: none;
  user-select: none;
}

button,
input,
select {
  font: inherit;
}

button {
  cursor: pointer;
}

.app-shell {
  display: grid;
  grid-template-columns: 148px minmax(0, 1fr);
  min-height: 100vh;
}

.sidebar {
  display: flex;
  flex-direction: column;
  background: linear-gradient(180deg, #0c335f 0%, #123e6b 42%, #173f68 100%);
  color: #dceafe;
}

.brand {
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: 8px;
  align-items: center;
  min-height: 64px;
  padding: 12px 10px;
}

.brand-mark {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  background: linear-gradient(145deg, #e9f2ff, #2d7dff);
  color: #0b3567;
  font-weight: 800;
}

.brand strong {
  display: block;
  overflow: hidden;
  color: #fff;
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.brand span:last-child {
  display: block;
  margin-top: 2px;
  color: #a9c2dd;
  font-size: 11px;
}

.nav-list {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 1px;
  padding: 8px 0;
}

.nav-item,
.nav-group,
.nav-sub {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 34px;
  border: 0;
  background: transparent;
  color: #dceafe;
  padding: 0 12px;
  text-align: left;
}

.nav-item svg,
.nav-group svg {
  width: 15px;
  height: 15px;
}

.nav-item.is-active {
  background: rgba(255, 255, 255, 0.13);
  border-left: 3px solid #66a3ff;
  color: #fff;
  padding-left: 9px;
}

.nav-sub {
  min-height: 28px;
  color: #c1d4ea;
  font-size: 12px;
  padding-left: 34px;
}

.nav-group svg:last-child {
  margin-left: auto;
  transition: transform 0.16s ease;
}

.nav-group.is-collapsed svg:last-child {
  transform: rotate(-90deg);
}

.nav-sub.is-collapsed {
  display: none;
}

.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  margin-left: auto;
  border-radius: 999px;
  color: white;
  font-size: 11px;
}

.badge.red {
  background: #ef4444;
}

.badge.amber {
  background: #f59e0b;
}

.today-card {
  margin: 10px;
  padding: 10px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
}

.today-title,
.today-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: #b9d1ea;
  font-size: 12px;
}

.today-title svg {
  width: 14px;
}

.today-card strong {
  display: block;
  margin: 8px 0;
  color: #fff;
  font-size: 22px;
}

.today-card small {
  margin-left: 4px;
  color: #c7d8ea;
  font-size: 12px;
  font-weight: 500;
}

.progress {
  overflow: hidden;
  height: 6px;
  border-radius: 99px;
  background: rgba(255, 255, 255, 0.18);
}

.progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: #43d17a;
}

.workspace {
  min-width: 0;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 56px;
  border-bottom: 1px solid var(--line);
  background: white;
  overflow: hidden;
}

.tabs {
  display: flex;
  align-items: stretch;
  height: 100%;
  overflow-x: auto;
}

.tab {
  flex: 0 0 auto;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: #26364b;
  padding: 0 15px;
}

.tab.is-active {
  border-bottom-color: var(--blue);
  color: var(--blue);
  font-weight: 700;
}

.top-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-right: 14px;
}

.icon-text,
.icon-btn,
.user-chip,
.link-btn,
.primary-light,
.ghost,
.primary,
.doc-actions button,
.more-filter,
.search-row button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 32px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
  color: #27364a;
  padding: 0 10px;
}

svg {
  width: 16px;
  height: 16px;
}

.icon-btn {
  position: relative;
  width: 32px;
  padding: 0;
}

.dot {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 16px;
  height: 16px;
  border-radius: 999px;
  background: #ef4444;
  color: #fff;
  font-size: 10px;
  line-height: 16px;
}

.toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 18px;
  min-height: 46px;
  padding: 0 16px;
  background: #fff;
}

.summary-wrap {
  display: flex;
  flex: 1;
  align-items: center;
  flex-wrap: wrap;
  min-width: 0;
  gap: 10px;
}

.summary-line {
  flex: 1 1 360px;
  min-width: 0;
  color: #4d5b70;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.summary-line span {
  display: inline-block;
  width: 1px;
  height: 12px;
  margin: 0 8px;
  background: var(--line);
  vertical-align: -2px;
}

.toolbar-actions {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.erp-sync-badge {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 5px;
  min-height: 24px;
  max-width: 320px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #f8fbff;
  color: #4d5b70;
  padding: 0 9px;
  font-size: 12px;
  font-weight: 600;
}

.erp-sync-badge svg,
.erp-contract-strip svg,
.erp-go-nogo-strip svg,
.production-release-strip svg,
.release-evidence-strip svg,
.release-approval-strip svg,
.preflight-strip svg,
.confirmation-strip svg {
  width: 14px;
  height: 14px;
}

.erp-sync-badge span,
.erp-contract-strip span,
.erp-go-nogo-strip span,
.production-release-strip span,
.release-evidence-strip span,
.release-approval-strip span,
.preflight-strip span,
.confirmation-strip span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.erp-sync-badge.is-ok,
.erp-contract-strip.is-ok,
.erp-go-nogo-strip.is-ok,
.production-release-strip.is-ok,
.release-evidence-strip.is-ok,
.release-approval-strip.is-ok,
.preflight-strip.is-ok,
.confirmation-strip.is-ok {
  border-color: #b9e7cd;
  background: var(--green-soft);
  color: var(--green);
}

.erp-sync-badge.is-warning,
.erp-contract-strip.is-warning,
.erp-go-nogo-strip.is-warning,
.production-release-strip.is-warning,
.release-evidence-strip.is-warning,
.release-approval-strip.is-warning,
.preflight-strip.is-warning,
.confirmation-strip.is-warning {
  border-color: #f3d28a;
  background: var(--amber-soft);
  color: #956100;
}

.erp-sync-badge.is-error,
.erp-contract-strip.is-error,
.erp-go-nogo-strip.is-error,
.production-release-strip.is-error,
.release-evidence-strip.is-error,
.release-approval-strip.is-error,
.preflight-strip.is-error,
.confirmation-strip.is-error {
  border-color: #f2b6b6;
  background: var(--red-soft);
  color: var(--red);
}

.erp-contract-strip,
.erp-go-nogo-strip,
.production-release-strip,
.release-evidence-strip,
.release-approval-strip,
.preflight-strip,
.confirmation-strip {
  display: inline-flex;
  flex: 0 1 auto;
  align-items: center;
  gap: 5px;
  min-height: 24px;
  max-width: 300px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #f8fbff;
  color: #4d5b70;
  padding: 0 9px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

.erp-contract-strip:focus-visible,
.erp-go-nogo-strip:focus-visible,
.production-release-strip:focus-visible,
.release-approval-strip:focus-visible,
.preflight-strip:focus-visible,
.confirmation-strip:focus-visible {
  outline: 2px solid rgba(42, 111, 211, 0.4);
  outline-offset: 2px;
}

.link-btn {
  border-color: transparent;
  color: var(--blue);
}

.primary-light {
  border-color: #c8daf8;
  background: #f4f8ff;
  color: #1b5fc7;
}

.pipeline {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 0;
  margin: 0 16px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: white;
}

.stage {
  position: relative;
  min-height: 94px;
  border: 0;
  padding: 16px 18px;
  border-right: 1px solid var(--line);
  border-radius: 0;
  background: white;
  text-align: left;
}

.stage:last-child {
  border-right: 0;
}

.stage.is-active {
  outline: 2px solid var(--blue);
  outline-offset: -2px;
  background: #f8fbff;
}

.stage::after {
  content: "";
  position: absolute;
  top: 36px;
  right: -9px;
  width: 18px;
  height: 18px;
  border-top: 1px solid var(--line);
  border-right: 1px solid var(--line);
  background: white;
  transform: rotate(45deg);
  z-index: 2;
}

.stage:last-child::after {
  display: none;
}

.stage.is-active::after {
  border-color: var(--blue);
  background: #f8fbff;
}

.stage span {
  color: #4c5b70;
  font-weight: 600;
}

.stage strong {
  display: block;
  margin-top: 4px;
  color: var(--blue);
  font-size: 24px;
}

.stage small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
}

.main-grid {
  display: grid;
  grid-template-columns: 31% 34% 35%;
  gap: 10px;
  margin: 0 16px 12px;
}

.queue-panel,
.preview-panel,
.match-panel,
.package-panel {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: white;
}

.queue-panel,
.preview-panel,
.match-panel {
  min-height: 616px;
}

.panel-head,
.right-tabs {
  min-height: 44px;
  border-bottom: 1px solid var(--line);
  padding: 0 12px;
}

.filter-tabs,
.right-tabs {
  display: flex;
  align-items: center;
  gap: 16px;
}

.mini-tab,
.right-tabs button,
.detail-tabs button {
  min-height: 38px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: #4b5a70;
}

.mini-tab.is-active,
.right-tabs button.is-active,
.detail-tabs button.is-active {
  border-bottom-color: var(--blue);
  color: var(--blue);
  font-weight: 700;
}

.mini-tab span {
  display: inline-flex;
  justify-content: center;
  min-width: 18px;
  margin-left: 3px;
  border-radius: 999px;
  background: #e7f0ff;
  color: var(--blue);
  font-size: 12px;
}

.filters {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 8px;
  padding: 10px;
}

select,
.search-row input {
  height: 34px;
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: white;
  color: #2b394d;
  padding: 0 10px;
}

.more-filter {
  white-space: nowrap;
}

.search-row {
  display: grid;
  grid-template-columns: 28px 1fr 34px;
  align-items: center;
  margin: 0 10px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
}

.search-row svg {
  margin-left: 9px;
  color: #8995a6;
}

.search-row input {
  border: 0;
  outline: 0;
}

.search-row button {
  border: 0;
  width: 34px;
  padding: 0;
}

.queue-sort {
  padding: 0 12px 8px;
  color: #56677c;
  font-size: 12px;
}

.invoice-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 0 10px 12px;
}

.invoice-empty-state {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  margin: 12px 0;
  border: 1px dashed #c8d5e8;
  border-radius: 8px;
  background: #f8fbff;
  padding: 18px;
  color: #4b5c74;
}

.invoice-empty-state strong {
  color: #1f2f46;
  font-size: 15px;
}

.invoice-empty-state span {
  font-size: 13px;
  line-height: 1.5;
}

.invoice-empty-state button {
  border: 1px solid #c8daf8;
  border-radius: 6px;
  background: #fff;
  color: #1b5fc7;
  cursor: pointer;
  font-weight: 800;
  min-height: 32px;
  padding: 0 12px;
}

.invoice-row {
  display: grid;
  grid-template-columns: 52px 1fr auto;
  gap: 10px;
  align-items: center;
  min-height: 72px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: #fff;
  padding: 8px;
  cursor: pointer;
  text-align: left;
}

.invoice-row:hover,
.invoice-row.is-selected {
  border-color: #8bb9ff;
  background: #f7fbff;
}

.thumb {
  position: relative;
  overflow: hidden;
  width: 48px;
  height: 58px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: #f8fafc;
}

.thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.8;
}

.file-tag {
  position: absolute;
  bottom: 2px;
  left: 2px;
  border-radius: 3px;
  background: rgba(15, 35, 60, 0.84);
  color: white;
  font-size: 10px;
  padding: 1px 4px;
}

.invoice-main strong {
  display: block;
  color: #1d2a3d;
  font-size: 13px;
}

.invoice-main span {
  display: block;
  margin-top: 3px;
  color: #65758a;
  font-size: 12px;
}

.invoice-main .tags {
  display: flex;
  gap: 5px;
  margin-top: 5px;
}

.pill,
.status {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  border-radius: 999px;
  padding: 0 7px;
  font-size: 12px;
  font-weight: 600;
}

.red-soft {
  background: var(--red-soft);
  color: var(--red);
}

.amber-soft {
  background: var(--amber-soft);
  color: #ad7200;
}

.green-soft {
  background: var(--green-soft);
  color: var(--green);
}

.invoice-amount {
  text-align: right;
}

.invoice-amount strong {
  display: block;
  font-size: 13px;
}

.invoice-amount span {
  color: #7a8798;
  font-size: 12px;
}

.doc-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 56px;
  border-bottom: 1px solid var(--line);
  padding: 0 12px;
}

.doc-head > div:first-child {
  min-width: 0;
}

.doc-head h1 {
  display: inline;
  margin: 0 8px 0 0;
  font-size: 16px;
  overflow-wrap: anywhere;
}

.doc-actions {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: nowrap;
  gap: 5px;
}

.doc-actions button {
  justify-content: center;
  min-width: 66px;
  min-height: 32px;
  padding: 0 7px;
  line-height: 1;
  white-space: nowrap;
}

.doc-actions button svg {
  flex: 0 0 auto;
}

.doc-actions #rerunBtn {
  min-width: 78px;
}

.doc-actions #downloadOriginalBtn,
.doc-actions #moreInvoiceBtn {
  min-width: 58px;
}

.doc-actions #markMissingOriginalBtn {
  min-width: 86px;
}

.viewer {
  margin: 12px;
  border: 1px solid #152334;
  border-radius: 6px;
  background: #1d2a3b;
}

.viewer-tools {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  height: 38px;
  color: #e7eef7;
}

.viewer-tools button {
  border: 0;
  background: transparent;
  color: inherit;
}

.viewer img,
.viewer object,
.viewer iframe {
  display: block;
  width: 100%;
  height: min(58vh, 560px);
  min-height: 360px;
  object-fit: contain;
  border-top: 1px solid #334256;
  background: #ffffff;
}

.invoice-preview {
  border-top: 1px solid #334256;
  background: #ffffff;
}

.invoice-preview .viewer-empty {
  display: grid;
  place-items: center;
  gap: 8px;
  min-height: 360px;
  padding: 24px;
  color: #5f7188;
  text-align: center;
}

.invoice-preview .viewer-empty strong {
  color: #20304a;
  font-size: 18px;
}

.invoice-preview-file {
  border: 0;
}

.viewer-open-original {
  display: flex;
  justify-content: flex-end;
  border-top: 1px solid #e1e7f0;
  background: #f7f9fc;
  padding: 6px 10px;
  font-size: 12px;
}

.detail-tabs {
  display: flex;
  gap: 16px;
  border-bottom: 1px solid var(--line);
  padding: 0 12px;
}

.ocr-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 16px;
  padding: 12px;
}

.ocr-item {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  min-height: 24px;
  color: #59697d;
}

.ocr-item strong {
  color: #1e2c3d;
  font-weight: 600;
  text-align: right;
}

.detail-grid {
  grid-template-columns: 1fr 1fr;
}

.detail-block {
  min-height: 48px;
  border: 1px solid #e6edf7;
  border-radius: 6px;
  background: #fbfdff;
  padding: 8px 10px;
}

.detail-block span {
  display: block;
  color: #6b7b90;
  font-size: 12px;
}

.detail-block strong {
  display: block;
  margin-top: 4px;
  color: #1f2d3f;
  font-size: 13px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.detail-wide {
  grid-column: 1 / -1;
}

.warning-strip {
  display: grid;
  grid-template-columns: 20px 1fr auto;
  align-items: center;
  gap: 8px;
  margin: 0 12px 12px;
  border: 1px solid #ffd58a;
  border-radius: 6px;
  background: #fff8e9;
  color: #906100;
  padding: 9px 10px;
}

.warning-strip button {
  border: 1px solid #bcd4ff;
  border-radius: 5px;
  background: #f7fbff;
  color: var(--blue);
  padding: 5px 10px;
}

.right-tabs .help-link {
  margin-left: auto;
  font-size: 12px;
}

.suggestion-card {
  margin: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdff;
}

.suggestion-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 38px;
  border-bottom: 1px solid var(--line);
  padding: 0 12px;
}

.suggestion-title span {
  font-weight: 700;
}

.suggestion-title strong {
  border-radius: 999px;
  background: var(--green-soft);
  color: var(--green);
  font-size: 12px;
  padding: 2px 8px;
}

.big-field {
  padding: 12px;
  color: #1e2d3f;
  font-size: 15px;
  font-weight: 700;
}

.po-table {
  display: grid;
  gap: 0;
  padding: 0 10px 8px;
}

.po-row {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) 76px 92px 52px;
  align-items: center;
  min-height: 38px;
  border-bottom: 1px solid #e8edf5;
  gap: 8px;
}

.po-row input {
  width: 14px;
  height: 14px;
}

.po-row .po-amount-input {
  width: 100%;
  height: 28px;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: #fff;
  color: #2a3950;
  font-size: 12px;
  text-align: right;
  padding: 0 6px;
}

.po-row strong {
  color: #2a3950;
}

.po-row strong em {
  display: block;
  margin-top: 3px;
  color: #6a7890;
  font-size: 11px;
  font-style: normal;
  font-weight: 500;
  line-height: 1.35;
}

.po-row span {
  color: #596b80;
  font-size: 12px;
}

.confidence {
  justify-self: end;
  border-radius: 999px;
  background: var(--green-soft);
  color: var(--green);
  font-size: 12px;
  padding: 2px 7px;
}

.amount-line {
  display: flex;
  justify-content: space-between;
  border-top: 1px solid var(--line);
  padding: 8px 10px;
  color: #59687d;
  font-size: 12px;
}

.explain-list {
  display: grid;
  gap: 6px;
  padding: 10px;
}

.explain-factor {
  display: grid;
  grid-template-columns: 56px 34px 1fr;
  align-items: center;
  gap: 8px;
  min-height: 30px;
  border: 1px solid #e4ebf5;
  border-radius: 6px;
  background: white;
  padding: 5px 8px;
}

.explain-factor span {
  color: #34465d;
  font-weight: 700;
}

.explain-factor strong {
  justify-self: end;
  color: var(--blue);
}

.explain-factor em,
.explain-empty span {
  color: #65758a;
  font-size: 12px;
  font-style: normal;
}

.explain-empty {
  display: grid;
  gap: 4px;
  border: 1px solid #f0d7a4;
  border-radius: 6px;
  background: #fffaf0;
  padding: 10px;
}

.memory-list {
  margin: 0;
  padding: 10px 18px 12px 28px;
  color: #57687c;
}

.memory-list li {
  margin-bottom: 6px;
}

.risk-box {
  margin: 10px;
  border: 1px solid #f5d8a7;
  border-radius: 8px;
  background: #fffaf0;
  padding: 10px;
}

.risk-box strong {
  display: block;
  margin-bottom: 8px;
}

.risk-item {
  display: flex;
  gap: 8px;
  margin-top: 6px;
  color: #76520e;
  font-size: 13px;
}

.advance-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 12px 10px 0;
  color: #4b5c74;
  font-size: 13px;
  font-weight: 700;
}

.advance-toggle input {
  width: 16px;
  height: 16px;
  accent-color: var(--blue);
}

.action-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(98px, 1fr));
  gap: 8px;
  margin: 14px 10px 10px;
}

.doc-actions #markMissingOriginalBtn {
  color: #9a5a00;
}

[data-confirm-reset="true"] {
  border-color: #e16464;
  background: #fff1f1;
  color: #b42318;
}

.recognition-runs strong {
  align-items: flex-start;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.recognition-runs b {
  color: #22314a;
}

.recognition-runs small {
  color: #64748b;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.45;
}

.log-export-block button {
  margin-top: 10px;
  border: 1px solid #c8daf8;
  border-radius: 6px;
  background: #fff;
  color: #1b5fc7;
  cursor: pointer;
  font-weight: 800;
  min-height: 32px;
  padding: 0 12px;
}

.ghost {
  background: #fff;
}

.primary {
  border-color: var(--blue);
  background: var(--blue);
  color: #fff;
}

.package-panel {
  margin: 0 16px 16px;
}

.package-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 58px;
  padding: 0 14px;
}

.package-title h2 {
  margin: 0;
  font-size: 16px;
}

.package-title h2 span {
  margin-left: 6px;
  color: #8793a4;
  font-size: 12px;
  font-weight: 500;
}

.package-title > div {
  display: flex;
  gap: 8px;
}

.package-flow {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  border-top: 1px solid var(--line);
}

.package-step {
  display: grid;
  grid-template-columns: 36px 1fr;
  gap: 8px;
  align-items: center;
  min-height: 80px;
  border-right: 1px solid var(--line);
  padding: 10px;
}

.package-step:last-child {
  border-right: 0;
}

.step-icon {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 8px;
  background: var(--blue-soft);
  color: var(--blue);
}

.package-step strong {
  display: block;
}

.package-step span {
  display: block;
  margin-top: 2px;
  color: #69788c;
  font-size: 12px;
}

.package-readiness {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 2fr;
  gap: 14px;
  align-items: center;
  border-top: 1px solid var(--line);
  padding: 12px 14px;
  background: #f8fbff;
}

.package-readiness.is-ready {
  background: var(--green-soft);
}

.package-readiness.is-review {
  background: var(--amber-soft);
}

.package-readiness strong {
  display: block;
  color: #172238;
}

.package-readiness span {
  display: block;
  margin-top: 3px;
  color: #5f7188;
  font-size: 12px;
}

.package-readiness-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
}

.package-readiness-actions button {
  min-height: 30px;
  border-color: rgba(47, 111, 237, 0.22);
  background: rgba(255, 255, 255, 0.75);
  padding: 0 10px;
  color: var(--blue);
}

.package-readiness dl {
  display: grid;
  grid-template-columns: repeat(4, minmax(92px, 1fr));
  gap: 8px;
  margin: 0;
}

.package-readiness dl div {
  border: 1px solid rgba(47, 111, 237, 0.14);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.7);
  padding: 8px;
}

.package-readiness dt,
.package-readiness dd {
  margin: 0;
}

.package-readiness dt {
  color: #69788c;
  font-size: 12px;
}

.package-readiness dd {
  margin-top: 2px;
  color: #172238;
  font-weight: 700;
}

.exception-review-table td:first-child span {
  display: block;
  margin-top: 3px;
  color: #69788c;
  font-size: 12px;
}

.toast {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 20;
  transform: translateY(90px);
  opacity: 0;
  transition: transform 0.2s ease, opacity 0.2s ease;
  border-radius: 8px;
  background: #182538;
  color: white;
  padding: 10px 14px;
  box-shadow: 0 12px 30px rgba(13, 27, 48, 0.18);
}

.toast.is-visible {
  transform: translateY(0);
  opacity: 1;
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  display: none;
  place-items: center;
  z-index: 30;
  background: rgba(10, 25, 44, 0.34);
}

.modal-backdrop.is-open {
  display: grid;
}

.modal {
  width: min(980px, calc(100vw - 32px));
  max-height: calc(100vh - 48px);
  overflow: hidden;
  border-radius: 8px;
  background: white;
  box-shadow: 0 22px 80px rgba(13, 27, 48, 0.28);
}

.modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--line);
  padding: 12px 16px;
}

.modal-head h3 {
  margin: 0;
}

.modal-head button {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 0;
  border-radius: 6px;
  background: #f4f6f9;
}

.modal-body {
  overflow: auto;
  max-height: calc(100vh - 112px);
  padding: 16px;
}

.modal-table {
  width: 100%;
  border-collapse: collapse;
}

.modal-table th,
.modal-table td {
  border-bottom: 1px solid var(--line);
  padding: 10px;
  text-align: left;
  vertical-align: top;
}

.modal-table td span {
  display: block;
  margin-top: 4px;
  color: #6b7a8f;
  font-size: 12px;
}

.modal-table.is-focused {
  outline: 2px solid var(--blue);
  outline-offset: 3px;
  background: #f6f9ff;
}

.modal-search-row {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto auto;
  gap: 8px;
  margin-bottom: 12px;
}

.modal-search-input {
  width: 100%;
  min-height: 36px;
  border: 1px solid #cfd9e8;
  border-radius: 6px;
  background: white;
  color: var(--text);
  padding: 0 12px;
}

.modal-search-input:focus {
  border-color: var(--blue);
  outline: 2px solid rgba(29, 111, 242, 0.14);
}

.permission-chip-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 8px;
}

.permission-check {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  border: 1px solid #dbe3ef;
  border-radius: 6px;
  background: #f8fbff;
  padding: 8px 10px;
  color: #42526b;
  font-weight: 700;
}

.permission-check input {
  width: 16px;
  height: 16px;
  accent-color: var(--blue);
}

.permission-check:has(input:checked) {
  border-color: #b9d4ff;
  background: #edf5ff;
  color: #17406f;
}

.permission-check:has(input:disabled) {
  opacity: 0.72;
}

.release-owner-list {
  display: grid;
  gap: 8px;
  margin-top: 8px;
}

.release-owner-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 10px 0 8px;
}

.owner-filter-btn,
.owner-task-filter-btn {
  min-height: 30px;
  border: 1px solid #cfe0fa;
  border-radius: 7px;
  background: #f6f9ff;
  color: var(--blue);
  padding: 0 10px;
  font-weight: 700;
  cursor: pointer;
}

.owner-filter-btn.is-active,
.owner-task-filter-btn.is-active {
  background: var(--blue);
  border-color: var(--blue);
  color: #fff;
}

.owner-filter-divider {
  width: 1px;
  min-height: 30px;
  background: var(--line);
}

.release-owner-filter-note {
  width: fit-content;
  max-width: 100%;
  margin-bottom: 8px;
  border: 1px solid #cfe0fa;
  border-radius: 7px;
  background: #f6f9ff;
  color: #5f7188;
  padding: 7px 10px;
  font-size: 12px;
  font-weight: 700;
}

.release-owner-detail {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdff;
  overflow: hidden;
}

.release-owner-detail summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 42px;
  padding: 10px 12px;
  cursor: pointer;
}

.release-owner-detail summary strong {
  color: var(--ink);
}

.release-owner-detail summary span {
  color: #5f7188;
  font-size: 12px;
}

.release-owner-task-table {
  background: #fff;
}

.copy-command-btn {
  min-height: 24px;
  margin-left: 6px;
  border: 1px solid #cfe0fa;
  border-radius: 6px;
  background: #f6f9ff;
  color: var(--blue);
  padding: 0 7px;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.modal-row-jump {
  display: block;
  width: max-content;
  min-height: 26px;
  margin-top: 6px;
  border: 1px solid #cfe0fa;
  border-radius: 6px;
  background: #f6f9ff;
  color: var(--blue);
  padding: 0 8px;
  font-size: 12px;
  font-weight: 700;
}

.mapping-summary {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  border: 1px solid #cfe0fa;
  border-radius: 8px;
  background: #f6f9ff;
  padding: 12px;
}

.mapping-summary strong {
  color: var(--blue);
  font-size: 24px;
}

.mapping-summary span {
  color: #465a73;
}

.queue-summary {
  align-items: flex-start;
  flex-wrap: wrap;
}

.queue-tabs {
  display: flex;
  flex: 1 1 100%;
  flex-wrap: wrap;
  gap: 6px;
}

.queue-tab {
  min-height: 28px;
  border: 1px solid #cfe0fa;
  border-radius: 999px;
  background: white;
  color: #38516e;
  padding: 0 10px;
  font-size: 12px;
}

.queue-tab.is-active {
  border-color: var(--blue);
  background: var(--blue-soft);
  color: var(--blue);
  font-weight: 700;
}

.mapping-table th:nth-child(1) {
  width: 25%;
}

.mapping-table th:nth-child(2) {
  width: 28%;
}

.mapping-table th:nth-child(5) {
  width: 22%;
}

.mapping-select {
  width: 100%;
}

.queue-action {
  width: 120px;
}

.mapping-check {
  width: 16px;
  height: 16px;
}

.modal-actions {
  position: sticky;
  bottom: -16px;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin: 12px -16px -16px;
  border-top: 1px solid var(--line);
  background: white;
  padding: 12px 16px;
}

.preflight-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(86px, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.quick-summary {
  grid-template-columns: repeat(5, minmax(86px, 1fr));
}

.preflight-summary div {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fbff;
  padding: 10px;
}

.preflight-summary strong {
  display: block;
  color: var(--blue);
  font-size: 24px;
}

.preflight-summary span,
.preflight-summary p {
  color: #5f7188;
  font-size: 12px;
}

.preflight-summary p {
  grid-column: 1 / -1;
  margin: 0;
  border: 1px solid #cfe0fa;
  border-radius: 8px;
  background: #f6f9ff;
  padding: 10px;
}

.preflight-table th:nth-child(1) {
  width: 24%;
}

.preflight-table th:nth-child(2) {
  width: 84px;
}

.preflight-table th:nth-child(4) {
  width: 30%;
}

.confirmation-preview-table {
  margin-top: 12px;
}

.confirmation-preview-table th:nth-child(3) {
  width: 48%;
}

.erp-contract-summary div:last-of-type strong {
  font-size: 18px;
}

.erp-contract-table {
  margin-top: 12px;
}

.erp-gate-summary div:first-child strong {
  font-size: 16px;
}

.erp-gate-table {
  margin-top: 12px;
}

.erp-gate-table td:first-child span {
  display: block;
  margin-top: 4px;
  color: #5f7188;
  font-size: 12px;
}

.preflight-empty {
  border: 1px solid #cfe0fa;
  border-radius: 8px;
  background: #f6f9ff;
  padding: 14px;
}

.preflight-empty strong,
.preflight-empty span {
  display: block;
}

.preflight-empty span {
  margin-top: 4px;
  color: #5f7188;
}

@media (max-width: 1100px) {
  .app-shell {
    grid-template-columns: 44px minmax(0, 1fr);
  }

  .brand div,
  .nav-item:not(.is-active),
  .nav-sub,
  .nav-group,
  .today-card {
    display: none;
  }

  .nav-item.is-active {
    justify-content: center;
    padding: 0;
  }

  .topbar {
    align-items: stretch;
    height: 52px;
  }

  .top-actions {
    flex: 0 0 auto;
    padding-right: 8px;
  }

  .icon-text {
    min-width: 34px;
    padding: 0 8px;
    font-size: 0;
  }

  .icon-text svg {
    margin: 0;
  }

  .user-chip {
    width: 42px;
    padding: 0;
  }

  .user-chip span {
    display: none;
  }

  .main-grid {
    grid-template-columns: 1fr;
  }

  .toolbar {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
    padding: 8px 12px;
  }

  .summary-wrap,
  .toolbar-actions {
    width: 100%;
  }

  .toolbar-actions {
    justify-content: flex-start;
  }

  .summary-line {
    flex: 1 0 100%;
  }

  .erp-sync-badge,
  .erp-contract-strip,
  .erp-go-nogo-strip,
  .production-release-strip,
  .release-approval-strip,
  .preflight-strip,
  .confirmation-strip {
    max-width: 100%;
  }

  .pipeline,
  .package-flow {
    grid-template-columns: repeat(2, 1fr);
  }

  .package-readiness {
    grid-template-columns: 1fr;
  }

  .package-readiness dl {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .preflight-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .package-readiness dl {
    grid-template-columns: 1fr;
  }
}
