.quick-filter-bar,.batch-bar{margin:0 18px;display:flex;align-items:center;gap:7px;padding:8px 11px;border-top:1px solid #edf0f5;background:#fff;box-shadow:0 7px 22px #1e293b0a}.quick-filter-bar>span{margin-right:3px;color:#8792a3;font-size:11px;font-weight:700}.quick-filter-bar button,.batch-bar button{height:30px;padding:0 10px;border:1px solid #e1e6ef;border-radius:7px;background:#f8fafc;color:#566477;font-size:11px;cursor:pointer}.quick-filter-bar button:hover,.quick-filter-bar button.active{border-color:#9eb0fa;background:#eef2ff;color:#405de4}.quick-filter-bar i{margin-left:auto;padding:4px 8px;border-radius:12px;background:#fff2dc;color:#b76508;font-size:10px;font-style:normal}.quick-filter-bar i.ok{background:#eaf8ef;color:#198754}.batch-bar{display:none;background:#f5f7ff;border-top-color:#dfe5ff}.batch-bar.show{display:flex}.batch-bar strong{margin-right:6px;color:#405de4;font-size:12px}.batch-bar button.danger{border-color:#ffd6d6;background:#fff2f2;color:#c73d3d}.row-index{display:table-cell!important}.row-index .row-select{width:14px;height:14px;margin:0 7px 0 0;vertical-align:middle;accent-color:#4f6ef7}.select-all{display:flex;align-items:center;justify-content:center;gap:5px}.select-all input{accent-color:#4f6ef7}.column-hidden{display:none!important}.column-panel{position:fixed;z-index:25;width:190px;display:none;padding:10px;border:1px solid #dfe4ec;border-radius:10px;background:#fff;box-shadow:0 14px 38px #1e293b2b}.column-panel.show{display:grid;grid-template-columns:1fr 1fr;gap:8px}.column-panel>div{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding:0 3px 6px;border-bottom:1px solid #edf0f4}.column-panel>div button{border:0;background:transparent;font-size:18px;cursor:pointer}.column-panel label{display:flex;align-items:center;gap:5px;font-size:11px}.column-panel input{accent-color:#4f6ef7}.file-link{display:inline-flex;align-items:center;height:26px;padding:0 9px;border:1px solid #cbd7ff;border-radius:7px;background:#eef3ff;color:#405de4;font-size:11px;text-decoration:none}.file-link:hover{background:#e1e9ff}.toolbar button:disabled{opacity:.45;cursor:not-allowed}.backup-card{width:min(640px,100%)}.backup-actions{display:flex;gap:8px;margin-bottom:14px}.backup-actions button,.backup-actions label{height:36px;display:inline-flex;align-items:center;padding:0 12px;border:1px solid #dfe4ec;border-radius:8px;background:#f8fafc;color:#526071;font-size:12px;cursor:pointer}.backup-actions input{display:none}.backup-list{max-height:380px;overflow:auto;border:1px solid #e7ebf1;border-radius:10px}.backup-item{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;border-bottom:1px solid #edf0f4}.backup-item:last-child{border-bottom:0}.backup-item strong,.backup-item small{display:block}.backup-item strong{font-size:13px}.backup-item small{margin-top:4px;color:#8a95a5;font-size:10px}.backup-item button{height:30px;padding:0 11px;border:1px solid #cbd7ff;border-radius:7px;background:#eef3ff;color:#405de4;cursor:pointer}.backup-empty{padding:30px;text-align:center;color:#8a95a5;font-size:12px}.finance-range{display:flex;align-items:center;gap:10px;margin-bottom:14px;padding:10px 13px;border:1px solid #e5eaf2;border-radius:11px;background:#fff;box-shadow:0 5px 18px #1e293b09}.finance-range strong{margin-right:4px;font-size:12px}.finance-range label{display:flex;align-items:center;gap:5px;color:#7a8594;font-size:11px}.finance-range input{height:32px;border:1px solid #dfe4ec;border-radius:7px;padding:0 8px}.finance-range button,.merge-customers{height:32px;padding:0 11px;border:1px solid #dce3f5;border-radius:7px;background:#eef2ff;color:#405de4;font-size:11px;cursor:pointer}.finance-range button{margin-left:auto}.unpaid-panel{margin-top:16px}.merge-customers:disabled{background:#f5f7fa;color:#98a2b1;cursor:default}.customer-toolbar .merge-customers{margin-left:auto}.customer-toolbar #customerResultCount{margin-left:0!important}
#activeFilterSummary{display:none;margin-top:7px;color:#5268c7;font-size:11px;font-weight:600}#activeFilterSummary.show{display:block}.data-row.needs-data .row-index{box-shadow:inset 4px 0 #f59e0b!important}.table-wrap .data-row .missing-cell{background:#fff8e8!important;color:#a86616}.table-wrap .data-row .missing-cell:empty:after{content:'待补';display:inline-flex;height:21px;align-items:center;padding:0 7px;border-radius:6px;background:#fff0cd;color:#a86616;font-size:10px}.quick-filter-bar button:focus-visible,.batch-bar button:focus-visible,.file-link:focus-visible{outline:2px solid #6f88fa;outline-offset:2px}
@media(max-width:1100px){.quick-filter-bar{overflow-x:auto}.quick-filter-bar i{display:none}.backup-actions{flex-wrap:wrap}}

/* 客户、图表与财务视图优化 */
.report-filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:14px;padding:11px 13px;border:1px solid #e5eaf2;border-radius:11px;background:#fff;box-shadow:0 5px 18px #1e293b09}.report-filter-bar strong{margin-right:3px;font-size:12px}.report-filter-bar label{display:flex;align-items:center;gap:5px;color:#748093;font-size:11px}.report-filter-bar input,.report-filter-bar select,.finance-range select,.customer-sort{height:32px;border:1px solid #dfe4ec;border-radius:7px;padding:0 8px;background:#fff;color:#526071;font-size:11px;outline:0}.report-filter-bar input:focus,.report-filter-bar select:focus,.finance-range select:focus,.customer-sort:focus{border-color:#91a5ff;box-shadow:0 0 0 3px #4f6ef715}.report-filter-bar>span{margin-left:auto;color:#7d8795;font-size:11px}.report-filter-bar button{height:32px;padding:0 11px;border:1px solid #dce3f5;border-radius:7px;background:#eef2ff;color:#405de4;font-size:11px;cursor:pointer}.collection-overview{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:10px;margin-bottom:16px}.collection-overview>div{padding:14px 16px;border:1px solid #e8edf3;border-radius:11px;background:#fff;box-shadow:0 5px 18px #1e293b09}.collection-overview span,.collection-overview strong{display:block}.collection-overview span{color:#7d8795;font-size:11px}.collection-overview strong{margin-top:6px;color:#26354a;font-size:20px;font-variant-numeric:tabular-nums}.collection-overview>div:first-child strong{color:#159447}.collection-overview>div:nth-child(2) strong{color:#d97706}.collection-overview>div:nth-child(3) strong{color:#405de4}.collection-overview>small{grid-column:1/-1;margin-top:-4px;color:#95a0af;font-size:10px}.finance-range{flex-wrap:wrap}.finance-range button{order:10}.customer-sort{min-width:118px}.customer-table-card{border-color:#e3e8ef}.customer-table tbody tr{transition:.15s}.customer-table tbody tr:hover td{background:#f5f8ff!important}.customer-project-record{min-width:96px;justify-content:flex-start}.customer-toolbar{position:sticky;top:0;z-index:4}.chart-dashboard .chart-panel,.finance-dashboard .finance-panel{transition:box-shadow .18s,transform .18s}.chart-dashboard .chart-panel:hover,.finance-dashboard .finance-panel:hover{box-shadow:0 10px 28px #1e293b12;transform:translateY(-1px)}
@media(max-width:1100px){.report-filter-bar{flex-wrap:wrap}.report-filter-bar>span{margin-left:0}.collection-overview{grid-template-columns:repeat(3,1fr)}}
.report-sidebar .nav-item .nav-badge{min-width:27px;height:20px;display:inline-flex;align-items:center;justify-content:center;margin-left:auto;padding:0 6px;border-radius:10px;background:#ffffff14;color:#aebbd0;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums}.report-sidebar .nav-item .nav-badge[data-tone="warning"]{background:#f59e0b25;color:#f7bf66}.report-sidebar .nav-item .nav-badge[data-tone="success"]{background:#22c55e20;color:#72d791}.report-sidebar .nav-item.active .nav-badge{background:#4f6ef71c;color:#405de4}

/* 项目进度表可读性与操作反馈 */
.quick-stat.actionable{cursor:pointer;transition:border-color .16s,box-shadow .16s,transform .16s}.quick-stat.actionable:hover{border-color:#cbd5ff;box-shadow:0 9px 24px #405de41c;transform:translateY(-1px)}.quick-stat.actionable:focus-visible{outline:2px solid #6f88fa;outline-offset:2px}.quick-stat.actionable.active{border-color:#91a5ff;background:#f7f9ff;box-shadow:0 0 0 3px #4f6ef711,0 7px 20px #405de414}.search-hit{padding:1px 2px;border-radius:3px;background:#ffe88f;color:#25324a;font-weight:750}.table-wrap .data-row .tag.past-stage{opacity:.62;filter:saturate(.72)}.table-wrap .data-row .tag.current-stage{box-shadow:0 0 0 2px #ffffff,inset 0 0 0 1px #1e293b18;font-weight:750}.table-wrap .group-row td:first-child{transition:background .16s,border-color .16s}footer{height:38px;gap:18px;padding:0 18px;color:#7d8795}#recordCount{flex:none;font-weight:650;color:#536174}#footerSummary{min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:18px;margin-left:auto;overflow:hidden;white-space:nowrap}#footerSummary span{font-size:11px}#footerSummary b{margin-left:4px;color:#334155;font-size:12px;font-variant-numeric:tabular-nums}#footerSummary .warn{color:#b76508}#footerSummary .warn b{color:#d97706}
@media(max-width:1100px){#footerSummary span:nth-child(-n+2){display:none}}

/* 未完成项目提醒 */
.cloud-account .reminder-btn.show{height:34px;display:inline-flex;align-items:center;gap:6px;padding:0 10px;border-color:#e4e8ef;background:#f8fafc;color:#667386;font-weight:650}.cloud-account .reminder-btn b{min-width:20px;height:20px;display:inline-grid;place-items:center;padding:0 5px;border-radius:10px;background:#e8edf4;color:#526071;font-size:10px;font-variant-numeric:tabular-nums}.cloud-account .reminder-btn.has-reminders{border-color:#ffd7a0;background:#fff8eb;color:#aa650d}.cloud-account .reminder-btn.has-reminders b{background:#f59e0b;color:#fff}.cloud-account .reminder-btn.has-reminders:before{content:'';width:7px;height:7px;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 4px #f59e0b1f}.cloud-account .reminder-btn.all-done{border-color:#d5ecdd;background:#f2fbf5;color:#198754}.reminder-card{width:min(1280px,calc(100vw - 64px));height:min(820px,calc(100vh - 56px));display:flex;flex-direction:column;overflow:hidden;padding:26px 28px}.reminder-card>.modal-head{flex:none}.reminder-card>.modal-head h2{font-size:23px}.reminder-card>.modal-head p{margin-bottom:18px}.reminder-overview{flex:none;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.reminder-overview>span{min-height:78px;padding:14px 17px;border:1px solid #e7ebf1;border-radius:11px;background:#f8fafc}.reminder-overview small,.reminder-overview b{display:block}.reminder-overview small{color:#7d8795;font-size:12px}.reminder-overview b{margin-top:6px;color:#25324a;font-size:24px;font-variant-numeric:tabular-nums}.reminder-overview .warn{border-color:#ffe0b2;background:#fff8eb}.reminder-overview .warn b{color:#d97706}.reminder-list{min-height:0;max-height:none;flex:1;overflow:auto;border:1px solid #e6eaf0;border-radius:12px;background:#fff}.reminder-item{width:100%;min-height:78px;display:grid;grid-template-columns:8px minmax(230px,1.45fr) minmax(170px,1fr) minmax(140px,.85fr) minmax(155px,.9fr) 100px;align-items:center;gap:18px;padding:12px 18px;border:0;border-bottom:1px solid #edf0f4;background:#fff;color:#334155;text-align:left;cursor:pointer;transition:background .15s,box-shadow .15s}.reminder-item:last-child{border-bottom:0}.reminder-item:hover{background:var(--project-soft);box-shadow:inset 4px 0 var(--project-accent)}.reminder-item>i{width:8px;height:42px;border-radius:5px;background:var(--project-accent)}.reminder-item strong,.reminder-item small,.reminder-item b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reminder-item strong{color:#1f2b3d;font-size:15px}.reminder-item small{margin-top:5px;color:#8a95a5;font-size:11px;font-weight:500}.reminder-item b{margin-top:5px;color:#526071;font-size:13px}.reminder-item em{color:#5268c7;font-size:12px;font-style:normal;font-weight:700;text-align:right}.reminder-item.high .reminder-age b{color:#dc4c4c}.reminder-item.medium .reminder-age b{color:#d97706}.reminder-item.future>i{background:#94a3b8}.reminder-item.future .reminder-age b{color:#64748b}.reminder-empty{height:100%;min-height:260px;display:grid;place-content:center;justify-items:center;color:#8a95a5}.reminder-empty strong{color:#198754;font-size:16px}.reminder-empty span{margin-top:7px;font-size:12px}
@media(max-width:1200px){.reminder-item{grid-template-columns:8px minmax(180px,1.4fr) minmax(120px,1fr) minmax(110px,.8fr) 86px}.reminder-client{display:none}}
