/* 与用户提供的现有 ERP 截图保持一致的主题。 */
:root {
  --sidebar: 264px;
  --primary: #4aa8d8;
  --primary-dark: #3398cf;
  --primary-light: #effaff;
  --text: #303133;
  --muted: #909399;
  --border: #e6e6e6;
  --background: #e7eef1;
  font-family: Arial, "Microsoft YaHei", sans-serif;
  font-size: 13px;
}
.sidebar { border-right: 5px solid #d3d7d8; box-shadow: 3px 0 6px #00000009; }
.account { height: 116px; min-height: 116px; margin: 0; padding: 0 20px; gap: 20px; position: relative; border-bottom: 1px solid #e6e9eb; }
.account strong { font-size: 13px; font-weight: 400; color: #52667c; margin-top: -6px; }
.avatar { width: 36px; height: 36px; background: #ccc; color: white; border: 0; margin-top: -6px; }
.avatar svg { width: 31px; height: 31px; stroke-width: 1.7; }
.logout-button { position: absolute; right: 20px; top: 74px; width: 61px; padding: 0; opacity: 1 !important; color: #606266; }
.sidebar nav { padding: 20px 0 0; }
.nav-group { margin: 0; }
.nav-group summary { height: 76px; padding: 0 24px; gap: 10px; border-radius: 0; color: #111; font-size: 14px; }
.nav-group summary>span:first-child { color: #363b3f; }
.nav-group summary>span:first-child svg { width: 14px; height: 14px; }
.nav-group summary:hover { background: #f7f8f9; }
.chev { color: #333; }
.nav-children { padding: 0 0 14px; background: #f3f5f6; }
.nav-subtitle { height: 76px; display: flex; align-items: center; justify-content: space-between; padding: 0 20px 0 69px; font-size: 14px; color: #111; }
.nav-subtitle svg { width: 12px; height: 12px; transform: rotate(180deg); color: #666; }
.nav-placeholder, .nav-link { display: flex; align-items: center; height: 48px; padding: 0 16px 0 93px; font-size: 13px; border-radius: 0; color: #677787; font-weight: 400; }
.nav-link.active { background: #eaf5fb; color: #409eff; font-weight: 400; }
.nav-link.active:before { display: none; }
.nav-count { display: none; }
.page-header { min-height: 116px; height: 116px; padding: 26px 50px 0; background: #f7f9fa; border-bottom: 0; position: relative; }
.breadcrumbs { font-size: 13px; gap: 8px; color: #909399; }
.breadcrumbs svg { width: 10px; height: 10px; }
.page-header h1 { color: #101010; font-size: 23px; font-weight: 600; letter-spacing: 0; margin: 15px 0 0; }
.header-actions { position: absolute; top: 2px; right: 4px; padding: 0; }
.theme-button { height: 32px; width: 80px; padding: 0 10px; color: #606266; font-size: 13px; }
.collapse-sidebar { top: 136px; width: 24px; height: 34px; border: 0; color: #606266; }
main { max-width: none; padding: 40px 47px 18px 50px; }
.content-card { border: 0; border-radius: 6px; box-shadow: none; }
.filter-form { padding: 44px 40px 0; }
.filter-grid { grid-template-columns: repeat(5,minmax(0,1fr)); gap: 17px 16px; }
.filter-field { gap: 7px; }
.filter-field>label { width: auto; max-width: 112px; font-size: 13px; color: #111; white-space: normal; text-align: right; }
.filter-field input, .filter-field select, input.form-input, select.form-input, textarea.form-input { height: 32px; border: 1px solid #d8d8d8; border-radius: 4px; background: #f7f9fa; color: #606266; font-size: 13px; padding: 0 11px; }
.filter-field select, select.form-input { background: #fff; }
.filter-field input::placeholder, textarea::placeholder { color: #c0c4cc; }
.filter-field select:has(option:checked[value=""]) { color: #606266; }
.range-field { height: 32px; border-color: #d8d8d8; background: #f7f9fa; }
.range-field input { border: 0; font-size: 12px; padding: 0 2px; height: 30px; }
.filter-field input[type=date] { font-size: 11px; }
.filter-footer { justify-content: flex-start; border: 0; padding: 17px 0 0; }
.filter-footer>span, .filter-footer .divider { display: none; }
.filter-footer>div { gap: 16px; }
.filter-footer .primary { order: -2; }
body[data-view=pending] .filter-form { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; }
body[data-view=pending] .filter-grid { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 24px; max-width: 100%; }
body[data-view=pending] .filter-field { width: 280px; max-width: 100%; }
body[data-view=pending] .filter-field:has(select) { width: 220px; }
body[data-view=pending] .filter-footer { padding: 0; }
body[data-view=pending] .list-toolbar { display: none; }
body[data-view=pending] .table-wrap { margin-top: 28px; }
#reset-filters { order: -1; }
#reset-filters svg { display: none; }
.button { height: 32px; padding: 0 15px; border-color: #d9d9d9; font-size: 13px; border-radius: 3px; color: #606266; }
.button.primary { color: white; }
.button svg { width: 14px; height: 14px; }
.text-button { font-size: 13px; color: #409eff; }
.list-toolbar { height: 41px; padding: 0 18px; }
.table-tools { gap: 6px; }
.table-tools .button { height: 28px; }
body[data-view=all] .list-toolbar { justify-content: flex-end; }
.table-wrap { margin: 0 18px; border: 1px solid #e6e6e6; border-radius: 0; }
table { font-size: 13px; }
thead th { height: 49px; padding: 0 16px; font-size: 13px; font-weight: 400; background: #fafafa; color: #111; border-bottom-color: #e6e6e6; }
thead th+th, tbody td+td { border-left-color: #e6e6e6; }
tbody td { height: 67px; padding: 16px; font-size: 13px; color: #677787; line-height: 1.4; border-bottom-color: #e6e6e6; }
tbody tr:nth-child(even) td { background: #f5f8f9; }
tbody tr:hover td { background: #f0fbff; }
.id-cell, .name-cell, .project-name, .money { color: #677787; font-size: 13px; font-weight: 400; }
.action-cell { border-left-color: #e6e6e6 !important; box-shadow: -4px 0 6px -4px #0003; }
.action-link { font-size: 13px; color: #409eff; }
.table-attachments { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-width: 0; }
.attachment-link { max-width: 100%; white-space: normal; overflow-wrap: anywhere; text-align: left; line-height: 1.4; }
.action-cell .action-link svg { display: none; }
.action-separator { margin: 0 8px; color: #dcdfe6; }
body[data-view=pending] #data-table th,
body[data-view=pending] #data-table td { padding: 12px 8px; white-space: normal; overflow-wrap: anywhere; }
body[data-view=pending] #data-table th { line-height: 1.5; }
#data-table .column-label-part { display: inline-block; max-width: 100%; }
body[data-view=all] #data-table [data-compact] { padding-left: 8px; padding-right: 8px; }
body[data-view=all] #data-table th[data-compact] { white-space: normal; line-height: 1.5; }
body[data-view=pending] #data-table .action-cell { position: static; box-shadow: none; }
body[data-view=pending] #data-table .action-link { display: inline; white-space: normal; }
.award-review-state { color: #909399; font-size: 13px; }
.award-review-state.waiting { color: #c88b32; }
body[data-view=pending] #data-table .pending-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; }
body[data-view=pending] #data-table .pending-actions .action-separator { margin: 0; }
body[data-view=pending] #data-table .product-tag { white-space: normal; }
.product-tag { font-size: 13px; background: transparent; color: #677787; padding: 0; }
.pill { font-size: 13px; padding: 0; background: transparent; }
.pill:before { display: none; }
.pill.green, .pill.orange, .pill.blue, .pill.red { background: transparent; }
.table-bottom { padding: 20px 18px; justify-content: flex-end; }
.pagination, .pagination select, .page-button { font-size: 13px; }
.inline-error { margin: 0 0 16px; padding: 10px 12px; border: 1px solid #fde2e2; border-radius: 3px; background: #fef0f0; color: #f56c6c; font-size: 13px; line-height: 1.6; }
.void-tender-modal { width: 520px; }
.void-tender-context { margin: 0 0 20px; color: #909399; font-size: 13px; overflow-wrap: anywhere; }
.void-reason-label { display: block; margin-bottom: 10px; color: #303133; font-size: 14px; }
#void-tender-reason { height: 110px; font-size: 14px; }
#void-tender-error { margin: 12px 0 0; }
.void-reason-text { white-space: pre-wrap; overflow-wrap: anywhere; }
#progress-error { margin: 24px 0 0 142px; }
.workflow-card { padding: 44px 48px 32px; }
.workflow-grid, .workflow-result { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 22px 56px; }
.workflow-grid { margin: 0; }
.workflow-field { display: grid; grid-template-columns: 132px minmax(0,1fr); align-items: center; gap: 10px; min-height: 36px; font-size: 14px; line-height: 1.8; }
.workflow-label { color: #303133; text-align: right; }
.workflow-field dd { margin: 0; min-width: 0; color: #606266; overflow-wrap: anywhere; }
.workflow-result { margin-top: 28px; padding-top: 28px; border-top: 1px solid #e6e6e6; }
.workflow-review-notice { margin-top: 24px; padding: 12px 16px; border: 1px solid #f1d9b4; border-radius: 4px; background: #fdf8ef; color: #93662a; font-size: 13px; line-height: 1.8; overflow-wrap: anywhere; }
.workflow-radios { display: flex; align-items: center; flex-wrap: wrap; gap: 28px; }
.workflow-radios label { display: inline-flex; align-items: center; gap: 9px; cursor: pointer; }
.workflow-radios input { appearance: none; width: 16px; height: 16px; margin: 0; flex: 0 0 16px; border: 1px solid #dcdfe6; border-radius: 50%; background: #fff; display: inline-grid; place-items: center; cursor: pointer; transition: border-color .15s, background-color .15s; }
.workflow-radios input::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #fff; transform: scale(0); }
.workflow-radios input:hover { border-color: #409eff; }
.workflow-radios input:checked { border-color: #409eff; background: #409eff; }
.workflow-radios input:checked::before { transform: scale(1); }
.workflow-radios input:focus-visible { outline: 2px solid #9accff; outline-offset: 3px; }
.workflow-radios label:has(input:checked) { color: #409eff; }
.workflow-wide { grid-column: 1 / -1; }
.workflow-reason { align-items: start; }
.workflow-reason .workflow-label { padding-top: 6px; }
.workflow-upload { align-items: start; }
.workflow-upload .workflow-label { padding-top: 3px; }
.workflow-upload-content { min-width: 0; }
.workflow-file-picker { position: relative; display: inline-flex; align-items: center; gap: 7px; cursor: pointer; background: #fff; }
.workflow-file-picker input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.workflow-file-picker:focus-within { outline: 2px solid #9accff; outline-offset: 2px; }
.workflow-file-picker:has(input:disabled) { opacity: .6; cursor: not-allowed; }
.workflow-file-help { margin: 8px 0 0; font-size: 12px; line-height: 1.6; color: #909399; }
.workflow-file-list { display: grid; gap: 8px; margin-top: 10px; }
.workflow-file-list:empty { margin-top: 0; }
#award-review-updated-files:not(:empty) { margin: 0 0 10px; }
.workflow-file-row { display: flex; align-items: baseline; gap: 14px; min-width: 0; font-size: 13px; }
.workflow-file-row>span, .workflow-file-row .attachment-link { min-width: 0; overflow-wrap: anywhere; }
.workflow-file-row .remove-file { flex-shrink: 0; }
.workflow-file-row>svg { width: 16px; height: 16px; flex-shrink: 0; align-self: center; color: #909399; }
.workflow-field .form-input { background: #fff; border-color: #dcdfe6; border-radius: 2px; font-size: 14px; min-width: 0; }
.workflow-field textarea.form-input { height: 110px; padding: 10px 12px; line-height: 1.7; }
.workflow-field .form-input:disabled { background: #f7f9fa; color: #909399; cursor: not-allowed; }
.workflow-actions { display: flex; justify-content: flex-end; gap: 16px; margin-top: 32px; }
.workflow-actions .button { min-width: 80px; height: 36px; font-size: 14px; }
.workflow-actions .primary { background: #409eff; border-color: #409eff; }
.workflow-actions .primary:hover { background: #3398e8; border-color: #3398e8; }
dialog { border-radius: 4px; box-shadow: 0 2px 12px #0003; }
dialog::backdrop { background: #0006; backdrop-filter: none; }
.drawer { border-radius: 0; }
.eyebrow { display: none; }
.dialog-header { padding: 20px 24px; }
.dialog-header h2 { margin: 0; font-size: 18px; font-weight: 400; color: #303133; }
.dialog-body { padding: 24px; }
.dialog-footer { padding: 16px 24px; }
.dialog-footer>span, .inline-note, .detail-project p, .detail-item dt, .local-note { font-size: 12px; color: #909399; }
.detail-project { background: #f7f9fa; border-color: #e6e6e6; border-radius: 2px; }
.detail-project h3 { font-size: 14px; font-weight: 400; }
.detail-section h3 { font-size: 14px; }
.detail-section h3:before { display: none; }
.detail-item dd, .form-control { font-size: 13px; color: #606266; }
textarea.form-input { height: 80px; padding: 10px; }
.form-control>label { color: #606266; }
.upload-zone { border-radius: 4px; background: #fafafa; }
.upload-zone strong, .upload-project, .attachment-row, .file-card, .timeline-item p { font-size: 13px; }
.upload-zone>span:first-child { background: transparent; border-radius: 0; }
.import-modal { width: 660px; }
.approval-section { margin-top: 32px; padding-top: 26px; border-top: 1px solid #e6e6e6; }
.approval-section h3 { margin: 0 0 32px; font-size: 16px; color: #303133; }
.approval-fields { display: grid; gap: 26px; margin-left: 8%; }
.approval-field { display: grid; grid-template-columns: 132px minmax(0,1fr); gap: 10px; align-items: center; font-size: 14px; min-height: 36px; line-height: 1.8; }
.approval-applicant { display: flex; flex-wrap: wrap; gap: 8px 28px; }
.approval-handler { color: #909399; font-size: 12px; }
.approval-field select.form-input { width: min(100%,520px); background: #fff; }
.common-opinion-controls { display: flex; gap: 24px; align-items: center; }
.common-opinion-controls select { min-width: 0; }
.approval-opinion { align-items: start; }
.approval-opinion>.workflow-label { padding-top: 6px; }
.opinion-editor { border: 1px solid #dcdfe6; background: #fff; }
.opinion-toolbar { display: flex; align-items: center; flex-wrap: wrap; min-height: 42px; border-bottom: 1px solid #e6e6e6; padding: 0 8px; gap: 4px; }
.opinion-toolbar button, .opinion-toolbar select, .opinion-upload { height: 36px; min-width: 34px; display: inline-flex; align-items: center; justify-content: center; border: 0; background: #fff; color: #606266; padding: 0 8px; font-size: 14px; }
.opinion-toolbar button { font-size: 23px; }
.opinion-toolbar select { border-left: 1px solid #e6e6e6; border-radius: 0; }
.opinion-toolbar button:hover, .opinion-upload:hover { color: #409eff; background: #f5f7fa; }
.opinion-upload { position: relative; cursor: pointer; }
.opinion-upload svg { width: 18px; height: 18px; }
.opinion-upload input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.opinion-content { min-height: 200px; padding: 16px; color: #606266; line-height: 1.8; overflow-wrap: anywhere; outline: none; }
.opinion-content:empty::before { content: attr(data-placeholder); color: #c0c4cc; pointer-events: none; }
.opinion-editor:focus-within { border-color: #409eff; }
.opinion-content p, .opinion-content h3 { margin: 0 0 8px; }
.opinion-help { margin: 6px 0 0; color: #909399; font-size: 12px; }
.approval-buttons { display: flex; gap: 12px; padding-left: 142px; }
.approval-buttons .button { height: 36px; font-size: 14px; }
.bid-upload-section { align-items: start; margin-top: 22px; }
.bid-upload-section>.workflow-label { padding-top: 4px; }
.bid-upload-content { min-width: 0; }
.bid-upload-tools { display: flex; gap: 18px; margin-bottom: 16px; }
.bid-files-wrap { border: 1px solid #e6e6e6; overflow: auto; }
.bid-files-table { min-width: 550px; }
.bid-files-table th:first-child { width: 46px; }
.bid-files-table th:nth-child(2) { width: 64px; }
.bid-files-table th:last-child { width: 120px; }
.bid-files-table .bid-file-empty { height: 190px; text-align: center; color: #c0c4cc; }
.bid-file-empty svg { width: 42px; height: 42px; display: block; margin: 0 auto 12px; }
.bid-file-name { display: block; margin-bottom: 8px; overflow-wrap: anywhere; }
.bid-clear-replacement { margin-left: 14px; }
.bid-file-picker { position: relative; display: inline-flex; cursor: pointer; color: #409eff; }
.bid-file-picker input { position: absolute; inset: 0; width: 100%; opacity: 0; cursor: pointer; }
.bid-file-picker:focus-within { outline: 2px solid #9accff; outline-offset: 3px; }
#bid-upload-error { margin: 20px 0 0 142px; }
.statistics-panel { margin: 26px 18px 12px; }
.statistics-heading { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 16px; margin-bottom: 14px; }
.statistics-heading h2 { margin: 0; font-size: 14px; font-weight: 600; color: #303133; }
.statistics-heading p { margin: 0; font-size: 12px; line-height: 1.6; color: #909399; }
.statistics-heading .statistics-period { color: #606266; font-variant-numeric: tabular-nums; }
.statistics-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,144px),1fr)); gap: 10px; max-width: 1460px; }
.statistic-card { min-width: 0; padding: 12px; border: 1px solid #e6e6e6; border-radius: 4px; background: #fafcfd; }
.statistic-label { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin: 0; font-size: 12px; font-weight: 400; line-height: 1.6; color: #606266; }
.statistics-help { display: inline-grid; place-items: center; flex: 0 0 14px; width: 14px; height: 14px; padding: 0; border: 1px solid #a8b0b8; border-radius: 50%; background: transparent; color: #909399; font: 10px Arial,sans-serif; }
.statistics-help:hover, .statistics-help[aria-expanded=true] { color: #409eff; border-color: #409eff; }
.statistics-help:focus-visible { outline: 2px solid #9accff; outline-offset: 3px; }
.statistic-value { display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px; margin: 12px 0 0; color: #303133; font-size: 22px; font-weight: 600; line-height: 1.25; overflow-wrap: anywhere; }
.statistic-value small { color: #909399; font-size: 12px; font-weight: 400; }
.statistics-tooltip { position: fixed; z-index: 80; width: max-content; max-width: min(300px,calc(100vw - 24px)); padding: 10px 12px; border: 1px solid #e4e7ed; border-radius: 4px; background: #fff; box-shadow: 0 2px 12px #0002; color: #606266; font-size: 13px; line-height: 1.7; overflow-wrap: anywhere; }
.import-instructions { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; font-size: 13px; }
.import-instructions p { margin: 0; line-height: 1.7; }
.import-instructions .action-link { flex-shrink: 0; }
.import-message { font-size: 13px; line-height: 1.7; color: #606266; overflow-wrap: anywhere; }
.import-message.error { color: #f56c6c; }
.import-preview p { font-size: 12px; color: #909399; }
.import-preview table { border: 1px solid #e6e6e6; }
.import-preview th, .import-preview td { padding: 10px; height: auto; line-height: 1.6; overflow-wrap: anywhere; white-space: normal; }
.import-preview th:first-child { width: 27%; }
.import-preview th:last-child { width: 20%; }
@media(max-width:1600px) {
  .filter-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .filter-field>label { font-size: 12px; }
}
@media(max-width:1250px) {
  .workflow-card { padding: 36px 28px 28px; }
  .workflow-grid, .workflow-result { column-gap: 28px; }
  body[data-view=pending] #data-table th,
  body[data-view=pending] #data-table td { padding-left: 4px; padding-right: 4px; }
  :root { --sidebar: 230px; }
  main { padding: 30px; }
  .page-header { padding-left: 30px; }
  .account { padding-left: 18px; gap: 12px; }
  .filter-form { padding: 35px 24px 0; }
  .filter-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .nav-subtitle { padding-left: 58px; }
  .nav-placeholder, .nav-link { padding-left: 80px; }
}
@media(max-width:960px) {
  .approval-fields { margin-left: 0; }
  .workflow-grid, .workflow-result { grid-template-columns: 1fr; gap: 18px; }
  :root { --sidebar: 210px; }
  main { padding: 24px; }
  .filter-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .filter-field>label { width: 96px; white-space: normal; }
  .nav-subtitle { padding-left: 45px; }
  .nav-placeholder, .nav-link { padding-left: 66px; }
  .account { gap: 9px; padding-left: 14px; }
  .account strong { font-size: 12px; }
  .nav-group summary { padding: 0 18px; }
}
@media(max-width:640px) {
  .approval-field { grid-template-columns: 1fr; gap: 8px; }
  .approval-field>.workflow-label { text-align: left; }
  .approval-buttons { padding-left: 0; }
  .common-opinion-controls { gap: 10px; }
  .bid-upload-section { grid-template-columns: 1fr !important; }
  .bid-upload-section>.workflow-label { text-align: left; }
  #bid-upload-error { margin-left: 0; }
  .workflow-card { padding: 24px 16px; }
  .workflow-field { grid-template-columns: 112px minmax(0,1fr); gap: 8px; font-size: 13px; }
  .workflow-field .form-input { font-size: 13px; }
  #progress-error { margin-left: 0; }
  body[data-view=pending] #data-table th,
  body[data-view=pending] #data-table td { padding-left: 2px; padding-right: 2px; }
  main { padding: 20px 12px; }
  .page-header { padding: 26px 24px 0; }
  .page-header h1 { font-size: 22px; }
  .sidebar-hidden .collapse-sidebar { left: 209px; }
  .filter-form { padding: 24px 16px 0; }
  .filter-grid { grid-template-columns: 1fr; }
  .filter-field>label { width: 104px; font-size: 13px; }
  .filter-footer>div { gap: 10px; flex-wrap: wrap; }
  .text-button { font-size: 12px; }
  .list-toolbar { height: 54px; padding: 0 16px; }
  .table-tools>.button { font-size: 12px; }
  .table-wrap { margin: 0 16px; }
  .action-cell .action-link { font-size: 12px; }
  .pagination, .pagination select { font-size: 11px; }
  .theme-button { width: 68px; padding: 0 6px; font-size: 12px; }
}
