:root {
  color-scheme: light;
  --bg: #f3f5f7;
  --surface: #ffffff;
  --surface-soft: #f8fafb;
  --line: #dde3ea;
  --text: #141b24;
  --muted: #667387;
  --blue: #1f6feb;
  --teal: #00897b;
  --green: #247a4f;
  --amber: #b4690e;
  --red: #be3b37;
  --ink: #253141;
  --shadow: 0 20px 56px rgba(27, 39, 52, 0.1);
}

* {
  box-sizing: border-box;
}

html,
body {
  min-height: 100%;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: "Inter", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
}

button,
input,
select {
  font: inherit;
}

button {
  cursor: pointer;
}

body.auth-locked {
  background: #08111d;
}

.auth-locked .app-shell {
  display: none;
}

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

.login-screen {
  min-height: 100vh;
  display: grid;
  grid-template-columns: minmax(420px, 0.95fr) minmax(420px, 1.05fr);
  background: #eef2f6;
}

.login-visual {
  position: relative;
  display: grid;
  align-content: space-between;
  gap: 30px;
  min-height: 100vh;
  padding: 34px;
  overflow: hidden;
  background: #101a26;
  color: #f7fbff;
}

.login-visual::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px);
  background-size: 42px 42px;
  pointer-events: none;
}

.login-brand,
.login-hero-copy,
.login-preview,
.login-assurance {
  position: relative;
  z-index: 1;
}

.login-brand {
  display: flex;
  align-items: center;
  gap: 12px;
}

.login-brand strong {
  display: block;
  font-size: 18px;
}

.login-brand small {
  color: rgba(247, 251, 255, 0.68);
  font-size: 12px;
}

.login-hero-copy {
  max-width: 560px;
}

.login-hero-copy h1 {
  max-width: 520px;
  margin-bottom: 14px;
  font-size: clamp(34px, 5vw, 58px);
  line-height: 1.05;
}

.login-hero-copy p:last-child {
  max-width: 500px;
  margin-bottom: 0;
  color: rgba(247, 251, 255, 0.72);
  font-size: 15px;
  line-height: 1.8;
}

.login-preview {
  max-width: 560px;
  display: grid;
  gap: 16px;
  padding: 18px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.18);
}

.preview-topline {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: center;
}

.preview-topline span,
.preview-grid span {
  color: rgba(247, 251, 255, 0.66);
  font-size: 12px;
  font-weight: 800;
}

.preview-topline strong {
  font-size: 26px;
}

.preview-bars {
  display: grid;
  gap: 9px;
}

.preview-bars i {
  display: block;
  height: 9px;
  border-radius: 999px;
  background: #48b6a9;
}

.preview-bars i:nth-child(2) {
  background: #6fa5ee;
}

.preview-bars i:nth-child(3) {
  background: #e4a34f;
}

.preview-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.preview-grid span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.07);
}

.login-assurance {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.login-assurance span {
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  padding: 0 10px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 999px;
  color: rgba(247, 251, 255, 0.74);
  font-size: 12px;
  font-weight: 800;
}

.login-panel {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 34px;
}

.login-card {
  width: min(500px, 100%);
  display: grid;
  gap: 16px;
  padding: 28px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  box-shadow: var(--shadow);
}

.login-card-header {
  display: grid;
  gap: 5px;
}

.login-card-header h2 {
  font-size: 25px;
}

.login-card-header span,
.login-message,
.login-footnote {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.6;
}

.auth-method-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}

.auth-method,
.login-submit,
.login-demo {
  min-height: 42px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-weight: 850;
}

.auth-method {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: #ffffff;
  color: var(--ink);
}

.auth-method span {
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  background: var(--surface-soft);
  color: var(--blue);
  font-size: 12px;
}

.auth-method.primary {
  border-color: #9bbfe4;
  background: #eef6ff;
  color: #174d88;
}

.login-divider {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 10px;
  align-items: center;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.login-divider::before,
.login-divider::after {
  content: "";
  height: 1px;
  background: var(--line);
}

.login-field {
  display: grid;
  gap: 7px;
}

.login-field span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.login-field input {
  min-height: 42px;
  width: 100%;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--text);
}

.login-field input:focus {
  outline: 3px solid rgba(31, 111, 235, 0.14);
  border-color: #86addb;
}

.workspace-policy {
  display: grid;
  gap: 9px;
  padding: 11px;
  border: 1px solid #d8e6f5;
  border-radius: 8px;
  background: #f4f8fd;
}

.workspace-policy > div:first-child {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}

.workspace-policy strong {
  font-size: 13px;
}

.workspace-policy span,
.session-security-panel span,
.session-security-panel small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}

.policy-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.policy-chips span {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 999px;
  background: #ffffff;
  color: #174d88;
  font-weight: 800;
}

.password-control {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
}

.password-control button {
  min-width: 58px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
  color: var(--ink);
  font-size: 12px;
  font-weight: 850;
}

.login-options,
.login-footnote {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.login-options label {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.login-options button {
  border: 0;
  background: transparent;
  color: var(--blue);
  font-weight: 850;
}

.login-submit {
  border-color: var(--blue);
  background: var(--blue);
  color: #ffffff;
}

.login-demo {
  background: var(--surface-soft);
  color: var(--ink);
}

.mfa-panel {
  display: grid;
  gap: 12px;
  padding: 13px;
  border: 1px solid #d8e6f5;
  border-radius: 8px;
  background: #f4f8fd;
}

.mfa-panel[hidden] {
  display: none;
}

.mfa-panel > div:first-child {
  display: grid;
  gap: 4px;
}

.mfa-panel strong {
  font-size: 14px;
}

.mfa-panel span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.mfa-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 0.8fr);
  gap: 8px;
}

.session-security-panel {
  display: grid;
  gap: 3px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.session-security-panel strong {
  font-size: 13px;
}

.login-message {
  min-height: 20px;
  margin: 0;
}

.login-footnote {
  padding-top: 4px;
}

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

.sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  display: flex;
  flex-direction: column;
  gap: 16px;
  overflow-y: auto;
  padding: 18px 14px;
  background: #111a24;
  color: #f7fbff;
}

.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 72px;
}

.brand strong {
  display: block;
  font-size: 17px;
}

.brand small,
.project-switcher label,
.role-switcher label,
.side-metrics span {
  color: rgba(247, 251, 255, 0.68);
  font-size: 12px;
}

.brand-mark {
  width: 56px;
  height: 66px;
  flex: 0 0 56px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 10px;
  background: #020817;
}

.brand-mark img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.project-switcher,
.role-switcher {
  display: grid;
  gap: 8px;
}

.project-switcher select,
.role-switcher select {
  width: 100%;
  min-height: 38px;
  padding: 0 10px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.09);
  color: #ffffff;
}

.nav-list {
  display: grid;
  gap: 5px;
}

.nav-item {
  display: grid;
  grid-template-columns: 24px 1fr;
  align-items: center;
  min-height: 36px;
  padding: 0 10px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: rgba(247, 251, 255, 0.78);
  text-align: left;
}

.nav-item span {
  font-size: 17px;
}

.nav-item:hover,
.nav-item.active {
  border-color: rgba(255, 255, 255, 0.14);
  background: rgba(255, 255, 255, 0.1);
  color: #ffffff;
}

.side-metrics {
  display: grid;
  gap: 10px;
  margin-top: auto;
  padding: 14px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
}

.side-metrics div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.side-metrics strong {
  font-size: 13px;
  white-space: nowrap;
}

.workspace {
  min-width: 0;
  padding: 22px;
}

.topbar,
.panel-header,
.visual-header,
.table-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.topbar {
  margin-bottom: 16px;
}

.top-meta {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  margin-top: 8px;
}

.top-meta span {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #ffffff;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.eyebrow {
  margin: 0 0 4px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1 {
  margin-bottom: 0;
  font-size: clamp(24px, 3vw, 34px);
  font-weight: 800;
}

h2 {
  margin-bottom: 0;
  font-size: 19px;
}

h3 {
  margin-bottom: 0;
  font-size: 15px;
}

.top-actions,
.segmented-control {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.session-pill,
.server-status-pill {
  min-height: 36px;
  display: grid;
  gap: 1px;
  justify-content: center;
  padding: 5px 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.server-status-pill {
  border-color: #c9d8ea;
  background: #f4f8fd;
}

.server-status-pill[data-status="sync"] {
  border-color: #b7dfca;
  background: #eef9f3;
}

.server-status-pill[data-status="loading"] {
  border-color: #c9d8ea;
  background: #f4f8fd;
}

.server-status-pill[data-status="error"] {
  border-color: #efcf9b;
  background: #fff8ed;
}

.session-pill span,
.server-status-pill span {
  color: var(--text);
  font-size: 12px;
  font-weight: 850;
  line-height: 1.2;
}

.session-pill small,
.server-status-pill small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
}

.icon-button,
.ghost-button,
.segment {
  min-height: 36px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--ink);
}

.icon-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 13px;
  font-weight: 700;
}

.icon-button.primary {
  border-color: var(--blue);
  background: var(--blue);
  color: white;
}

.danger-action {
  border-color: #f0b4b1;
  color: var(--red);
}

.ghost-button {
  min-width: 58px;
  padding: 0 12px;
  background: var(--surface-soft);
  font-weight: 700;
}

.segment {
  min-width: 54px;
  padding: 0 12px;
}

.segment.active {
  border-color: #84a5cb;
  background: #e8f1fb;
  color: #174d88;
  font-weight: 800;
}

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 14px;
}

.kpi-card,
.panel,
.report-grid article {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 1px 0 rgba(23, 32, 42, 0.03);
}

.kpi-card {
  padding: 14px;
}

.kpi-card span,
.kpi-card small {
  display: block;
  color: var(--muted);
}

.kpi-card span {
  margin-bottom: 9px;
  font-size: 13px;
  font-weight: 700;
}

.kpi-card strong {
  display: block;
  margin-bottom: 6px;
  font-size: 22px;
}

.capability-strip {
  display: grid;
  grid-template-columns: 1.15fr 1.15fr 0.9fr;
  gap: 14px;
  margin-bottom: 14px;
}

.capability-strip article {
  min-height: 70px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.capability-strip span {
  display: block;
  margin-bottom: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.capability-strip strong {
  display: block;
  color: var(--text);
  font-size: 13px;
  line-height: 1.55;
}

.kpi-card small {
  font-size: 12px;
}

.action-result-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  min-height: 70px;
  margin-bottom: 14px;
  padding: 13px 14px;
  border: 1px solid #b8cde5;
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: #ffffff;
}

.action-result-panel.is-empty {
  display: none;
}

.action-result-panel[data-tone="red"] {
  border-left-color: var(--red);
}

.action-result-panel[data-tone="green"],
.action-result-panel[data-tone="teal"] {
  border-left-color: var(--teal);
}

.action-result-panel[data-tone="amber"] {
  border-left-color: var(--amber);
}

.action-result-panel[data-tone="gray"] {
  border-left-color: #738196;
}

.action-result-copy {
  display: grid;
  gap: 4px;
}

.action-result-copy span,
.action-result-metrics small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.action-result-copy strong {
  font-size: 14px;
  line-height: 1.5;
}

.action-result-metrics {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.action-result-metrics span {
  display: grid;
  gap: 2px;
  min-width: 86px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.action-result-metrics b {
  color: var(--text);
  font-size: 13px;
}

.content-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 14px;
  align-items: start;
}

.panel {
  min-width: 0;
  padding: 16px;
}

.main-panel {
  min-height: 660px;
}

.panel-header {
  margin-bottom: 14px;
}

.panel-header.compact {
  align-items: flex-start;
  margin-bottom: 12px;
}

.view {
  display: none;
}

.view.active {
  display: block;
}

.overview-layout {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 14px;
}

.next-action-panel {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 12px;
  align-items: stretch;
  margin-bottom: 14px;
}

.next-action-copy,
.next-action-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.next-action-copy {
  display: grid;
  align-content: center;
  gap: 4px;
  padding: 13px;
}

.next-action-copy h3 {
  line-height: 1.45;
}

.next-action-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.next-action-card {
  display: grid;
  gap: 6px;
  min-height: 112px;
  padding: 12px;
  border-left: 4px solid var(--blue);
  color: var(--text);
  text-align: left;
}

.next-action-card:hover {
  border-color: #9ab7d8;
  box-shadow: 0 10px 26px rgba(31, 111, 235, 0.1);
}

.next-action-card[data-tone="red"] {
  border-left-color: var(--red);
}

.next-action-card[data-tone="green"],
.next-action-card[data-tone="teal"] {
  border-left-color: var(--teal);
}

.next-action-card[data-tone="amber"] {
  border-left-color: var(--amber);
}

.next-action-card[data-tone="gray"] {
  border-left-color: #738196;
}

.next-action-card span,
.next-action-card small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.next-action-card span {
  font-weight: 850;
}

.next-action-card strong {
  font-size: 14px;
  line-height: 1.45;
}

.project-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 14px;
}

.import-layout,
.library-layout,
.bim-layout {
  display: grid;
  gap: 14px;
}

.import-layout {
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr);
}

.library-layout {
  grid-template-columns: minmax(0, 1fr);
}

.bim-layout {
  grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);
}

.import-panel,
.library-panel,
.bim-panel {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.import-textarea {
  width: 100%;
  min-height: 210px;
  resize: vertical;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--text);
  line-height: 1.6;
}

.diagnostic-list {
  display: grid;
  gap: 9px;
}

.diagnostic-list p {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--muted);
  font-size: 13px;
}

.import-preview-wrap {
  margin-top: 14px;
}

.native-import-panel {
  display: grid;
  gap: 10px;
  margin-top: 14px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.native-import-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.native-import-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.native-import-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.native-import-card {
  display: grid;
  gap: 9px;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.native-import-card header,
.native-import-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.native-import-model,
.native-import-actions,
.native-import-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.native-import-run {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 8px;
  padding: 7px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.native-import-run span,
.native-import-run small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.native-import-run strong {
  color: var(--text);
  font-size: 12px;
}

.native-import-model span,
.native-import-actions span {
  padding: 4px 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--text);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.35;
}

.native-import-actions span {
  color: var(--muted);
  font-weight: 700;
}

.native-import-buttons {
  justify-content: flex-end;
}

.native-import-buttons .btn {
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
}

.native-import-card strong,
.native-import-card span,
.native-import-card small,
.native-import-card em {
  display: block;
}

.native-import-card span,
.native-import-card small,
.native-import-card li,
.native-import-meta span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.native-import-card em {
  padding: 4px 8px;
  border-radius: 999px;
  background: #edf5f6;
  color: var(--teal);
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.native-import-card[data-status="待转换"] em,
.native-import-card[data-status="需复核"] em,
.native-import-card[data-status="待授权转换"] em {
  background: #fff5df;
  color: #9a6419;
}

.native-import-card[data-status="已解析"] em,
.native-import-card[data-status="已生成中间模型"] em {
  background: #e8f7ee;
  color: #247245;
}

.native-import-card[data-status="解析失败"] em {
  background: #fae8e6;
  color: var(--red);
}

.native-import-card ul {
  margin: 0;
  padding-left: 16px;
}

.import-preview-table {
  min-width: 920px;
}

.library-list {
  display: grid;
  gap: 9px;
}

.quota-package-panel {
  display: grid;
  gap: 9px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.quota-package-panel .formal-section-head {
  display: grid;
  grid-template-columns: 1fr;
  align-items: start;
}

.quota-package-panel .formal-section-head button {
  width: 100%;
}

.quota-package-panel .authorized-source-metrics {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.quota-package-panel .built-in-cost-database-row,
.quota-package-panel .boq-candidate-review-row {
  grid-template-columns: 1fr;
  align-items: start;
}

.quota-package-panel .built-in-cost-database-actions,
.quota-package-panel .built-in-cost-database-actions button,
.quota-package-panel .boq-candidate-review-actions,
.quota-package-panel .boq-candidate-review-actions button {
  width: 100%;
}

.quota-package-panel .built-in-cost-database-actions,
.quota-package-panel .boq-candidate-review-actions {
  justify-content: stretch;
}

.authorized-source-panel,
.bim-parametric-kernel-panel {
  display: grid;
  gap: 9px;
  padding: 11px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--green);
  border-radius: 8px;
  background: #ffffff;
}

.authorized-source-metrics,
.bim-parametric-kernel-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.authorized-source-metrics span,
.bim-parametric-kernel-metrics span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f8fafc;
}

.authorized-source-metrics small,
.bim-parametric-kernel-metrics small {
  color: var(--muted);
  font-size: 11px;
}

.authorized-source-metrics b,
.bim-parametric-kernel-metrics b {
  color: var(--ink);
  font-size: 15px;
}

.authorized-source-list,
.bim-parametric-kernel-list {
  display: grid;
  gap: 7px;
}

.built-in-cost-database-list,
.boq-candidate-review-list {
  display: grid;
  gap: 7px;
}

.boq-residual-ledger {
  display: grid;
  gap: 8px;
}

.boq-residual-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.boq-residual-summary span {
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-left: 4px solid #b7791f;
  border-radius: 6px;
  background: #f8fafc;
}

.boq-residual-summary span[data-level="high"] {
  border-left-color: var(--red);
}

.boq-residual-summary span[data-level="low"] {
  border-left-color: var(--green);
}

.boq-residual-summary small,
.boq-residual-summary em {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
  overflow-wrap: anywhere;
}

.boq-residual-summary b {
  color: var(--ink);
  font-size: 16px;
  font-weight: 950;
}

.boq-residual-groups {
  display: grid;
  gap: 7px;
}

.boq-residual-group {
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-left: 4px solid #b7791f;
  border-radius: 6px;
  background: #fff;
}

.boq-residual-group[data-level="high"] {
  border-left-color: var(--red);
}

.boq-residual-group[data-level="low"] {
  border-left-color: var(--green);
}

.boq-residual-group strong {
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.boq-residual-group span,
.boq-residual-group small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.boq-field-suggestion {
  display: inline-block;
  color: #126c4d !important;
  font-weight: 800;
}

.built-in-cost-database-row,
.boq-candidate-review-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-left: 4px solid #91a0b3;
  border-radius: 6px;
  background: #f8fafc;
}

.built-in-cost-database-row[data-level="low"],
.boq-candidate-review-row[data-level="low"] {
  border-left-color: var(--green);
}

.built-in-cost-database-row[data-level="medium"],
.boq-candidate-review-row[data-level="medium"] {
  border-left-color: #b7791f;
}

.built-in-cost-database-row[data-level="high"],
.boq-candidate-review-row[data-level="high"] {
  border-left-color: var(--red);
}

.built-in-cost-database-row > div,
.boq-candidate-review-row > div:first-child {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.built-in-cost-database-row strong,
.boq-candidate-review-row strong {
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.built-in-cost-database-row span,
.built-in-cost-database-row small,
.boq-candidate-review-row span,
.boq-candidate-review-row small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.built-in-cost-database-actions button,
.boq-candidate-review-actions button {
  min-height: 30px;
  padding: 6px 10px;
  border-radius: 6px;
  white-space: nowrap;
}

.built-in-cost-database-actions,
.boq-candidate-review-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
}

.authorized-source-list p,
.bim-parametric-kernel-list p {
  display: grid;
  gap: 3px;
  min-width: 0;
  margin: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-left: 4px solid #91a0b3;
  border-radius: 6px;
  background: #f8fafc;
}

.authorized-source-list p[data-level="low"],
.bim-parametric-kernel-list p[data-status="low"] {
  border-left-color: var(--green);
}

.authorized-source-list p[data-level="medium"],
.bim-parametric-kernel-list p[data-status="medium"] {
  border-left-color: #b7791f;
}

.authorized-source-list p[data-level="high"],
.bim-parametric-kernel-list p[data-status="high"] {
  border-left-color: var(--red);
}

.authorized-source-list strong,
.bim-parametric-kernel-list strong {
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.authorized-source-list span,
.authorized-source-list small,
.bim-parametric-kernel-list span,
.bim-parametric-kernel-list small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.formal-quota-center {
  display: grid;
  gap: 10px;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: #ffffff;
}

.formal-quota-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.formal-quota-head h3 {
  margin: 2px 0 0;
  color: var(--ink);
  font-size: 15px;
  letter-spacing: 0;
}

.formal-quota-head span {
  max-width: 280px;
  padding: 6px 8px;
  border: 1px solid #cfe1f6;
  border-radius: 6px;
  background: #f1f6fd;
  color: var(--blue);
  font-size: 12px;
  font-weight: 850;
  line-height: 1.45;
  text-align: right;
}

.formal-quota-textarea {
  width: 100%;
  min-height: 92px;
  resize: vertical;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fafc;
  color: var(--text);
  font: inherit;
  font-size: 13px;
  line-height: 1.55;
}

.formal-quota-acquisition,
.formal-quota-rules,
.formal-quota-gaps,
.formal-quota-ledger,
.formal-quota-quality {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fafc;
}

.formal-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.formal-section-head strong {
  color: var(--ink);
  font-size: 13px;
  font-weight: 900;
}

.formal-section-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.formal-section-head button {
  flex: 0 0 auto;
  min-height: 30px;
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 12px;
}

.formal-head-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex: 0 0 auto;
  flex-wrap: wrap;
}

.formal-head-actions button {
  min-width: 0;
}

.formal-acquisition-list,
.formal-rule-list,
.formal-gap-list,
.formal-ledger-list,
.formal-quality-list {
  display: grid;
  gap: 7px;
}

.formal-acquisition-list p,
.formal-rule-list p,
.formal-gap-list p,
.formal-ledger-list p,
.formal-quality-list p {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
}

.formal-acquisition-list strong,
.formal-rule-list strong,
.formal-gap-list strong,
.formal-ledger-list strong,
.formal-quality-list strong {
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.formal-acquisition-list span,
.formal-acquisition-list small,
.formal-rule-list span,
.formal-rule-list small,
.formal-gap-list span,
.formal-gap-list small,
.formal-ledger-list span,
.formal-ledger-list small,
.formal-quality-list span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.formal-acquisition-metrics,
.formal-rule-metrics,
.formal-gap-metrics,
.formal-quality-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.formal-acquisition-metrics span,
.formal-rule-metrics span,
.formal-gap-metrics span,
.formal-quality-metrics span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
}

.formal-acquisition-metrics small,
.formal-rule-metrics small,
.formal-gap-metrics small,
.formal-quality-metrics small {
  color: var(--muted);
  font-size: 11px;
}

.formal-acquisition-metrics b,
.formal-rule-metrics b,
.formal-gap-metrics b,
.formal-quality-metrics b {
  color: var(--ink);
  font-size: 15px;
}

.formal-rule-list p[data-level="high"] {
  border-left: 4px solid var(--red);
}

.formal-rule-list p[data-level="medium"] {
  border-left: 4px solid #b7791f;
}

.formal-rule-list p[data-level="ready"] {
  border-left: 4px solid var(--green);
}

.formal-gap-list p[data-priority="P0"] {
  border-left: 4px solid var(--red);
}

.formal-gap-list p[data-priority="P1"] {
  border-left: 4px solid #b7791f;
}

.formal-gap-list p[data-priority="P2"] {
  border-left: 4px solid var(--blue);
}

.formal-gap-list p[data-status="已闭环"] {
  border-color: rgba(35, 126, 116, 0.32);
}

.formal-acquisition-list p[data-status="已完成"],
.formal-acquisition-list p[data-status="已登记"] {
  border-color: rgba(35, 126, 116, 0.3);
}

.formal-acquisition-list p[data-status="待办理"],
.formal-acquisition-list p[data-status="待导入"] {
  border-color: rgba(174, 113, 31, 0.32);
}

.formal-acquisition-list p[data-risk="high"] {
  border-left: 4px solid var(--red);
}

.formal-acquisition-list p[data-risk="medium"] {
  border-left: 4px solid #b7791f;
}

.formal-quality-list p[data-level="high"] {
  border-color: rgba(190, 59, 55, 0.32);
}

.formal-quality-list p[data-level="medium"] {
  border-color: rgba(174, 113, 31, 0.32);
}

.formal-quality-list p[data-level="ready"] {
  border-color: rgba(35, 126, 116, 0.3);
}

.quota-package-header,
.quota-package-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.quota-package-header {
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.quota-package-header span,
.quota-package-card span,
.quota-package-card small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.quota-package-card {
  padding: 10px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--teal);
  border-radius: 8px;
  background: #ffffff;
}

.quota-package-card strong {
  display: block;
  margin-bottom: 3px;
  font-size: 13px;
}

.quota-package-card button {
  min-height: 32px;
  padding: 0 10px;
  border: 1px solid #b7dfca;
  border-radius: 6px;
  background: #eef9f3;
  color: var(--green);
  font-size: 12px;
  font-weight: 850;
  white-space: nowrap;
}

.library-row {
  display: grid;
  grid-template-columns: 86px minmax(160px, 1.3fr) 86px 62px 94px minmax(130px, 1fr) auto auto auto;
  gap: 8px;
  align-items: center;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.quota-consumption-count {
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f3f7fb;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
  white-space: nowrap;
}

.library-row input,
.library-row select,
.indicator-card input,
.indicator-card select,
.bim-map-row input,
.bim-map-row select {
  width: 100%;
  min-height: 32px;
  padding: 0 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--text);
}

.library-row button,
.indicator-card button,
.bim-map-row button {
  min-height: 32px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.indicator-grid {
  display: grid;
  gap: 10px;
  margin-bottom: 12px;
}

.indicator-card {
  display: grid;
  gap: 9px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.indicator-card label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.indicator-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.indicator-score {
  width: max-content;
  min-height: 26px;
  display: inline-flex;
  align-items: center;
  padding: 0 9px;
  border-radius: 999px;
  background: #e8f5ee;
  color: var(--green);
  font-size: 12px;
  font-weight: 800;
}

.indicator-actions,
.material-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.indicator-actions button[data-indicator-action="delete"],
.material-actions button[data-material-action="delete"] {
  border-color: #efc7c1;
  background: #fff6f4;
  color: var(--red);
}

.bim-component-list,
.bim-mapping-list,
.bim-import-list {
  display: grid;
  gap: 10px;
}

.bim-component,
.bim-map-row,
.bim-import-card {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.bim-import-panel,
.bim-version-diff-panel,
.bim-deduction-panel,
.bim-geometry-panel,
.bim-authority-source-panel,
.bim-boolean-kernel-panel,
.bim-rebar-panel,
.bim-rebar-detail-panel,
.bim-mep-panel,
.bim-mep-rule-panel,
.bim-mep-review-panel,
.bim-pricing-link-panel {
  margin-bottom: 14px;
}

.bim-commit-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 10px;
}

.bim-commit-summary article {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  padding: 10px 12px;
}

.bim-commit-summary span,
.bim-commit-summary small {
  display: block;
  color: var(--muted);
  font-size: 12px;
}

.bim-commit-summary strong {
  display: block;
  margin: 4px 0;
  color: var(--text);
  font-size: 15px;
}

.bim-commit-summary article[data-status="high"],
.bim-commit-summary article[data-status="取费需重审"] {
  border-color: rgba(220, 38, 38, 0.28);
  background: #fff7f7;
}

.bim-commit-summary article[data-status="medium"],
.bim-commit-summary article[data-status="待取费复核"] {
  border-color: rgba(217, 119, 6, 0.3);
  background: #fffbeb;
}

.bim-commit-summary article[data-status="low"],
.bim-commit-summary article[data-status="无金额影响"] {
  border-color: rgba(22, 163, 74, 0.24);
  background: #f0fdf4;
}

.bim-diff-review-list {
  display: grid;
  gap: 10px;
  margin-bottom: 10px;
}

.bim-diff-impact-list {
  display: grid;
  gap: 8px;
  margin: 2px 0 4px;
}

.bim-diff-impact-row {
  display: grid;
  grid-template-columns: minmax(160px, 1.1fr) minmax(220px, 1.5fr) auto;
  gap: 8px 12px;
  align-items: center;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fafc;
}

.bim-diff-impact-row strong,
.bim-diff-impact-row span,
.bim-diff-impact-row small {
  min-width: 0;
}

.bim-diff-impact-row span,
.bim-diff-impact-row small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.bim-diff-impact-row small {
  grid-column: 1 / -1;
}

.bim-diff-impact-row em {
  justify-self: end;
  padding: 4px 8px;
  border-radius: 999px;
  background: #ecfdf3;
  color: #137a3d;
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.bim-diff-impact-actions {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.bim-diff-impact-actions button {
  border: 1px solid #cfd8e3;
  background: #fff;
  color: #1f2a37;
  border-radius: 6px;
  padding: 5px 9px;
  font-size: 12px;
  font-weight: 800;
}

.bim-diff-impact-actions button:hover {
  border-color: #1d4ed8;
  color: #1d4ed8;
}

.bim-diff-impact-row[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffbeb;
}

.bim-diff-impact-row[data-status="medium"] em {
  background: #fff4d6;
  color: #9a6419;
}

.bim-diff-impact-row[data-status="high"] {
  border-color: rgba(220, 38, 38, 0.24);
  background: #fff7f7;
}

.bim-diff-impact-row[data-status="high"] em {
  background: #fee2e2;
  color: #b42318;
}

@media (max-width: 720px) {
  .bim-diff-impact-row {
    grid-template-columns: 1fr;
  }

  .bim-diff-impact-row em {
    justify-self: start;
  }
}

.bim-model-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  margin: 10px 0;
}

.bim-model-summary-grid article {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  padding: 10px 12px;
}

.bim-model-summary-grid span,
.bim-model-summary-grid small {
  display: block;
  color: var(--muted);
  font-size: 12px;
}

.bim-model-summary-grid strong {
  display: block;
  margin: 4px 0;
  color: var(--text);
  font-size: 15px;
}

.bim-diff-review-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

.bim-diff-review-actions button {
  min-height: 30px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--text);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.bim-diff-review-actions button:not(:disabled):hover {
  border-color: rgba(37, 99, 235, 0.42);
  background: #eff6ff;
}

.bim-diff-review-actions button:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}

.bim-import-card {
  display: grid;
  gap: 9px;
}

.bim-import-card header,
.bim-import-metrics,
.bim-import-tags {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.bim-import-card header {
  justify-content: space-between;
}

.bim-import-card header strong,
.bim-import-card header span {
  display: block;
}

.bim-import-card header span,
.bim-import-card p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.bim-import-card em {
  padding: 4px 8px;
  border-radius: 999px;
  background: #eef6ff;
  color: var(--blue);
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.bim-import-card[data-status="需转换器"] em,
.bim-import-card[data-status="需明细表"] em {
  background: #fff4e6;
  color: #9a6419;
}

.bim-import-metrics span,
.bim-import-tags span {
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface-soft);
  color: var(--text);
  font-size: 12px;
  font-weight: 850;
  line-height: 1.3;
}

.bim-import-tags span {
  background: #f6fafc;
  color: var(--muted);
}

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

.bim-rule-selector-item {
  display: grid;
  gap: 4px;
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdff;
}

.bim-rule-selector-item strong,
.bim-rule-selector-item span,
.bim-rule-selector-item small {
  overflow-wrap: anywhere;
}

.bim-rule-selector-item span,
.bim-rule-selector-item small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.bim-rule-selector-item em {
  justify-self: start;
  border-radius: 6px;
}

.bim-authority-source-grid,
.bim-parser-profile-grid,
.bim-boolean-kernel-list {
  display: grid;
  gap: 10px;
}

.bim-authority-source-grid {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.bim-parser-profile-grid {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

.bim-authority-chain-card,
.bim-parser-profile {
  display: grid;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.bim-authority-chain-card header {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: flex-start;
}

.bim-authority-chain-card strong,
.bim-parser-profile strong {
  color: var(--text);
  font-size: 14px;
}

.bim-authority-chain-card span,
.bim-authority-chain-card p,
.bim-parser-profile span,
.bim-parser-profile small {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.bim-authority-chain-card em {
  flex: 0 0 auto;
  padding: 4px 8px;
  border-radius: 999px;
  background: #f0fdf4;
  color: #15803d;
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
}

.bim-authority-source-card[data-status="medium"],
.bim-parser-profile[data-status="medium"] {
  border-color: #f0d39a;
  background: #fffaf0;
}

.bim-authority-source-card[data-status="low"],
.bim-parser-profile[data-status="low"] {
  border-color: #b9dfcc;
  background: #f5fbf7;
}

.bim-boolean-kernel-list {
  max-height: 520px;
  overflow: auto;
  padding-right: 2px;
}

.bim-import-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 2px;
}

.bim-import-actions button {
  min-height: 30px;
}

.bim-import-actions button:disabled {
  cursor: not-allowed;
  opacity: 0.46;
}

.bim-native-viewer-panel {
  grid-column: 1 / -1;
  margin-bottom: 14px;
}

.manual-trial-self-check-panel {
  grid-column: 1 / -1;
  margin-bottom: 14px;
}

.manual-trial-self-check {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 12px;
  align-items: stretch;
}

.bim-lazy-placeholder {
  min-height: 112px;
  align-items: flex-start;
}

.bim-lazy-placeholder strong {
  display: block;
  color: var(--text);
  margin-bottom: 6px;
}

.bim-lazy-placeholder .btn {
  margin-top: 10px;
}

.bim-virtual-more {
  width: 100%;
  justify-content: center;
  margin-top: 10px;
}

.manual-trial-score,
.manual-trial-metrics p,
.manual-trial-issues article {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.manual-trial-score {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 6px;
  min-height: 132px;
  padding: 14px;
  text-align: center;
}

.manual-trial-score strong {
  color: var(--text);
  font-size: 42px;
  line-height: 1;
}

.manual-trial-score span {
  color: var(--text);
  font-weight: 900;
}

.manual-trial-score small,
.manual-trial-metrics small,
.manual-trial-issues small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

.manual-trial-score[data-status="low"] {
  border-color: #b9dfcc;
  background: #f2fbf6;
}

.manual-trial-score[data-status="medium"] {
  border-color: #f0d39a;
  background: #fff8eb;
}

.manual-trial-score[data-status="high"] {
  border-color: #efb0aa;
  background: #fff3f2;
}

.manual-trial-metrics {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
}

.manual-trial-metrics p {
  display: grid;
  gap: 4px;
  min-height: 74px;
  margin: 0;
  padding: 10px;
}

.manual-trial-metrics span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.manual-trial-metrics strong {
  overflow-wrap: anywhere;
  color: var(--text);
  font-size: 18px;
  line-height: 1.15;
}

.manual-trial-issues {
  grid-column: 1 / -1;
  display: grid;
  gap: 8px;
}

.manual-trial-issues article {
  padding: 10px 12px;
}

.manual-trial-issues article[data-level="high"] {
  border-color: #efb0aa;
  background: #fff7f6;
}

.manual-trial-issues article[data-level="medium"] {
  border-color: #f0d39a;
  background: #fffaf0;
}

.manual-trial-issues article[data-level="low"] {
  border-color: #b9dfcc;
  background: #f5fbf7;
}

.manual-trial-issues header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.manual-trial-issues strong {
  color: var(--text);
  font-size: 14px;
}

.manual-trial-issues em {
  flex: 0 0 auto;
  padding: 4px 7px;
  border-radius: 6px;
  background: var(--surface-soft);
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
}

.manual-trial-issues p {
  margin: 6px 0 4px;
  color: var(--text);
  font-size: 13px;
  line-height: 1.45;
}

@media (max-width: 1080px) {
  .manual-trial-self-check {
    grid-template-columns: 1fr;
  }

  .manual-trial-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.bim-native-viewer-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}

.bim-native-viewer-toolbar label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.bim-native-viewer-toolbar select {
  min-width: 142px;
  height: 34px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--text);
  font-weight: 800;
}

.bim-native-viewer-mode {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.bim-native-viewer-mode button {
  min-width: 58px;
  height: 28px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
}

.bim-native-viewer-mode button.active {
  background: #122233;
  color: #ffffff;
}

.bim-native-shell {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, 0.65fr);
  gap: 12px;
  align-items: stretch;
}

.bim-native-canvas,
.bim-native-detail {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.bim-native-canvas {
  min-height: 390px;
  padding: 10px;
  overflow: hidden;
}

.bim-native-canvas-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}

.bim-native-canvas-head > span {
  flex: 0 0 auto;
  max-width: 280px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.45;
  text-align: right;
}

.bim-native-map {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(172px, 1fr));
  grid-auto-rows: minmax(118px, auto);
  gap: 8px;
  max-height: 364px;
  min-height: 286px;
  padding: 8px;
  overflow: auto;
  border: 1px solid #d8dee8;
  border-radius: 8px;
  background:
    linear-gradient(rgba(255,255,255,0.88), rgba(255,255,255,0.88)),
    repeating-linear-gradient(0deg, transparent 0, transparent 27px, #e9eef5 28px),
    repeating-linear-gradient(90deg, transparent 0, transparent 27px, #e9eef5 28px);
}

.bim-native-group {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 8px;
  align-content: start;
  min-height: 118px;
  max-height: 142px;
  padding: 10px 10px 9px 13px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--text);
  text-align: left;
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
  overflow: hidden;
}

.bim-native-group.selected {
  border-color: #0f172a;
  box-shadow: inset 0 0 0 2px #0f172a;
}

.bim-native-group[data-status="ready"] {
  background: #f6fbf8;
}

.bim-native-group[data-status="warning"] {
  background: #fffaf0;
}

.bim-native-group-color {
  position: absolute;
  inset: 9px auto 9px 6px;
  display: block;
  width: 4px;
  border-radius: 999px;
}

.bim-native-group strong {
  min-width: 0;
  overflow: hidden;
  color: var(--text);
  font-size: 14px;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bim-native-group small,
.bim-native-group span:not(.bim-native-group-color),
.bim-native-group em {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
  font-size: 11px;
  line-height: 1.35;
}

.bim-native-group small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-weight: 800;
}

.bim-native-group em {
  justify-self: end;
  padding: 2px 6px;
  border-radius: 999px;
  background: var(--surface-soft);
  color: var(--muted);
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.bim-native-group span:not(.bim-native-group-color) {
  color: var(--muted);
  font-weight: 800;
}

.bim-native-node {
  cursor: pointer;
  outline: none;
}

.bim-native-node rect {
  stroke: rgba(255, 255, 255, 0.74);
  stroke-width: 1.5;
}

.bim-native-node.selected rect {
  stroke: #0f172a;
  stroke-width: 3;
}

.bim-native-node text {
  fill: #ffffff;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0;
  pointer-events: none;
}

.bim-native-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 8px;
}

.bim-native-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.bim-native-legend i {
  width: 10px;
  height: 10px;
  border-radius: 3px;
}

.bim-native-detail {
  display: grid;
  gap: 10px;
  padding: 12px;
  align-content: start;
}

.bim-native-detail header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.bim-native-detail h4 {
  margin: 3px 0 0;
  color: var(--text);
  font-size: 17px;
}

.bim-native-detail header span,
.bim-native-detail p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.bim-native-detail em {
  padding: 4px 8px;
  border-radius: 999px;
  background: #ecfdf5;
  color: #047857;
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.bim-native-kpis {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.bim-native-kpis article {
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.bim-native-kpis span,
.bim-native-kpis strong {
  display: block;
}

.bim-native-kpis span {
  color: var(--muted);
  font-size: 11px;
}

.bim-native-kpis strong {
  margin-top: 3px;
  color: var(--text);
  font-size: 13px;
}

.bim-native-spec {
  display: grid;
  gap: 7px;
  margin: 0;
}

.bim-native-spec div {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  gap: 8px;
  align-items: start;
}

.bim-native-spec dt {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.bim-native-spec dd {
  margin: 0;
  color: var(--text);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.45;
  min-width: 0;
  overflow-wrap: anywhere;
}

.bim-native-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.bim-native-tags span {
  padding: 5px 7px;
  border: 1px solid #cfe1f6;
  border-radius: 6px;
  background: #f2f8ff;
  color: #1d4ed8;
  font-size: 11px;
  font-weight: 900;
}

.bim-native-tags.muted span {
  border-color: var(--line);
  background: #f8fafc;
  color: var(--muted);
}

.bim-trace-workbench {
  display: grid;
  grid-template-columns: minmax(0, 1.18fr) minmax(300px, 0.82fr);
  gap: 12px;
  margin-bottom: 14px;
}

.bim-trace-remediation {
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.bim-trace-focus,
.bim-trace-reverse {
  display: grid;
  gap: 10px;
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.bim-trace-focus > header,
.bim-trace-reverse > header,
.bim-reverse-card header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.bim-trace-focus header span,
.bim-trace-reverse header span,
.bim-reverse-card header span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
}

.bim-trace-focus h4,
.bim-trace-reverse h4 {
  margin: 3px 0 0;
  color: var(--text);
  font-size: 16px;
  line-height: 1.35;
}

.bim-trace-focus em,
.bim-trace-reverse em,
.bim-reverse-card em {
  padding: 4px 8px;
  border-radius: 999px;
  background: #ecfdf5;
  color: #047857;
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.bim-trace-chain {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.bim-trace-stage {
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.bim-trace-stage[data-status="low"] {
  border-color: #bbf7d0;
  background: #f0fdf4;
}

.bim-trace-stage[data-status="medium"] {
  border-color: #fde68a;
  background: #fffbeb;
}

.bim-trace-stage[data-status="high"] {
  border-color: #fecaca;
  background: #fef2f2;
}

.bim-trace-stage span,
.bim-trace-stage strong,
.bim-trace-stage small {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
}

.bim-trace-stage span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.bim-trace-stage strong {
  margin-top: 3px;
  color: var(--text);
  font-size: 13px;
  line-height: 1.35;
}

.bim-trace-stage small {
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}

.bim-trace-focus p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.bim-trace-evidence,
.bim-trace-source-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.bim-trace-evidence span,
.bim-trace-source-list button {
  min-height: 28px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  line-height: 1.25;
}

.bim-trace-evidence span {
  display: inline-flex;
  align-items: center;
  padding: 5px 7px;
  overflow-wrap: anywhere;
}

.bim-reverse-grid {
  display: grid;
  gap: 8px;
  max-height: 492px;
  overflow: auto;
  padding-right: 2px;
}

.bim-reverse-card {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.bim-reverse-card[data-status="low"] {
  border-color: #cfe8df;
  background: #f5fbf8;
}

.bim-reverse-card header strong {
  display: block;
  color: var(--text);
  font-size: 13px;
  line-height: 1.35;
}

.bim-trace-source-list button {
  padding: 5px 8px;
  cursor: pointer;
}

.bim-trace-source-list button:hover,
.bim-trace-source-list button.active {
  border-color: #122233;
  background: #122233;
  color: #ffffff;
}

.bim-component.active {
  border-color: #84a5cb;
  background: #eef6ff;
}

.bim-component header,
.bim-map-row > div:first-child {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}

.bim-component span,
.bim-component small,
.bim-map-row span {
  color: var(--muted);
  font-size: 12px;
}

.bim-map-row {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(180px, 1.2fr) 90px minmax(90px, 0.7fr) auto auto;
  gap: 8px;
  align-items: center;
}

.bim-map-chain {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: auto minmax(96px, auto) auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid #dbe7f4;
  border-radius: 6px;
  background: #f8fbff;
  color: var(--muted);
  font-size: 12px;
}

.bim-map-chain strong {
  color: var(--ink);
  font-size: 13px;
}

.bim-map-chain em {
  color: #166534;
  font-style: normal;
  font-weight: 850;
}

.bim-map-chain small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bim-map-chain[data-status="medium"] {
  border-color: #f3d79b;
  background: #fffaf0;
}

.bim-map-chain[data-status="medium"] em {
  color: #9a5b00;
}

.bim-map-chain[data-status="high"] {
  border-color: #fecaca;
  background: #fff7f7;
}

.bim-map-chain[data-status="high"] em {
  color: #b42318;
}

.quantity-variance-panel {
  margin-top: 14px;
}

.quantity-variance-list {
  display: grid;
  gap: 10px;
}

.quantity-variance-card {
  display: grid;
  gap: 9px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.quantity-variance-card header,
.quantity-variance-metrics,
.quantity-variance-resolution,
.quantity-variance-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.quantity-variance-card header strong,
.quantity-variance-card header span,
.quantity-variance-resolution small,
.quantity-variance-card small {
  display: block;
}

.quantity-variance-card header span,
.quantity-variance-card p,
.quantity-variance-card small,
.quantity-variance-resolution small,
.quantity-variance-metrics span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.quantity-variance-card p {
  margin: 0;
}

.quantity-variance-card em {
  padding: 4px 8px;
  border-radius: 999px;
  background: #fff5df;
  color: #9a6419;
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.quantity-variance-card[data-severity="high"] {
  border-color: rgba(191, 72, 61, 0.34);
}

.quantity-variance-card[data-severity="high"] em {
  background: #fae8e6;
  color: var(--red);
}

.quantity-variance-card[data-severity="low"] em {
  background: #e8f7ee;
  color: #247245;
}

.quantity-variance-metrics {
  flex-wrap: wrap;
  justify-content: flex-start;
}

.quantity-variance-metrics span {
  padding: 4px 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--text);
  font-weight: 800;
}

.quantity-variance-resolution {
  align-items: flex-start;
  justify-content: flex-start;
  flex-wrap: wrap;
  padding: 8px;
  border: 1px solid rgba(32, 114, 185, 0.16);
  border-radius: 7px;
  background: #eef6ff;
}

.quantity-variance-resolution span,
.quantity-variance-resolution strong {
  padding: 3px 7px;
  border-radius: 6px;
  background: var(--surface);
  color: var(--text);
  font-size: 12px;
  font-weight: 900;
}

.quantity-variance-card[data-resolution-status="已执行"] .quantity-variance-resolution {
  border-color: rgba(36, 114, 69, 0.24);
  background: #eefaf3;
}

.quantity-variance-card[data-resolution-status="待换算"] .quantity-variance-resolution,
.quantity-variance-card[data-resolution-status="执行失败"] .quantity-variance-resolution {
  border-color: rgba(191, 72, 61, 0.22);
  background: #fff4f2;
}

.quantity-conversion-inline {
  display: grid;
  grid-template-columns: auto minmax(110px, 160px) auto;
  gap: 8px;
  align-items: center;
  padding: 8px;
  border: 1px dashed rgba(32, 114, 185, 0.24);
  border-radius: 7px;
  background: var(--surface);
}

.quantity-conversion-inline label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.quantity-conversion-inline input {
  width: 100%;
  min-width: 0;
  padding: 8px 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface-soft);
  color: var(--text);
  font: inherit;
  font-size: 13px;
}

.quantity-split-allocations {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 7px;
}

.quantity-split-allocations span {
  padding: 7px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--surface);
  color: var(--text);
  font-size: 12px;
  font-weight: 850;
  line-height: 1.35;
}

.quantity-variance-actions {
  justify-content: flex-end;
  flex-wrap: wrap;
}

.project-form,
.change-form {
  display: grid;
  gap: 12px;
}

.project-form {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.project-form label,
.material-input-grid label,
.inline-edit {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.project-form input,
.project-form select,
.change-form input,
.change-form select,
.material-input-grid input,
.change-item input,
.change-item select,
.boq-table select {
  min-height: 34px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--text);
}

.form-actions {
  grid-column: 1 / -1;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.process-panel {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.archive-meta {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.stage-timeline {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.stage-node {
  display: grid;
  gap: 3px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-left: 4px solid #aeb9c6;
  border-radius: 8px;
  background: #ffffff;
}

.stage-node strong {
  font-size: 13px;
}

.stage-node span {
  color: var(--muted);
  font-size: 12px;
}

.stage-node.done {
  border-left-color: var(--green);
}

.stage-node.active {
  border-left-color: var(--blue);
  background: #eef6ff;
}

.cost-visual,
.model-visual,
.trend-panel {
  min-height: 242px;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.trend-panel {
  margin-top: 14px;
  min-height: 248px;
}

.visual-header {
  margin-bottom: 14px;
}

.visual-header span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.composition-bars {
  display: grid;
  gap: 12px;
}

.bar-row {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) 86px;
  gap: 10px;
  align-items: center;
  font-size: 13px;
}

.bar-track {
  height: 12px;
  overflow: hidden;
  border-radius: 999px;
  background: #e0e7ef;
}

.bar-fill {
  height: 100%;
  border-radius: inherit;
}

.building-model {
  height: 190px;
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  align-items: end;
  gap: 8px;
  padding: 8px 0 0;
}

.tower {
  position: relative;
  min-height: 70px;
  border: 1px solid rgba(23, 32, 42, 0.18);
  border-bottom-width: 5px;
  border-radius: 6px 6px 3px 3px;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.34) 1px, transparent 1px),
    linear-gradient(0deg, rgba(255, 255, 255, 0.34) 1px, transparent 1px),
    var(--tower-color);
  background-size: 16px 16px, 16px 16px, auto;
}

.tower::after {
  content: attr(data-label);
  position: absolute;
  left: 50%;
  bottom: 7px;
  transform: translateX(-50%);
  color: rgba(255, 255, 255, 0.92);
  font-size: 11px;
  font-weight: 800;
}

.cashflow-chart {
  width: 100%;
  height: 180px;
  overflow: visible;
}

.axis-label {
  fill: #6b7788;
  font-size: 10px;
}

.table-toolbar {
  margin-bottom: 12px;
  flex-wrap: wrap;
}

.hint-text {
  flex: 1 1 320px;
  min-width: min(100%, 280px);
  color: var(--muted);
  font-size: 13px;
  line-height: 1.6;
}

.search-box {
  flex: 1;
  min-width: 220px;
  min-height: 38px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.search-box input {
  width: 100%;
  border: 0;
  outline: 0;
  background: transparent;
}

.table-wrap {
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
}

.boq-table {
  width: 100%;
  min-width: 1180px;
  border-collapse: collapse;
  background: var(--surface);
}

.boq-table th,
.boq-table td {
  padding: 11px 10px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  font-size: 13px;
  vertical-align: middle;
}

.boq-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #f0f4f8;
  color: #4d5b6c;
  font-weight: 800;
}

.boq-table tbody tr:hover {
  background: #f8fbfe;
}

.boq-table tbody tr.selected-row {
  background: #eef6ff;
}

.boq-table input {
  width: 110px;
  min-height: 30px;
  padding: 0 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
}

.boq-table input[type="checkbox"] {
  width: 18px;
  min-height: 18px;
  accent-color: var(--blue);
}

.boq-table .wide-input {
  width: 190px;
}

.boq-table .unit-input {
  width: 70px;
}

.boq-table .quota-input {
  width: 92px;
}

.row-actions,
.editor-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.row-actions button,
.editor-actions button,
.quota-candidates button,
.finding button,
.change-item button {
  min-height: 28px;
  padding: 0 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.boq-editor {
  display: grid;
  gap: 12px;
  margin-top: 12px;
}

.fee-summary-panel {
  display: grid;
  gap: 12px;
  margin-top: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.resource-analysis-panel {
  display: grid;
  gap: 12px;
  margin-top: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.fee-summary-head,
.fee-summary-actions,
.fee-card-title,
.resource-analysis-head,
.resource-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.fee-summary-actions,
.resource-actions {
  flex-wrap: wrap;
}

.fee-summary-actions button,
.resource-actions button {
  min-height: 32px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.resource-analysis-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.15fr);
  gap: 12px;
}

.resource-card {
  min-width: 0;
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.resource-table {
  width: 100%;
  min-width: 560px;
  border-collapse: collapse;
}

.resource-card {
  overflow: auto;
}

.resource-table th,
.resource-table td {
  padding: 8px 9px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  font-size: 12px;
  vertical-align: top;
}

.resource-table th {
  background: #f0f4f8;
  color: #4d5b6c;
  font-weight: 800;
}

.resource-table strong,
.resource-table small {
  display: block;
}

.resource-table small {
  margin-top: 3px;
  color: var(--muted);
  line-height: 1.4;
}

.fee-summary-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(250px, 0.75fr) minmax(260px, 0.8fr);
  gap: 12px;
}

.fee-table-card,
.fee-side-card {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.fee-table-card {
  overflow: auto;
}

.fee-summary-table {
  width: 100%;
  min-width: 660px;
  border-collapse: collapse;
}

.fee-summary-table th,
.fee-summary-table td {
  padding: 9px 10px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  font-size: 12px;
}

.fee-summary-table th {
  background: #f0f4f8;
  color: #4d5b6c;
  font-weight: 800;
}

.fee-summary-table td strong,
.fee-summary-table td small {
  display: block;
}

.fee-summary-table td small {
  margin-top: 3px;
  color: var(--muted);
  line-height: 1.4;
}

.fee-summary-table .total-row td {
  background: #eef6f7;
  font-weight: 900;
}

.fee-side-card {
  display: grid;
  align-content: start;
  gap: 10px;
  padding: 12px;
}

.fee-review-card {
  grid-column: span 2;
}

.fee-card-title span {
  color: var(--teal);
  font-size: 13px;
  font-weight: 900;
}

.measure-list,
.cloud-check-list,
.fee-lock-summary,
.fee-review-list {
  display: grid;
  gap: 8px;
}

.measure-list p,
.cloud-check-list p,
.fee-lock-summary p,
.fee-review-list p {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
}

.measure-list p {
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
}

.measure-list span,
.cloud-check-list strong,
.fee-lock-summary strong,
.fee-review-list strong {
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.measure-list small,
.cloud-check-list span,
.cloud-check-list small,
.fee-lock-summary span,
.fee-lock-summary small,
.fee-review-list span,
.fee-review-list small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.measure-list strong {
  color: var(--ink);
  font-size: 12px;
}

.fee-lock-summary {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fee-lock-summary p[data-status="locked"],
.fee-review-list p[data-status="已锁定"] {
  border-color: rgba(39, 123, 102, 0.28);
}

.fee-lock-summary p[data-status="changed"],
.fee-review-list p[data-status="已撤回"] {
  border-color: rgba(190, 59, 55, 0.28);
}

.fee-lock-summary p[data-status="unlocked"],
.fee-review-list p[data-status="empty"],
.fee-review-list p[data-status="已重审替换"] {
  border-color: rgba(174, 113, 31, 0.3);
}

.cloud-check-list p[data-level="high"] {
  border-color: rgba(190, 59, 55, 0.28);
}

.cloud-check-list p[data-level="medium"] {
  border-color: rgba(174, 113, 31, 0.3);
}

.cloud-check-list p[data-level="low"] {
  border-color: rgba(35, 126, 116, 0.28);
}

.editor-summary,
.quota-candidates {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.editor-summary {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}

.quota-candidates {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 1180px) {
  .fee-summary-grid,
  .resource-analysis-grid,
  .native-import-grid {
    grid-template-columns: 1fr;
  }

  .fee-review-card {
    grid-column: auto;
  }

  .fee-lock-summary {
    grid-template-columns: 1fr;
  }
}

.quota-candidates article {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.quota-candidates span,
.empty-state {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.status-pill,
.risk-pill {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}

.status-pill.pass {
  background: #e8f5ee;
  color: var(--green);
}

.status-pill.warn {
  background: #fff4df;
  color: var(--amber);
}

.status-pill.danger {
  background: #ffeceb;
  color: var(--red);
}

.insight-panel {
  display: grid;
  gap: 14px;
}

.scenario-box,
.todo-box,
.ai-box,
.assistant-box,
.activity-box {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.scenario-box label {
  display: grid;
  grid-template-columns: 78px minmax(0, 1fr) 54px;
  gap: 10px;
  align-items: center;
  min-height: 38px;
  color: var(--muted);
  font-size: 13px;
}

.scenario-box strong {
  color: var(--text);
  text-align: right;
}

.pricing-rule-panel {
  display: grid;
  gap: 9px;
  margin-top: 12px;
  padding: 11px;
  border: 1px solid #d8e6f5;
  border-radius: 8px;
  background: #ffffff;
}

.pricing-rule-head {
  display: grid;
  gap: 3px;
}

.pricing-rule-head span,
.pricing-rule-panel p,
.pricing-rule-panel li,
.pricing-rule-metrics small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}

.pricing-rule-head strong {
  text-align: left;
  font-size: 13px;
}

.pricing-rule-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
}

.pricing-rule-metrics span {
  display: grid;
  gap: 2px;
  padding: 7px;
  border-radius: 8px;
  background: #f4f8fd;
}

.pricing-rule-metrics b {
  font-size: 12px;
}

.pricing-rule-panel ul {
  margin: 0;
  padding-left: 18px;
}

input[type="range"] {
  accent-color: var(--teal);
}

.finding-list,
.audit-board,
.change-list,
.market-grid,
.report-grid {
  display: grid;
  gap: 12px;
}

.finding {
  padding: 12px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--amber);
  border-radius: 8px;
  background: #ffffff;
}

.finding.high {
  border-left-color: var(--red);
}

.finding.low {
  border-left-color: var(--green);
}

.finding strong,
.finding span,
.finding small,
.finding em {
  display: block;
}

.finding strong {
  margin-bottom: 5px;
  font-size: 13px;
}

.finding em {
  width: max-content;
  max-width: 100%;
  margin-bottom: 6px;
  padding: 2px 7px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink);
  font-size: 11px;
  font-style: normal;
  background: #f6f8fb;
}

.finding span,
.finding small,
.assistant-narrative p,
.report-grid p,
.activity-log p {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.finding small {
  margin-top: 4px;
  color: var(--ink);
}

.finding-flow {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}

.finding-flow span {
  width: max-content;
  max-width: 100%;
  padding: 3px 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  color: var(--ink);
  background: #ffffff;
}

.finding-flow .sla-overdue {
  border-color: rgba(213, 79, 79, 0.32);
  color: var(--red);
  background: #fff4f4;
}

.finding-flow .sla-due-soon {
  border-color: rgba(196, 129, 43, 0.34);
  color: #9a5b09;
  background: #fff7e8;
}

.finding-flow .sla-closed {
  border-color: rgba(0, 137, 123, 0.28);
  color: var(--green);
  background: #edf9f6;
}

.finding-evidence {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}

.finding-evidence span {
  width: max-content;
  max-width: 100%;
  padding: 3px 7px;
  border: 1px dashed var(--line);
  border-radius: 6px;
  color: var(--muted);
  background: #fbfcfe;
}

.finding-evidence a {
  display: inline-block;
  margin-left: 6px;
  color: var(--teal);
  font-weight: 800;
  text-decoration: none;
}

.finding-evidence button {
  min-height: 0;
  margin: 0 0 0 6px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--teal);
  font-size: 12px;
  font-weight: 800;
}

.finding-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

.finding button {
  margin-top: 0;
}

.finding button:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}

.assistant-narrative {
  display: grid;
  gap: 10px;
}

.assistant-narrative p {
  margin-bottom: 0;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.role-meta {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.6;
}

.role-permission-panel {
  display: grid;
  gap: 10px;
  margin-bottom: 12px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.permission-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.permission-stats span {
  display: grid;
  gap: 2px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.permission-stats small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.permission-stats strong {
  font-size: 18px;
}

.permission-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.permission-chips span {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 999px;
  background: #eef4fb;
  color: #174d88;
  font-size: 12px;
  font-weight: 800;
}

.approval-flow {
  display: grid;
  grid-template-columns: auto 1fr auto 1fr auto;
  gap: 6px;
  align-items: center;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.approval-flow span {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 8px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface-soft);
}

.approval-flow span.active {
  border-color: #9bbfe4;
  background: #eef6ff;
  color: #174d88;
}

.approval-flow i {
  height: 1px;
  background: var(--line);
}

.role-handoff-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.role-handoff-actions button {
  min-height: 30px;
  flex: 1;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.role-handoff-actions button[data-role-action="handoff"] {
  border-color: #efcf9b;
  background: #fff8ed;
  color: var(--amber);
}

.role-handoff-actions button:disabled {
  opacity: 0.52;
  cursor: not-allowed;
}

.handoff-list {
  display: grid;
  gap: 7px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}

.handoff-list strong {
  font-size: 13px;
}

.handoff-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  margin: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-left: 4px solid #91a0b3;
  border-radius: 8px;
  background: var(--surface-soft);
}

.handoff-row[data-status="待接收"] {
  border-left-color: var(--amber);
}

.handoff-row[data-status="处理中"] {
  border-left-color: var(--blue);
}

.handoff-row[data-status="已闭环"] {
  border-left-color: var(--green);
}

.handoff-row > div:first-child {
  display: grid;
  gap: 3px;
}

.handoff-row span,
.handoff-row small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}

.handoff-row span {
  color: var(--text);
  font-weight: 800;
}

.handoff-row strong {
  font-size: 12px;
  line-height: 1.45;
}

.handoff-row-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.handoff-row-actions button {
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.handoff-row-actions button[data-handoff-action="receive"] {
  border-color: #efcf9b;
  background: #fff8ed;
  color: var(--amber);
}

.handoff-row-actions button[data-handoff-action="close"] {
  border-color: #a9d1b8;
  background: #edf8f1;
  color: var(--green);
}

.todo-list {
  display: grid;
  gap: 9px;
}

.todo-group {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.todo-group > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.todo-group > header strong {
  font-size: 13px;
}

.todo-group > header span {
  min-height: 22px;
  display: inline-flex;
  align-items: center;
  padding: 0 7px;
  border-radius: 999px;
  background: #eef4fb;
  color: var(--blue);
  font-size: 12px;
  font-weight: 800;
}

.todo-group[data-tone="red"] > header span {
  background: #ffeceb;
  color: var(--red);
}

.todo-group[data-tone="green"] > header span {
  background: #e8f5ee;
  color: var(--green);
}

.todo-group[data-tone="amber"] > header span {
  background: #fff4df;
  color: var(--amber);
}

.todo-item {
  display: grid;
  gap: 8px;
  padding: 11px;
  border: 1px solid var(--line);
  border-left: 4px solid #91a0b3;
  border-radius: 8px;
  background: #ffffff;
}

.todo-item.focus {
  border-left-color: var(--blue);
  background: #f7fbff;
}

.todo-item header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.todo-item strong {
  font-size: 13px;
  line-height: 1.45;
}

.todo-item header span {
  min-height: 22px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  padding: 0 7px;
  border-radius: 999px;
  background: #eef4fb;
  color: var(--blue);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.todo-item p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}

.todo-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.todo-actions button {
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.todo-actions button[data-todo-action="resolve"] {
  border-color: #9bbfe4;
  background: #eef6ff;
  color: #174d88;
}

.todo-actions button[data-todo-action="handoff"] {
  border-color: #efcf9b;
  background: #fff8ed;
  color: var(--amber);
}

.completed-todos {
  display: grid;
  gap: 7px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fafb;
}

.completed-todos > strong {
  font-size: 13px;
}

.completed-todos p {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}

.completed-todos span {
  min-height: 20px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  padding: 0 6px;
  border-radius: 999px;
  background: #e8f5ee;
  color: var(--green);
  font-weight: 800;
}

.market-item,
.audit-card,
.change-item,
.report-grid article {
  padding: 14px;
}

.material-name-input,
.change-name-input {
  width: 100%;
  min-height: 34px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--text);
  font-weight: 800;
}

.lock-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.material-actions button {
  min-height: 30px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.material-input-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}

.market-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.market-item,
.audit-card,
.change-item {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.market-item header,
.audit-card header,
.change-item header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.market-item strong,
.audit-card strong,
.change-item strong {
  font-size: 15px;
}

.market-item small,
.audit-card small,
.change-item small {
  color: var(--muted);
}

.market-number {
  font-size: 25px;
  font-weight: 850;
}

.market-up {
  color: var(--red);
}

.market-down {
  color: var(--green);
}

.audit-board {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.audit-card ul,
.change-item ul {
  margin: 10px 0 0;
  padding-left: 18px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.change-list {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.approval-flow-list {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}

.approval-flow-header,
.approval-card header,
.approval-meta,
.approval-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.approval-flow-header {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.approval-flow-header span,
.approval-card span,
.approval-card small,
.approval-meta {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.approval-card {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: #ffffff;
}

.approval-card[data-status="已通过"] {
  border-left-color: var(--green);
}

.approval-card[data-status="已退回"] {
  border-left-color: var(--amber);
}

.approval-card header strong {
  display: block;
  margin-top: 3px;
}

.approval-card header em {
  min-width: 58px;
  padding: 4px 7px;
  border-radius: 999px;
  background: #eef6ff;
  color: #174d88;
  font-size: 12px;
  font-style: normal;
  font-weight: 850;
  text-align: center;
}

.approval-stepper {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}

.approval-stepper span {
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 6px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface-soft);
  font-weight: 850;
}

.approval-stepper span.done {
  border-color: #b7dfca;
  background: #eef9f3;
  color: var(--green);
}

.approval-stepper span.active {
  border-color: #9bbfe4;
  background: #eef6ff;
  color: #174d88;
}

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

.approval-actions button {
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface-soft);
  color: var(--ink);
  font-size: 12px;
  font-weight: 850;
}

.change-form {
  grid-template-columns: minmax(160px, 1fr) 150px 130px minmax(160px, 1fr) auto;
  align-items: center;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.inline-edit {
  margin-bottom: 8px;
}

.activity-log {
  display: grid;
  gap: 8px;
}

.activity-log p {
  margin: 0;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.activity-log strong,
.activity-log span {
  display: block;
}

.activity-log strong {
  color: var(--text);
  font-size: 12px;
}

.report-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.report-grid article {
  display: flex;
  min-height: 180px;
  flex-direction: column;
  align-items: flex-start;
}

.report-grid p {
  flex: 1;
}

.workflow-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
}

.workflow-card {
  display: grid;
  gap: 7px;
  min-height: 118px;
  padding: 13px;
  border: 1px solid var(--line);
  border-top: 4px solid var(--blue);
  border-radius: 8px;
  background: #ffffff;
}

.workflow-card:hover {
  border-color: #9ab7d8;
  box-shadow: 0 10px 28px rgba(31, 111, 235, 0.1);
}

.workflow-card span,
.workflow-card small,
.takeoff-dropzone span,
.takeoff-sheet small,
.takeoff-suggestion small,
.procurement-card small,
.contract-row small,
.forecast-card small,
.integration-card p {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.workflow-card strong {
  font-size: 18px;
}

.workflow-card.teal {
  border-top-color: var(--teal);
}

.workflow-card.green {
  border-top-color: var(--green);
}

.workflow-card.amber {
  border-top-color: var(--amber);
}

.workflow-card.red {
  border-top-color: var(--red);
}

.takeoff-layout,
.contract-layout,
.forecast-layout {
  display: grid;
  gap: 14px;
}

.takeoff-layout,
.contract-layout,
.forecast-layout {
  grid-template-columns: minmax(0, 1fr) minmax(320px, 0.85fr);
}

.takeoff-studio-layout {
  grid-template-columns: minmax(360px, 1.05fr) minmax(340px, 0.9fr) minmax(320px, 0.85fr);
}

.takeoff-console,
.contract-panel,
.forecast-panel {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.takeoff-dropzone {
  display: grid;
  gap: 8px;
  min-height: 118px;
  align-content: center;
  margin-bottom: 12px;
  padding: 18px;
  border: 1px dashed #9fb0c3;
  border-radius: 8px;
  background: #ffffff;
}

.takeoff-dropzone.is-dragover {
  border-color: var(--teal);
  background: #edf9f6;
}

.takeoff-dropzone strong {
  font-size: 18px;
}

.takeoff-sheet-list,
.takeoff-suggestion-list,
.drawing-file-list,
.drawing-vision-panel,
.drawing-version-diff-panel,
.ocr-service-panel,
.takeoff-parse-queue,
.recognition-component-list,
.quantity-rule-panel,
.contract-ledger,
.cost-control-list,
.forecast-cards,
.integration-grid {
  display: grid;
  gap: 10px;
}

.takeoff-sheet,
.takeoff-suggestion,
.drawing-file-card,
.version-diff-card,
.parse-job-card,
.recognition-component,
.quantity-rule-card,
.contract-row,
.cost-control,
.forecast-card,
.integration-card,
.procurement-card {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.drawing-preview-panel {
  position: relative;
  min-height: 280px;
  display: grid;
  place-items: center;
  margin: 12px 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #101a26;
  color: #f7fbff;
}

.drawing-preview-panel.is-calibrating {
  cursor: crosshair;
  outline: 2px solid rgba(0, 137, 123, 0.25);
}

.drawing-preview-panel img,
.drawing-preview-panel iframe {
  width: 100%;
  height: 280px;
  display: block;
  border: 0;
  object-fit: contain;
  background: #ffffff;
}

.drawing-preview-empty,
.drawing-vector-preview {
  position: relative;
  width: 100%;
  min-height: 280px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  padding: 20px;
  text-align: center;
  background-image: linear-gradient(rgba(255, 255, 255, 0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.08) 1px, transparent 1px);
  background-size: 28px 28px;
}

.drawing-vector-preview i,
.drawing-vector-preview b {
  position: absolute;
  display: block;
  border: 1px solid rgba(116, 204, 196, 0.78);
  background: rgba(116, 204, 196, 0.1);
}

.drawing-vector-preview b {
  border-color: rgba(228, 163, 79, 0.8);
}

.drawing-preview-meta {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 2;
  display: grid;
  gap: 2px;
  max-width: calc(100% - 20px);
  padding: 8px 10px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 8px;
  background: rgba(16, 26, 38, 0.82);
  color: #f7fbff;
}

.drawing-preview-meta span,
.drawing-preview-meta small,
.drawing-preview-empty span,
.drawing-vector-preview small {
  color: rgba(247, 251, 255, 0.72);
  font-size: 12px;
}

.calibration-overlay {
  position: absolute;
  inset: 0;
  z-index: 3;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.calibration-overlay line {
  stroke: #e4a34f;
  stroke-width: 0.8;
}

.calibration-overlay circle {
  fill: #ffffff;
  stroke: #e4a34f;
  stroke-width: 0.4;
}

.calibration-panel {
  display: grid;
  gap: 10px;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.takeoff-quality-panel {
  display: grid;
  gap: 10px;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.measurement-rule-panel {
  display: grid;
  gap: 10px;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.schedule-extract-panel {
  display: grid;
  gap: 10px;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.measurement-rule-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.measurement-rule-header > div {
  display: grid;
  gap: 3px;
}

.measurement-rule-header span,
.measurement-rule-grid span {
  color: var(--muted);
  font-size: 12px;
}

.schedule-extract-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.schedule-extract-header > div {
  display: grid;
  gap: 3px;
}

.schedule-extract-header span {
  color: var(--muted);
  font-size: 12px;
}

.measurement-rule-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.measurement-rule-actions button,
.schedule-extract-actions button {
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font-weight: 800;
}

.schedule-extract-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.schedule-extract-panel textarea {
  width: 100%;
  min-height: 92px;
  resize: vertical;
}

.schedule-row-list {
  display: grid;
  gap: 8px;
}

.schedule-row-list article {
  display: grid;
  grid-template-columns: minmax(70px, 0.7fr) minmax(0, 1.5fr) minmax(64px, auto);
  gap: 8px;
  align-items: center;
  padding: 8px;
  border-radius: 6px;
  background: #f6f8fb;
}

.schedule-row-list span {
  min-width: 0;
  color: var(--muted);
  font-size: 12px;
}

.schedule-row-list em {
  justify-self: end;
  color: var(--blue);
  font-style: normal;
  font-weight: 800;
  font-size: 12px;
}

.measurement-rule-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.measurement-rule-grid label {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.measurement-rule-grid label:first-child {
  grid-column: 1 / -1;
}

.measurement-rule-grid input,
.measurement-rule-grid select {
  width: 100%;
  min-width: 0;
}

.quality-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.ocr-service-header,
.vision-header,
.version-diff-header,
.parse-queue-header,
.parse-job-card header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.ocr-service-header,
.vision-header,
.version-diff-header,
.parse-queue-header {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.ocr-service-header > div,
.vision-header > div,
.version-diff-header > div,
.parse-queue-header > div,
.parse-job-card header > div {
  display: grid;
  gap: 3px;
}

.ocr-service-header span,
.vision-header span,
.version-diff-header span,
.ocr-callback-line span,
.ocr-callback-line small,
.parse-queue-header span,
.parse-job-card span,
.parse-job-card small {
  min-width: 0;
  color: var(--muted);
  font-size: 12px;
}

.ocr-service-header em,
.version-diff-card header em,
.parse-queue-header em,
.parse-job-card header em {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 999px;
  background: #edf9f6;
  color: var(--teal);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
  white-space: nowrap;
}

.vision-header button,
.version-diff-header button {
  min-height: 30px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.vision-header button:not(:disabled):hover,
.version-diff-header button:not(:disabled):hover {
  border-color: var(--teal);
  color: var(--teal);
}

.vision-header button:disabled,
.version-diff-header button:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}

.vision-metrics {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
}

.vision-metrics span {
  min-width: 0;
  display: grid;
  gap: 2px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f8fafc;
}

.vision-metrics strong {
  color: var(--ink);
  font-size: 15px;
}

.vision-metrics small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.axis-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.axis-chip-list span,
.vision-issues span {
  padding: 5px 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.axis-chip-list.muted span {
  background: #f8fafc;
}

.vision-issues {
  display: grid;
  gap: 6px;
}

.version-diff-card {
  display: grid;
  gap: 9px;
}

.version-diff-card header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.version-diff-card header > div {
  display: grid;
  gap: 3px;
}

.version-diff-card span,
.version-diff-card small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.ocr-service-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.ocr-service-grid label {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.ocr-service-grid label:nth-child(2),
.ocr-service-grid label:nth-child(3) {
  grid-column: 1 / -1;
}

.ocr-service-grid span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.ocr-service-grid input,
.ocr-service-grid select {
  width: 100%;
  min-width: 0;
}

.ocr-callback-line {
  display: grid;
  gap: 4px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fafc;
}

.ocr-service-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.ocr-service-actions button {
  min-height: 30px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.ocr-service-actions button:not(:disabled):hover {
  border-color: var(--teal);
  color: var(--teal);
}

.ocr-service-actions button:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}

.parse-job-card {
  display: grid;
  gap: 10px;
}

.parse-job-card.applied {
  border-color: rgba(0, 137, 123, 0.28);
  background: #fbfffe;
}

.parse-stage-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 8px;
}

.parse-stage-list span {
  display: grid;
  gap: 2px;
  padding: 8px;
  border-radius: 6px;
  background: #f6f8fb;
}

.parse-stage-list span[data-status="通过"] {
  background: #edf9f6;
}

.parse-stage-list span[data-status="需补充"] {
  background: #fff4e6;
}

.parse-stage-list strong,
.parse-finding-list strong,
.parse-table-preview strong {
  color: var(--ink);
  font-size: 12px;
}

.parse-finding-list {
  display: grid;
  gap: 8px;
}

.parse-finding-list p,
.parse-table-preview,
.parse-draft-list {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 9px;
  border-radius: 6px;
  background: #f8fafc;
}

.parse-table-preview span {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

.parse-draft-list span {
  overflow-wrap: anywhere;
}

.parse-batch-actions,
.parse-job-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.parse-batch-actions {
  justify-content: flex-end;
  padding-bottom: 2px;
}

.parse-assignment-line {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.parse-assignment-line span {
  min-height: 30px;
  padding: 7px 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f8fafc;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  overflow-wrap: anywhere;
}

.parse-batch-actions button,
.parse-job-actions button {
  min-height: 30px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.parse-batch-actions button:not(:disabled):hover,
.parse-job-actions button:not(:disabled):hover {
  border-color: var(--teal);
  color: var(--teal);
}

.parse-batch-actions button:disabled,
.parse-job-actions button:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}

.quantity-rule-summary,
.quantity-rule-card header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.quantity-rule-summary {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.quantity-rule-summary > div,
.quantity-rule-card header > div {
  display: grid;
  gap: 3px;
}

.quantity-rule-summary span,
.quantity-rule-card span,
.quantity-rule-card small,
.quantity-diagnostics small {
  color: var(--muted);
  font-size: 12px;
}

.quantity-rule-summary em,
.quantity-rule-card header em {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 999px;
  background: #eef4fb;
  color: var(--blue);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.quantity-rule-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin: 10px 0;
}

.quantity-boq-gate {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-top: 8px;
}

.quantity-rule-grid span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px;
  border-radius: 6px;
  background: #f6f8fb;
}

.quantity-boq-gate span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
}

.quantity-boq-gate[data-status="ready"] span:first-child {
  border-color: rgba(16, 128, 93, 0.28);
  background: #eef8f3;
}

.quantity-boq-gate[data-status="warning"] span:first-child {
  border-color: rgba(182, 116, 20, 0.3);
  background: #fff8e8;
}

.quantity-boq-gate[data-status="blocked"] span:first-child {
  border-color: rgba(198, 53, 53, 0.28);
  background: #fff1f1;
}

.quantity-rule-grid strong {
  overflow-wrap: anywhere;
  color: var(--ink);
  font-size: 13px;
}

.quantity-boq-gate strong {
  overflow-wrap: anywhere;
  color: var(--ink);
  font-size: 12px;
}

.quantity-rule-card {
  display: grid;
  gap: 6px;
}

.quantity-rule-card.pushed {
  opacity: 0.68;
}

.quantity-rule-trace {
  margin-top: 4px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfe;
}

.quantity-rule-trace summary {
  cursor: pointer;
  padding: 9px 10px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.quantity-rule-trace[open] summary {
  border-bottom: 1px solid var(--line);
}

.quantity-trace-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 8px;
  padding: 10px;
}

.quantity-trace-grid span,
.quantity-trace-block,
.quantity-trace-checks span {
  border-radius: 6px;
  background: #ffffff;
}

.quantity-trace-grid span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px;
}

.quantity-trace-grid strong {
  overflow-wrap: anywhere;
  color: var(--ink);
  font-size: 12px;
}

.quantity-trace-grid small {
  color: var(--muted);
  font-size: 11px;
}

.quantity-trace-block {
  display: grid;
  gap: 5px;
  margin: 0 10px 8px;
  padding: 9px;
}

.quantity-trace-block strong {
  font-size: 12px;
}

.quantity-trace-block span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.quantity-trace-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 0 10px 10px;
}

.quantity-trace-checks span {
  padding: 5px 8px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.quantity-rule-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.quantity-rule-actions button {
  min-height: 30px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.quantity-rule-actions button:not(:disabled):hover {
  border-color: var(--blue);
  color: var(--blue);
}

.quantity-rule-actions button:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}

.quantity-diagnostics {
  display: grid;
  gap: 8px;
}

.quantity-diagnostics p {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.quantity-diagnostics p[data-level="风险"],
.quantity-diagnostics p[data-level="待复核"] {
  border-color: #f0c36a;
  background: #fffaf0;
}

.quality-header > div {
  display: grid;
  gap: 3px;
}

.quality-header span {
  color: var(--muted);
  font-size: 12px;
}

.quality-header em {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 999px;
  background: #eef4fb;
  color: var(--blue);
  font-size: 12px;
  font-style: normal;
  font-weight: 850;
}

.quality-gate-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.quality-gate-grid span {
  display: grid;
  gap: 3px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.quality-gate-grid span[data-status="通过"] {
  border-color: rgba(36, 122, 79, 0.28);
  background: #eef8f2;
}

.quality-gate-grid span[data-status="待复核"],
.quality-gate-grid span[data-status="警告"] {
  border-color: rgba(180, 105, 14, 0.3);
  background: #fff7ea;
}

.quality-gate-grid strong {
  font-size: 13px;
}

.quality-gate-grid small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

.calibration-panel > div:first-child {
  display: grid;
  gap: 3px;
}

.calibration-panel span,
.calibration-panel small {
  color: var(--muted);
  font-size: 12px;
}

.calibration-inputs {
  display: grid;
  grid-template-columns: auto minmax(110px, 1fr) minmax(90px, 0.7fr) auto;
  gap: 8px;
  align-items: end;
}

.calibration-inputs label {
  display: grid;
  gap: 4px;
}

.calibration-inputs input,
.calibration-inputs select {
  width: 100%;
  min-height: 34px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0 9px;
  background: #ffffff;
}

.drawing-file-card {
  width: 100%;
  display: grid;
  gap: 4px;
  text-align: left;
  color: var(--text);
}

.drawing-file-card.active {
  border-color: rgba(0, 137, 123, 0.45);
  box-shadow: inset 3px 0 0 var(--teal);
}

.drawing-file-card span,
.recognition-component header span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.drawing-file-card small,
.recognition-component small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.recognition-component {
  display: grid;
  gap: 10px;
}

.recognition-component.pushed {
  opacity: 0.72;
}

.recognition-component header {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: flex-start;
}

.recognition-component header > div {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.recognition-component em {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 999px;
  background: #edf9f6;
  color: var(--teal);
  font-size: 12px;
  font-style: normal;
  font-weight: 850;
}

.recognition-component-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.recognition-component-meta span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px;
  border-radius: 8px;
  background: var(--surface-soft);
}

.recognition-component-meta small {
  color: var(--muted);
  font-size: 11px;
}

.evidence-list,
.sync-log-list,
.payment-list,
.project-file-list {
  display: grid;
  gap: 8px;
}

.evidence-title,
.sync-log-title {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.evidence-list p,
.sync-log-list p,
.payment-list p,
.project-file-list p {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.evidence-list span,
.sync-log-list span,
.payment-list span,
.project-file-list span,
.evidence-list small,
.sync-log-list small,
.payment-list small,
.project-file-list small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.project-file-box {
  display: grid;
  gap: 10px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

.project-file-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.project-file-actions button {
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid #c9d8ea;
  border-radius: 8px;
  background: #f4f8fd;
  color: #174d88;
  font-size: 12px;
  font-weight: 850;
}

.project-file-actions em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.takeoff-sheet header,
.takeoff-suggestion,
.procurement-card header,
.contract-row header,
.forecast-card header,
.integration-card header,
.cost-control > div:first-child {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.takeoff-sheet header span,
.procurement-card header em,
.contract-row header em,
.integration-card em {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 999px;
  background: #eef4fb;
  color: var(--blue);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.takeoff-suggestion.pushed {
  opacity: 0.68;
}

.takeoff-suggestion button {
  min-height: 32px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font-weight: 800;
}

.compact-meter,
.contract-bars i {
  display: block;
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: #e2e8f0;
}

.compact-meter span,
.contract-bars b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}

.procurement-board {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.procurement-card p,
.forecast-card p,
.integration-card p {
  margin: 8px 0 10px;
}

.procurement-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin: 12px 0;
}

.procurement-metrics span {
  display: grid;
  gap: 3px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.contract-meta-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin: 12px 0 4px;
}

.contract-meta-grid span {
  display: grid;
  gap: 3px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-soft);
}

.contract-meta-grid small {
  color: var(--muted);
  font-size: 12px;
}

.procurement-metrics small,
.contract-row span,
.forecast-card p {
  color: var(--muted);
  font-size: 12px;
}

.contract-bars {
  display: grid;
  gap: 9px;
  margin: 12px 0;
}

.contract-bars label {
  display: grid;
  gap: 5px;
}

.contract-row em.ok {
  background: #e7f4ed;
  color: var(--green);
}

.contract-row em.watch {
  background: #fff4df;
  color: var(--amber);
}

.contract-clause-list {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 10px;
}

.contract-clause-list span {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 0 8px;
  border-radius: 999px;
  background: #eef6ff;
  color: #174d88;
  font-size: 12px;
  font-weight: 800;
}

.cost-control {
  display: grid;
  gap: 9px;
}

.cost-control.watch .compact-meter span,
.forecast-card .compact-meter span {
  background: linear-gradient(90deg, var(--amber), var(--red));
}

.cost-control.baseline .compact-meter span {
  background: #738196;
}

.forecast-card header span {
  color: var(--red);
  font-size: 18px;
  font-weight: 850;
}

.integration-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.integration-card header span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.integration-card header strong {
  display: block;
  margin-top: 3px;
}

.toast {
  position: fixed;
  right: 24px;
  bottom: 24px;
  max-width: min(360px, calc(100vw - 48px));
  padding: 12px 14px;
  border-radius: 8px;
  background: #182331;
  color: #ffffff;
  box-shadow: var(--shadow);
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition: opacity 160ms ease, transform 160ms ease;
}

.toast.show {
  opacity: 1;
  transform: translateY(0);
}

.undo-toast {
  position: fixed;
  left: 50%;
  bottom: 24px;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: min(420px, calc(100vw - 48px));
  padding: 11px 12px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 8px;
  background: #111a24;
  color: #ffffff;
  box-shadow: var(--shadow);
  opacity: 0;
  transform: translate(-50%, 12px);
  pointer-events: none;
  transition: opacity 160ms ease, transform 160ms ease;
}

.undo-toast.show {
  opacity: 1;
  transform: translate(-50%, 0);
  pointer-events: auto;
}

.undo-toast button {
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid rgba(255, 255, 255, 0.24);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.1);
  color: #ffffff;
  font-weight: 800;
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 30;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(17, 26, 36, 0.42);
}

.modal-backdrop.show {
  display: flex;
}

.confirm-dialog {
  width: min(420px, 100%);
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  box-shadow: var(--shadow);
}

.confirm-dialog h3 {
  margin-bottom: 8px;
  font-size: 17px;
}

.confirm-dialog p {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 16px;
}

.diff-list {
  display: grid;
  gap: 9px;
  margin-top: 12px;
}

.diff-title {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.diff-item,
.export-history-list p {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.database-readiness-panel {
  display: grid;
  gap: 9px;
  margin: 10px 0;
}

.database-score {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #eef8f6;
}

.database-score strong {
  color: var(--teal);
  font-size: 28px;
  line-height: 1;
}

.database-score span {
  color: var(--ink);
  font-size: 13px;
  font-weight: 900;
}

.database-score[data-status="warning"] {
  background: #fff7e7;
}

.database-score[data-status="warning"] strong {
  color: #a66a1d;
}

.database-score[data-status="blocked"] {
  background: #fae8e6;
}

.database-score[data-status="blocked"] strong {
  color: var(--red);
}

.database-check-list {
  display: grid;
  gap: 7px;
}

.database-check-list p {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.database-check-list strong,
.database-check-list span {
  display: block;
  font-size: 12px;
  line-height: 1.45;
}

.database-check-list span {
  color: var(--muted);
}

.database-check-list p[data-level="high"] {
  border-color: rgba(190, 59, 55, 0.28);
}

.database-check-list p[data-level="medium"] {
  border-color: rgba(174, 113, 31, 0.3);
}

.database-task-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.database-task-actions button,
.database-task-list button {
  min-height: 30px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.database-task-actions span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.database-task-list {
  display: grid;
  gap: 7px;
}

.database-task-list article {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.database-task-list article[data-level="high"] {
  border-color: rgba(190, 59, 55, 0.28);
}

.database-task-list article[data-status="已闭环"] {
  border-color: rgba(39, 123, 102, 0.28);
  background: #f3fbf7;
}

.database-task-list strong,
.database-task-list span,
.database-task-list small {
  display: block;
  font-size: 12px;
  line-height: 1.45;
}

.database-task-list span,
.database-task-list small,
.database-task-empty {
  color: var(--muted);
}

.pilot-acceptance-panel {
  display: grid;
  gap: 8px;
  margin-top: 10px;
}

.pilot-command-center {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.pilot-command-center[data-status="green"] {
  border-color: rgba(39, 123, 102, 0.28);
  background: #f3fbf7;
}

.pilot-command-center[data-status="amber"] {
  border-color: rgba(166, 106, 29, 0.25);
  background: #fffaf0;
}

.pilot-command-center[data-status="blue"] {
  border-color: rgba(44, 111, 187, 0.24);
  background: #f4f8ff;
}

.pilot-command-head {
  display: grid;
  gap: 8px;
}

.pilot-command-head strong,
.pilot-command-head span,
.pilot-command-gates strong,
.pilot-command-gates span,
.pilot-command-gates small,
.pilot-command-next strong,
.pilot-command-next span,
.pilot-command-next small {
  display: block;
  font-size: 12px;
  line-height: 1.4;
}

.pilot-command-head span,
.pilot-command-gates span,
.pilot-command-gates small,
.pilot-command-next span,
.pilot-command-next small {
  color: var(--muted);
}

.pilot-command-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.pilot-command-actions button {
  min-height: 30px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.pilot-command-gates {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.pilot-command-gates p,
.pilot-command-next {
  margin: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.78);
}

.pilot-command-gates p[data-pass="true"] {
  border-color: rgba(39, 123, 102, 0.25);
  background: #f3fbf7;
}

.pilot-command-gates p[data-pass="false"] {
  border-color: rgba(166, 106, 29, 0.22);
  background: #fffaf0;
}

.pilot-score,
.pilot-actions {
  display: grid;
  gap: 4px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f8fafc;
}

.pilot-score strong {
  color: var(--teal);
  font-size: 24px;
  line-height: 1;
}

.pilot-score span,
.pilot-actions span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.pilot-score[data-status*="整改"] {
  background: #fff7f6;
}

.pilot-score[data-status*="整改"] strong {
  color: var(--red);
}

.pilot-score[data-status*="条件"] {
  background: #fff7e7;
}

.pilot-score[data-status*="条件"] strong {
  color: #a66a1d;
}

.pilot-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  grid-template-columns: none;
}

.pilot-actions button,
.pilot-task-actions button {
  min-height: 30px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.pilot-actions span {
  flex: 1 1 180px;
  min-width: 180px;
}

.pilot-task-list {
  display: grid;
  gap: 7px;
}

.pilot-task-list article {
  display: grid;
  gap: 8px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.pilot-task-list article[data-level="high"] {
  border-color: rgba(190, 59, 55, 0.28);
}

.pilot-task-list article[data-status="已闭环"] {
  border-color: rgba(39, 123, 102, 0.28);
  background: #f3fbf7;
}

.pilot-task-list strong,
.pilot-task-list span,
.pilot-task-list small,
.pilot-task-empty {
  display: block;
  font-size: 12px;
  line-height: 1.45;
}

.pilot-task-list span,
.pilot-task-list small,
.pilot-task-empty {
  color: var(--muted);
}

.pilot-archive-portal {
  display: grid;
  gap: 9px;
  padding: 10px;
  border: 1px solid rgba(44, 111, 187, 0.24);
  border-radius: 8px;
  background: #f7fbff;
}

.pilot-archive-portal[data-status="passed"] {
  border-color: rgba(39, 123, 102, 0.28);
  background: #f3fbf7;
}

.pilot-archive-portal[data-status="review"] {
  border-color: rgba(166, 106, 29, 0.25);
  background: #fffaf0;
}

.pilot-archive-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}

.pilot-archive-head strong,
.pilot-archive-head span,
.pilot-archive-list strong,
.pilot-archive-list span {
  display: block;
  font-size: 12px;
  line-height: 1.4;
}

.pilot-archive-head span,
.pilot-archive-list span {
  color: var(--muted);
}

.pilot-archive-head button {
  min-height: 30px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.pilot-archive-head-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.pilot-archive-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.pilot-archive-metrics span {
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.82);
}

.pilot-archive-metrics small,
.pilot-archive-metrics b {
  display: block;
  overflow-wrap: anywhere;
  font-size: 12px;
  line-height: 1.35;
}

.pilot-archive-metrics small {
  color: var(--muted);
}

.pilot-archive-split {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}

.pilot-archive-list {
  min-width: 0;
  display: grid;
  gap: 6px;
}

.pilot-archive-list > strong {
  color: var(--ink);
  font-weight: 900;
}

.pilot-archive-list p {
  min-width: 0;
  margin: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.82);
  overflow-wrap: anywhere;
}

.pilot-archive-list p[data-pass="true"] {
  border-color: rgba(39, 123, 102, 0.28);
  background: #ffffff;
}

.pilot-archive-list p[data-pass="false"] {
  border-color: rgba(166, 106, 29, 0.22);
  background: #fffaf0;
}

.pilot-task-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.pilot-orchestration {
  display: grid;
  gap: 8px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.pilot-orchestration > div:first-child strong,
.pilot-orchestration > div:first-child span {
  display: block;
  font-size: 12px;
  line-height: 1.45;
}

.pilot-orchestration > div:first-child span {
  color: var(--muted);
}

.pilot-stage-strip {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.pilot-stage-strip p,
.pilot-plan-list p {
  margin: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #f8fafc;
}

.pilot-stage-strip p[data-active="true"] {
  border-color: rgba(44, 111, 187, 0.24);
  background: #f4f8ff;
}

.pilot-stage-strip strong,
.pilot-stage-strip span,
.pilot-plan-list strong,
.pilot-plan-list span {
  display: block;
  font-size: 12px;
  line-height: 1.4;
}

.pilot-stage-strip span,
.pilot-plan-list span {
  color: var(--muted);
}

.pilot-plan-list {
  display: grid;
  gap: 6px;
}

.pilot-plan-list p[data-runnable="true"] {
  border-color: rgba(39, 123, 102, 0.28);
  background: #f3fbf7;
}

.pilot-pipeline-summary {
  display: grid;
  gap: 3px;
  padding: 8px;
  border: 1px solid rgba(44, 111, 187, 0.24);
  border-radius: 7px;
  background: #f4f8ff;
}

.pilot-pipeline-summary[data-status="已达标"] {
  border-color: rgba(39, 123, 102, 0.28);
  background: #f3fbf7;
}

.pilot-pipeline-summary strong,
.pilot-pipeline-summary span,
.pilot-pipeline-summary small {
  display: block;
  font-size: 12px;
  line-height: 1.4;
}

.pilot-pipeline-summary span,
.pilot-pipeline-summary small {
  color: var(--muted);
}

.pilot-review-workbench {
  display: grid;
  gap: 8px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.pilot-review-head {
  display: grid;
  gap: 8px;
}

.pilot-review-head strong,
.pilot-review-head span,
.pilot-review-list strong,
.pilot-review-list span,
.pilot-review-list small {
  display: block;
  font-size: 12px;
  line-height: 1.4;
}

.pilot-review-head span,
.pilot-review-list span,
.pilot-review-list small {
  color: var(--muted);
}

.pilot-review-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.pilot-review-actions button,
.pilot-review-task-actions button {
  min-height: 30px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}

.pilot-review-task-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
}

.pilot-review-task-actions button {
  min-height: 28px;
  font-size: 11px;
}

.pilot-review-list {
  display: grid;
  gap: 6px;
}

.pilot-review-list p {
  margin: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #f8fafc;
}

.pilot-review-list p[data-state="可通过"] {
  border-color: rgba(39, 123, 102, 0.28);
  background: #f3fbf7;
}

.pilot-review-list p[data-state="需退回补证"] {
  border-color: rgba(190, 59, 55, 0.24);
  background: #fff7f6;
}

.database-runtime-panel {
  display: grid;
  gap: 9px;
  margin: 10px 0;
}

.database-runtime-empty {
  margin: 0;
  padding: 10px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  color: var(--muted);
  background: #ffffff;
  font-size: 12px;
  line-height: 1.5;
}

.runtime-status {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f3f7fb;
}

.runtime-status strong {
  color: var(--blue);
  font-size: 18px;
  line-height: 1;
}

.runtime-status span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.runtime-status[data-status="ready"] {
  background: #eef8f6;
}

.runtime-status[data-status="ready"] strong {
  color: var(--teal);
}

.runtime-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}

.runtime-grid p {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.runtime-grid span,
.database-runtime-panel small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}

.runtime-grid strong {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.25;
}

.runtime-module-panel {
  display: grid;
  gap: 9px;
  margin: 10px 0;
}

.runtime-module-empty,
.quota-runtime-empty,
.quota-audit-empty {
  margin: 0;
  padding: 10px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  color: var(--muted);
  background: #ffffff;
  font-size: 12px;
  line-height: 1.5;
}

.quota-runtime-panel {
  display: grid;
  gap: 9px;
  margin: 10px 0;
}

.quota-audit-panel {
  display: grid;
  gap: 9px;
  margin: 10px 0;
}

.authority-source-panel {
  display: grid;
  gap: 8px;
  margin: 10px 0;
}

.authority-source-row {
  display: grid;
  gap: 5px;
  padding: 10px;
  border: 1px solid rgba(35, 83, 145, 0.18);
  border-radius: 8px;
  background: #f8fbff;
}

.authority-source-row[data-status="review"] {
  border-color: rgba(217, 119, 6, 0.26);
  background: #fffaf0;
}

.authority-source-row div {
  display: grid;
  gap: 2px;
}

.authority-source-row strong {
  color: var(--ink);
  font-size: 13px;
  line-height: 1.35;
}

.authority-source-row span,
.authority-source-row p,
.authority-source-row small {
  min-width: 0;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 750;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.quota-runtime-score {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border: 1px solid rgba(31, 111, 104, 0.16);
  border-radius: 8px;
  background: #eef8f6;
}

.quota-runtime-score strong {
  color: var(--teal);
  font-size: 20px;
  line-height: 1;
}

.quota-runtime-score span {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
}

.quota-audit-status {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f7fafc;
}

.quota-audit-status[data-status="ready"] {
  background: #eef8f6;
}

.quota-audit-status[data-status="blocked"] {
  border-color: rgba(190, 59, 55, 0.24);
  background: #fff5f4;
}

.quota-audit-status strong {
  color: var(--ink);
  font-size: 18px;
  line-height: 1;
}

.quota-audit-status[data-status="ready"] strong {
  color: var(--teal);
}

.quota-audit-status[data-status="blocked"] strong {
  color: #be3b37;
}

.quota-audit-status span {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
}

.module-metrics,
.quota-runtime-metrics,
.quota-audit-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}

.module-metrics.compact {
  grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
}

.cost-outcome-panel {
  display: grid;
  gap: 10px;
}

.cost-outcome-package {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
  gap: 7px;
  padding: 9px;
  border: 1px solid #d8e2ef;
  border-radius: 8px;
  background: #f8fbff;
}

.cost-outcome-package[data-status="low"] {
  border-color: rgba(22, 163, 74, 0.24);
  background: #f0fdf4;
}

.cost-outcome-package[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffbeb;
}

.cost-outcome-package[data-status="high"] {
  border-color: rgba(220, 38, 38, 0.26);
  background: #fff7f7;
}

.cost-outcome-package p {
  display: grid;
  gap: 3px;
  min-width: 0;
  margin: 0;
}

.cost-outcome-package p.wide {
  grid-column: 1 / -1;
}

.cost-outcome-package span {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.3;
}

.cost-outcome-package strong {
  min-width: 0;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.cost-outcome-action-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.cost-outcome-action-row button {
  min-height: 30px;
  padding: 6px 10px;
  border: 1px solid #cbd5e1;
  border-radius: 7px;
  color: #0f172a;
  background: #ffffff;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.1;
}

.cost-outcome-action-row button:last-child {
  border-color: #2563eb;
  color: #ffffff;
  background: #2563eb;
}

.cost-outcome-action-row button:disabled {
  cursor: not-allowed;
  border-color: #cbd5e1;
  color: #94a3b8;
  background: #f1f5f9;
}

.cost-outcome-workflow {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 8px;
}

.cost-outcome-workflow section {
  display: grid;
  gap: 6px;
  min-width: 0;
}

.cost-outcome-workflow h4 {
  margin: 0;
  color: var(--ink);
  font-size: 13px;
  font-weight: 800;
}

.cost-outcome-workflow p {
  display: grid;
  gap: 3px;
  min-width: 0;
  margin: 0;
  padding: 8px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: #ffffff;
}

.cost-outcome-workflow p[data-status="low"] {
  border-color: rgba(22, 163, 74, 0.24);
  background: #f0fdf4;
}

.cost-outcome-workflow p[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffbeb;
}

.cost-outcome-workflow p[data-status="high"] {
  border-color: rgba(220, 38, 38, 0.26);
  background: #fff7f7;
}

.cost-outcome-workflow strong {
  color: var(--ink);
  font-size: 12px;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

.cost-outcome-workflow span {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.cost-outcome-task-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  align-items: center;
  margin-top: 2px;
}

.cost-outcome-task-actions button {
  min-height: 26px;
  padding: 4px 8px;
  border: 1px solid #cbd5e1;
  border-radius: 7px;
  color: #0f172a;
  background: #ffffff;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.1;
}

.cost-outcome-task-actions button:hover {
  border-color: #2563eb;
  color: #1d4ed8;
}

.cost-outcome-task-actions em {
  color: #047857;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
}

.cost-outcome-bim-trace {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid #d8e2ef;
  border-radius: 8px;
  background: #ffffff;
}

.cost-outcome-bim-trace[data-status="low"] {
  border-color: rgba(22, 163, 74, 0.26);
  background: #f7fef9;
}

.cost-outcome-bim-trace[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffaf0;
}

.cost-outcome-bim-trace[data-status="high"] {
  border-color: rgba(220, 38, 38, 0.26);
  background: #fff7f7;
}

.cost-outcome-bim-trace header {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: flex-start;
  justify-content: space-between;
}

.cost-outcome-bim-trace header div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.cost-outcome-bim-trace header span,
.cost-outcome-bim-trace em,
.cost-outcome-bim-metrics span,
.cost-outcome-bim-assets span {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}

.cost-outcome-bim-trace header strong {
  color: var(--ink);
  font-size: 14px;
  line-height: 1.25;
}

.cost-outcome-bim-trace em {
  max-width: min(100%, 520px);
  font-style: normal;
  font-weight: 700;
  overflow-wrap: anywhere;
}

.cost-outcome-bim-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(104px, 1fr));
  gap: 6px;
}

.cost-outcome-bim-metrics p,
.cost-outcome-bim-assets p {
  display: grid;
  gap: 3px;
  min-width: 0;
  margin: 0;
  padding: 8px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: #ffffff;
}

.cost-outcome-bim-metrics strong,
.cost-outcome-bim-assets strong {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

.cost-outcome-bim-assets {
  display: grid;
  gap: 6px;
}

.cost-outcome-bim-assets p[data-status="low"] {
  border-color: rgba(22, 163, 74, 0.24);
  background: #f0fdf4;
}

.cost-outcome-bim-assets p[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffbeb;
}

.cost-outcome-audit-replay {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid #d8e2ef;
  border-radius: 8px;
  background: #f8fbff;
}

.cost-outcome-audit-replay[data-status="low"] {
  border-color: rgba(22, 163, 74, 0.24);
  background: #f4fdf8;
}

.cost-outcome-audit-replay[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffaf0;
}

.cost-outcome-audit-replay header {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: flex-start;
  justify-content: space-between;
}

.cost-outcome-audit-replay header div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.cost-outcome-audit-replay header span,
.cost-outcome-audit-metrics span,
.cost-outcome-audit-checks span,
.cost-outcome-audit-assets span {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}

.cost-outcome-audit-replay header strong {
  color: var(--ink);
  font-size: 14px;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.cost-outcome-audit-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
}

.cost-outcome-audit-replay header button {
  min-height: 30px;
  padding: 6px 10px;
  border: 1px solid #166b62;
  border-radius: 7px;
  color: #ffffff;
  background: #166b62;
  font-size: 12px;
  font-weight: 800;
}

.cost-outcome-audit-replay header button:last-child {
  border-color: #2563eb;
  background: #2563eb;
}

.cost-outcome-audit-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
  gap: 6px;
}

.cost-outcome-audit-checks,
.cost-outcome-audit-assets {
  display: grid;
  gap: 6px;
}

.cost-outcome-audit-checks {
  grid-template-columns: repeat(auto-fit, minmax(168px, 1fr));
}

.cost-outcome-audit-metrics p,
.cost-outcome-audit-checks p,
.cost-outcome-audit-assets p {
  display: grid;
  gap: 3px;
  min-width: 0;
  margin: 0;
  padding: 8px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: #ffffff;
}

.cost-outcome-audit-checks p[data-pass="true"] {
  border-color: rgba(22, 163, 74, 0.22);
  background: #f0fdf4;
}

.cost-outcome-audit-checks p[data-pass="false"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffbeb;
}

.cost-outcome-audit-metrics strong,
.cost-outcome-audit-checks strong,
.cost-outcome-audit-assets strong {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

.cost-outcome-handover {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid #d8e2ef;
  border-radius: 8px;
  background: #ffffff;
}

.cost-outcome-handover[data-status="low"] {
  border-color: rgba(22, 163, 74, 0.24);
  background: #f7fef9;
}

.cost-outcome-handover[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffaf0;
}

.cost-outcome-handover header {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: flex-start;
  justify-content: space-between;
}

.cost-outcome-handover header > div:first-child {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.cost-outcome-handover header span,
.cost-outcome-handover-metrics span,
.cost-outcome-handover-grid > div > span,
.cost-outcome-handover-grid p span {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}

.cost-outcome-handover header strong {
  color: var(--ink);
  font-size: 14px;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.cost-outcome-handover-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
  gap: 6px;
}

.cost-outcome-handover-metrics p,
.cost-outcome-handover-grid p {
  display: grid;
  gap: 3px;
  min-width: 0;
  margin: 0;
  padding: 8px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: #ffffff;
}

.cost-outcome-handover-metrics strong,
.cost-outcome-handover-grid strong {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

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

.cost-outcome-handover-grid > div {
  display: grid;
  gap: 6px;
  align-content: flex-start;
}

.cost-outcome-handover-grid p[data-status="low"] {
  border-color: rgba(22, 163, 74, 0.22);
  background: #f0fdf4;
}

.cost-outcome-handover-grid p[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffbeb;
}

.cost-outcome-handover-grid p[data-status="high"] {
  border-color: rgba(220, 38, 38, 0.22);
  background: #fff5f5;
}

.cost-outcome-handover-grid p[data-status="idle"] {
  background: #f8fafc;
}

.cost-outcome-panel .runtime-project-list p:last-child {
  border-color: #c9d8ea;
  background: #f4f8fd;
}

.cost-outcome-panel .cost-outcome-evidence[data-status="low"] {
  border-color: rgba(22, 163, 74, 0.24);
  background: #f0fdf4;
}

.cost-outcome-panel .cost-outcome-evidence[data-status="medium"] {
  border-color: rgba(217, 119, 6, 0.28);
  background: #fffbeb;
}

.cost-outcome-panel .cost-outcome-evidence[data-status="high"] {
  border-color: rgba(220, 38, 38, 0.26);
  background: #fff7f7;
}

.module-metrics p,
.quota-runtime-metrics p,
.quota-audit-metrics p {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f7fafc;
}

.module-metrics span,
.quota-runtime-metrics span,
.quota-audit-metrics span,
.runtime-project-list span,
.quota-runtime-types span,
.quota-runtime-list span,
.quota-audit-list span {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}

.module-metrics strong,
.quota-runtime-metrics strong,
.quota-audit-metrics strong {
  color: var(--ink);
  font-size: 15px;
  line-height: 1.25;
}

.runtime-project-list,
.quota-runtime-types,
.quota-runtime-list,
.quota-audit-list {
  display: grid;
  gap: 7px;
}

.runtime-project-list p,
.quota-runtime-types p,
.quota-runtime-list p,
.quota-audit-list p {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.runtime-project-list strong,
.quota-runtime-types strong,
.quota-runtime-list strong,
.quota-audit-list strong {
  overflow-wrap: anywhere;
  color: var(--ink);
  font-size: 12px;
  line-height: 1.35;
}

.quota-audit-list p[data-level="high"] {
  border-color: rgba(190, 59, 55, 0.24);
}

.quota-audit-list p[data-level="medium"] {
  border-color: rgba(174, 113, 31, 0.28);
}

.quota-audit-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.quota-audit-actions button {
  min-height: 34px;
  padding: 0 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 900;
  cursor: pointer;
}

.quota-audit-actions button:first-child {
  border-color: rgba(35, 100, 170, 0.25);
  background: var(--blue);
  color: #ffffff;
}

.diff-item span,
.diff-item small,
.export-history-list span,
.export-history-list small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.export-history-list {
  display: grid;
  gap: 8px;
  width: 100%;
}

@media (max-width: 1180px) {
  .login-screen {
    grid-template-columns: 1fr;
  }

  .login-visual {
    min-height: auto;
  }

  .login-panel {
    min-height: auto;
  }

  .app-shell {
    grid-template-columns: 220px minmax(0, 1fr);
  }

  .kpi-grid,
  .workflow-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .next-action-panel {
    grid-template-columns: 1fr;
  }

  .next-action-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

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

  .insight-panel {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .change-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .library-row,
  .bim-map-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .procurement-board,
  .integration-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .app-shell {
    display: block;
  }

  .sidebar {
    position: static;
    height: auto;
  }

  .nav-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .kpi-grid,
  .capability-strip,
  .workflow-grid,
  .next-action-list,
  .overview-layout,
  .project-layout,
  .import-layout,
  .library-layout,
  .bim-layout,
  .takeoff-layout,
  .contract-layout,
  .forecast-layout,
  .procurement-board,
  .integration-grid,
  .market-grid,
  .audit-board,
  .change-list,
  .report-grid,
  .insight-panel {
    grid-template-columns: 1fr 1fr;
  }

  .project-form,
  .quota-candidates,
  .material-input-grid,
  .library-row,
  .bim-map-row,
  .bim-native-shell,
  .bim-trace-workbench,
  .change-form {
    grid-template-columns: 1fr;
  }

  .bim-trace-chain {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .bim-map-chain {
    grid-template-columns: 1fr;
  }

  .bim-map-chain small {
    white-space: normal;
  }
}

@media (max-width: 680px) {
  .workspace {
    padding: 16px;
  }

  .login-visual,
  .login-panel {
    padding: 20px;
  }

  .login-hero-copy h1 {
    font-size: 32px;
  }

  .login-card {
    padding: 20px;
  }

  .auth-method-grid,
  .preview-grid {
    grid-template-columns: 1fr;
  }

  .workspace-policy > div:first-child,
  .contract-meta-grid,
  .pricing-rule-metrics,
  .mfa-actions {
    grid-template-columns: 1fr;
  }

  .workspace-policy > div:first-child {
    display: grid;
    align-items: start;
  }

  .topbar,
  .panel-header,
  .table-toolbar {
    align-items: stretch;
    flex-direction: column;
  }

  .top-actions,
  .segmented-control {
    width: 100%;
  }

  .icon-button,
  .segment {
    flex: 1;
  }

  .action-result-panel {
    grid-template-columns: 1fr;
  }

  .action-result-metrics {
    justify-content: stretch;
  }

  .action-result-metrics span {
    min-width: 0;
    flex: 1;
  }

  .nav-list,
  .kpi-grid,
  .capability-strip,
  .workflow-grid,
  .next-action-panel,
  .next-action-list,
  .overview-layout,
  .project-layout,
  .import-layout,
  .library-layout,
  .bim-layout,
  .takeoff-layout,
  .contract-layout,
  .forecast-layout,
  .procurement-board,
  .integration-grid,
  .project-form,
  .quota-candidates,
  .library-row,
  .built-in-cost-database-row,
  .boq-candidate-review-row,
  .boq-residual-summary,
  .bim-map-row,
  .bim-trace-chain,
  .change-form,
  .market-grid,
  .audit-board,
  .change-list,
  .report-grid,
  .insight-panel,
  .pilot-archive-metrics,
  .pilot-archive-split {
    grid-template-columns: 1fr;
  }

  .scenario-box label {
    grid-template-columns: 1fr;
  }

  .scenario-box strong {
    text-align: left;
  }

  .approval-flow-header,
  .approval-card header,
  .approval-meta,
  .approval-actions,
  .quota-package-header,
  .quota-package-card {
    align-items: flex-start;
    flex-direction: column;
  }

  .formal-quota-head {
    display: grid;
  }

  .formal-quota-head span {
    max-width: none;
    text-align: left;
  }

  .built-in-cost-database-row button,
  .boq-candidate-review-actions,
  .boq-candidate-review-actions button {
    width: 100%;
  }

  .boq-candidate-review-actions {
    justify-content: stretch;
  }

  .formal-acquisition-metrics,
  .formal-rule-metrics,
  .formal-gap-metrics,
  .formal-quality-metrics,
  .authorized-source-metrics,
  .bim-parametric-kernel-metrics {
    grid-template-columns: 1fr 1fr;
  }

  .pilot-command-gates,
  .pilot-stage-strip {
    grid-template-columns: 1fr;
  }

  .approval-stepper {
    grid-template-columns: 1fr 1fr;
  }
}
