:root {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif;
  color: #243746;
  background: #f3f6f9;
  font-size: 14px;
}
* { box-sizing: border-box; }
body { margin: 0; min-width: 0; overflow: hidden; }
button, input { font: inherit; }
button { cursor: pointer; }
.app { display: grid; grid-template-columns: 138px 1fr; height: 100vh; min-width: 1180px; overflow: clip; }
.sidebar { background: #142d43; color: #cbd7e1; display: flex; flex-direction: column; }
.logo { height: 56px; display: flex; align-items: center; padding: 0 18px; color: #2fb9f4; font-size: 17px; font-weight: 700; }
.logo-mark { width: 19px; height: 19px; margin-right: 9px; position: relative; }
.logo-mark::before, .logo-mark::after { content: ""; position: absolute; background: #28c7f7; border-radius: 50%; }
.logo-mark::before { width: 8px; height: 8px; left: 0; top: 2px; box-shadow: 10px 7px 0 #28c7f7, 1px 15px 0 #28c7f7; }
.nav { padding-top: 4px; flex: 1; }
.nav-item { height: 55px; display: flex; align-items: center; gap: 11px; padding: 0 19px; cursor: pointer; position: relative; }
.nav-item:hover, .nav-item.active { color: white; background: #1b3a54; }
.nav-item.active::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #2e9ef3; }
.nav-icon { width: 18px; height: 18px; border: 1.5px solid currentColor; border-radius: 3px; display: grid; place-items: center; font-size: 11px; }
.nav-dot::after { content: ""; width: 5px; height: 5px; background: #ff4d4f; border-radius: 50%; position: absolute; right: 18px; top: 12px; }
.sidebar-foot { padding: 16px 20px; display: flex; gap: 18px; border-top: 1px solid #284257; }
.shell { display: grid; grid-template-rows: 56px 42px 1fr; min-width: 0; }
.topbar { background: white; border-bottom: 1px solid #e6ebef; display: flex; align-items: center; padding: 0 24px; gap: 22px; }
.company { font-size: 16px; font-weight: 600; max-width: 330px; min-width: 220px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 0 1 auto; }
.company { cursor: pointer; height: 56px; display: flex; align-items: center; }
.ledger-picker { position: fixed; top: 58px; left: 155px; width: 390px; min-height: 510px; background: white; border: 1px solid #dce4e9; border-radius: 7px; box-shadow: 0 10px 28px #20384a2b; z-index: 60; overflow: hidden; }
.ledger-picker::before { content: ""; position: absolute; top: -9px; left: 188px; width: 18px; height: 18px; background: white; border-left: 1px solid #dce4e9; border-top: 1px solid #dce4e9; transform: rotate(45deg); }
.ledger-picker-head { height: 72px; display: flex; align-items: center; justify-content: space-between; padding: 0 22px; border-bottom: 1px solid #dfe5e9; font-size: 20px; font-weight: 700; }
.ledger-search-icon { font-size: 30px; font-weight: 300; color: #8b969d; }
.ledger-list { min-height: 382px; }
.ledger-option { min-height: 88px; padding: 16px 20px; cursor: pointer; position: relative; }
.ledger-option:nth-child(even) { background: #f7f7f7; }
.ledger-option:hover { background: #edf6ff; }
.ledger-name { font-size: 17px; color: #263944; padding-right: 80px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ledger-id { margin-top: 8px; color: #8995a0; font-size: 15px; }
.current-ledger { position: absolute; right: 16px; top: 20px; border: 1px solid #68aff3; color: #278eec; background: #f1f8ff; padding: 5px 11px; border-radius: 3px; }
.ledger-create { height: 58px; border-top: 1px solid #dfe5e9; display: flex; align-items: center; justify-content: center; color: #8793a0; font-size: 16px; cursor: pointer; }
.ledger-create:hover { color: #298fef; }
.period { color: #6f8291; white-space: nowrap; flex: none; }
.top-search-wrap { position: relative; margin-left: auto; }
.top-search { height: 34px; width: min(380px,28vw); min-width: 300px; border: 1px solid #d8e0e6; border-radius: 6px; display: flex; align-items: center; background: #fff; transition: border-color .2s; }
.top-search:focus-within { border-color: #3b99ee; box-shadow: 0 0 0 2px rgba(59,153,238,.15); }
.search-type { padding: 0 10px; height: 100%; display: flex; align-items: center; font-size: 13px; color: #4b6171; cursor: pointer; border-right: 1px solid #e3e9ee; white-space: nowrap; user-select: none; flex-shrink: 0; }
.search-type:hover { color: #2f95ff; }
.search-input { flex: 1; border: none; outline: none; height: 100%; padding: 0 10px; font-size: 13px; color: #4b6171; background: transparent; min-width: 0; }
.search-input::placeholder { color: #b0bec5; }
.search-icon { padding: 0 12px; font-size: 18px; color: #7c8d99; cursor: pointer; flex-shrink: 0; }
.search-icon:hover { color: #2f95ff; }
.search-type-dropdown { position: absolute; top: 38px; left: 0; background: #fff; border: 1px solid #e3e9ee; border-radius: 6px; box-shadow: 0 4px 16px rgba(0,0,0,.1); min-width: 100px; z-index: 1000; overflow: hidden; }
.search-type-item { padding: 8px 16px; font-size: 13px; color: #4b6171; cursor: pointer; }
.search-type-item:hover { background: #f0f6ff; color: #2f95ff; }
.search-type-item.active { background: #e6f2ff; color: #2f95ff; font-weight: 500; }
.search-results { position: absolute; top: 38px; left: 0; right: 0; background: #fff; border: 1px solid #e3e9ee; border-radius: 6px; box-shadow: 0 4px 16px rgba(0,0,0,.1); z-index: 1000; max-height: 420px; overflow-y: auto; }
.search-result-header { padding: 10px 14px; border-bottom: 1px solid #f0f0f0; display: flex; align-items: center; justify-content: space-between; font-size: 13px; color: #4b6171; }
.search-close { cursor: pointer; color: #8e9ca1; font-size: 14px; padding: 2px 6px; border-radius: 3px; }
.search-close:hover { background: #f5f5f5; color: #333; }
.search-result-loading, .search-result-empty { padding: 30px; text-align: center; color: #8e9ca1; font-size: 13px; }
.search-result-list { padding: 4px 0; }
.search-result-item { padding: 10px 14px; cursor: pointer; display: flex; flex-direction: column; gap: 2px; border-bottom: 1px solid #fafafa; }
.search-result-item:hover { background: #f0f6ff; }
.search-result-item:last-child { border-bottom: none; }
.search-result-type { font-size: 11px; color: #2f95ff; background: #e6f2ff; display: inline-block; padding: 1px 6px; border-radius: 3px; width: fit-content; }
.search-result-title { font-size: 13px; color: #333; font-weight: 500; }
.search-result-desc { font-size: 12px; color: #8e9ca1; }
.top-links { display: flex; align-items: center; gap: 18px; white-space: nowrap; }
.tabs { background: white; display: flex; align-items: end; padding-left: 22px; border-bottom: 1px solid #e3e9ee; }
.tab { height: 42px; padding: 0 22px; display: flex; align-items: center; color: #4b6171; border-bottom: 2px solid #3b99ee; }
.content { min-width: 0; min-height: 0; overflow: auto; padding: 16px 18px 28px; }
.home-grid { display: block; }
.home-grid main { min-width: 0; }
.hm-panel { background: #fff; border: 1px solid #e4eaf2; border-radius: 6px; padding: 12px 16px; }
.hm-quick { padding: 0; }
.hm-panel-title { font-size: 13px; font-weight: 600; color: #022433; height: 32px; display: flex; align-items: center; margin: -12px -16px 10px; padding: 0 16px 0; border-bottom: 1px solid #f0f2f5; }
.hm-init-hint { font-size: 12px; font-weight: 400; color: #8e9ca1; margin-left: 16px; }
.hm-goto-set { color: #2f95ff; cursor: pointer; text-decoration: none; }
.hm-edit-btn { margin-left: auto; color: #8e9ca1; cursor: pointer; font-size: 14px; }
.hm-quick-row { display: flex; align-items: center; gap: 12px; padding: 4px 0 8px; }
.hm-voucher-btn { min-width: 148px; height: 52px; border-radius: 8px; background: linear-gradient(135deg, #eaf4ff 0%, #d6e8ff 100%); display: flex; align-items: center; gap: 10px; padding: 0 14px; cursor: pointer; flex-shrink: 0; }
.hm-voucher-btn:hover { background: linear-gradient(135deg, #d6e8ff 0%, #c2d8f5 100%); }
.hm-voucher-plus { width: 32px; height: 32px; border-radius: 50%; background: linear-gradient(135deg, #18b4f1, #36cfc9); display: grid; place-items: center; color: #fff; font-size: 18px; font-weight: 300; flex-shrink: 0; position: relative; }
.hm-voucher-plus::before { content: "+"; font-size: 20px; line-height: 1; color: #fff; font-weight: 300; }
.hm-voucher-text { display: flex; flex-direction: column; gap: 1px; }
.hm-voucher-btn p { font-size: 13px; font-weight: 600; color: #022433; margin: 0; }
.hm-voucher-btn span { font-size: 11px; color: #8e9ca1; }
.hm-quick-links { display: flex; flex: 1; gap: 0; }
.hm-link-item { width: 72px; display: flex; flex-direction: column; align-items: center; gap: 6px; cursor: pointer; padding: 2px 0; }
.hm-link-item:hover { background: #f5f9ff; border-radius: 6px; }
.hm-link-icon { width: 36px; height: 36px; display: grid; place-items: center; color: #fff; border-radius: 8px; font-size: 16px; font-style: normal; font-weight: 500; box-shadow: 0 2px 4px rgba(0,0,0,0.08); }
.hm-link-text { font-size: 11px; color: #022433; white-space: nowrap; }
.hm-metrics { margin-top: 12px; }
.hm-metric-tabs { display: flex; gap: 20px; font-size: 13px; font-weight: 600; margin-bottom: 10px; height: 36px; align-items: center; }
.hm-metric-tabs .active { color: #022433; border-bottom: 2px solid #2f95ff; height: 36px; display: flex; align-items: center; }
.hm-metric-tabs span:not(.active) { color: #8e9ca1; cursor: pointer; height: 36px; display: flex; align-items: center; }
.hm-metric-actions { margin-left: auto; display: flex; gap: 8px; }
.hm-action-icon { width: 24px; height: 24px; display: grid; place-items: center; cursor: pointer; color: #8e9ca1; border-radius: 4px; font-size: 13px; }
.hm-action-icon:hover { background: #f0f6ff; color: #2f95ff; }
.hm-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.card { border: 1px solid #e4eaf2; border-radius: 6px; overflow: hidden; background: #fff; display: flex; flex-direction: column; }
.card-head { height: 40px; background: linear-gradient(180deg, #f4f8ff 0%, #edf4ff 100%); display: flex; align-items: center; padding: 0 12px; font-size: 13px; border-bottom: 1px solid #e4eaf2; gap: 6px; flex-shrink: 0; }
.card-tabs { display: flex; gap: 0; height: 100%; align-items: center; margin-right: 4px; }
.card-tab { padding: 0 8px; height: 40px; display: flex; align-items: center; font-size: 13px; font-weight: 600; color: #8e9ca1; cursor: pointer; border-bottom: 2px solid transparent; position: relative; z-index: 1; }
.card-tab.active { color: #2f95ff; border-bottom-color: #2f95ff; }
.card-title { font-size: 13px; font-weight: 600; color: #022433; flex: 1; }
.card-period { font-size: 12px; color: #2f95ff; cursor: pointer; font-weight: 400; white-space: nowrap; }
.card-body { padding: 12px; flex: 1; display: flex; flex-direction: column; overflow: visible; }
.hm-help { font-style: normal; color: #2f95ff; margin-left: 2px; cursor: help; font-size: 11px; opacity: 0.8; }
.hm-main-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.hm-label { font-size: 12px; color: #022433; display: flex; align-items: center; white-space: nowrap; }
.hm-amount-big { font-size: 18px; font-weight: 600; color: #022433; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hm-amount-big.neg { color: #f5222d; }
.hm-amount { font-size: 15px; font-weight: 600; color: #022433; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hm-detail-list { display: flex; flex-direction: column; gap: 3px; margin-bottom: 6px; }
.hm-detail-row { display: flex; justify-content: space-between; align-items: center; font-size: 11px; color: #607582; line-height: 1.6; }
.hm-detail-row > span:first-child { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding-right: 4px; }
.hm-detail-row.empty { color: #c0c8d0; }
.hm-val { font-size: 11px; color: #022433; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; flex-shrink: 0; }
.hm-val.neg { color: #f5222d; }
.hm-val.down { color: #f5222d; }
.hm-divider { height: 1px; background: #f0f2f5; margin: 8px 0; }
.hm-income-expense { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 6px; }
.hm-income-bar, .hm-expense-bar { position: relative; }
.hm-bar-label { font-size: 11px; color: #607582; margin-bottom: 4px; }
.hm-bar { height: 6px; background: #e8eaed; border-radius: 3px; overflow: hidden; }
.hm-bar.bg-income { background: linear-gradient(90deg, #52c41a 0%, #73d13d 100%); width: 0%; }
.hm-bar.bg-expense { background: linear-gradient(90deg, #ff4d4f 0%, #ff7875 100%); width: 0%; }
.hm-formula-box { background: #f7f9fb; border-radius: 4px; padding: 8px 4px; display: flex; align-items: flex-end; justify-content: center; gap: 1px; margin-bottom: 8px; }
.hm-formula-item { text-align: center; flex: 1; min-width: 0; padding: 0 1px; display: flex; flex-direction: column; }
.hm-formula-label { font-size: 9px; color: #8e9ca1; margin-bottom: 3px; display: flex; align-items: center; justify-content: center; white-space: nowrap; line-height: 1.2; }
.hm-formula-label .hm-help { font-size: 8px; margin-left: 1px; }
.hm-formula-val { font-size: 10px; font-weight: 600; color: #022433; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; }
.hm-formula-op { font-size: 12px; color: #2f95ff; font-weight: 400; flex-shrink: 0; padding: 0 1px; line-height: 1; align-self: center; margin-bottom: 6px; }
.hm-ratios { display: grid; grid-template-columns: 1fr 1px 1fr; gap: 2px; align-items: center; }
.hm-ratio-divider { width: 1px; height: 40px; background: #f0f2f5; }
.hm-ratio-item { text-align: center; padding: 4px 0; }
.hm-ratio-label { font-size: 10px; color: #607582; margin-bottom: 4px; display: flex; align-items: center; justify-content: center; white-space: nowrap; }
.hm-ratio-val { font-size: 16px; font-weight: 600; color: #022433; margin-bottom: 2px; }
.hm-ratio-compare { font-size: 10px; color: #8e9ca1; }
.hm-ratio-compare .up { color: #f5222d; }
.hm-profit-compare { margin-bottom: 2px; gap: 2px; }
.hm-chart-area { margin-top: 8px; }
.hm-chart-legend { display: flex; gap: 16px; margin-bottom: 6px; font-size: 10px; color: #607582; }
.hm-legend-item { display: flex; align-items: center; gap: 3px; }
.hm-legend-dot { width: 7px; height: 7px; border-radius: 1px; }
.hm-legend-dot.blue { background: #40a9ff; }
.hm-legend-dot.red { background: #ff4d4f; }
.hm-legend-line { width: 14px; height: 1px; background: #69b1ff; border-radius: 1px; }
.hm-chart-container { display: grid; grid-template-columns: 22px 1fr 30px; gap: 2px; align-items: stretch; }
.hm-chart-y-axis, .hm-chart-y-axis-right { display: flex; flex-direction: column; justify-content: space-between; height: 80px; font-size: 9px; color: #c0c8d0; line-height: 1; padding-top: 2px; }
.hm-chart-y-axis { text-align: right; padding-right: 2px; }
.hm-chart-y-axis-right { text-align: left; padding-left: 2px; }
.hm-chart-plot { position: relative; height: 80px; }
.hm-zero-line { position: absolute; left: 0; right: 0; top: 40px; border-top: 1px dashed #e8eaed; z-index: 0; }
.hm-chart-cols { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(6, 1fr); z-index: 1; }
.hm-chart-col { position: relative; display: flex; justify-content: center; align-items: flex-end; }
.hm-bar { width: 14px; border-radius: 2px 2px 0 0; position: absolute; bottom: 40px; z-index: 2; }
.hm-bar.red { background: #ff4d4f; border-radius: 0 0 2px 2px; bottom: auto; top: 40px; }
.hm-bar.blue { background: #40a9ff; }
.hm-bar.h8 { height: 8px; }
.hm-bar.h25 { height: 25px; }
.hm-bar.h35 { height: 35px; }
.hm-rate-line { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 3; pointer-events: none; overflow: visible; }
.hm-chart-months { display: grid; grid-template-columns: 22px repeat(6, 1fr) 30px; gap: 2px; margin-top: 4px; text-align: center; font-size: 9px; color: #8e9ca1; line-height: 1; }
.hm-chart-months span:nth-child(1) { grid-column: 2; }
.hm-chart-months span:nth-child(2) { grid-column: 3; }
.hm-chart-months span:nth-child(3) { grid-column: 4; }
.hm-chart-months span:nth-child(4) { grid-column: 5; }
.hm-chart-months span:nth-child(5) { grid-column: 6; }
.hm-chart-months span:nth-child(6) { grid-column: 7; }
.hm-chart-x-label { display: grid; grid-template-columns: 22px 1fr 30px; margin-top: 2px; font-size: 9px; color: #8e9ca1; }
.hm-chart-x-label > div { grid-column: 2; display: flex; justify-content: space-between; }
.voucher-page { background: #fff; min-height: 100%; border: 1px solid #e2e9ee; border-radius: 8px; overflow: hidden; }
.page-head { height: 40px; display: flex; align-items: center; padding: 0 12px; border-bottom: 0; font-size: 14px; font-weight: 600; color: #022433; }
.filters { padding: 8px 12px; border-bottom: 0; }
.filter-row { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; }
.field { height: 30px; border: 1px solid #d9d9d9; background: #fff; border-radius: 6px; padding: 0 10px; min-width: 80px; color: #022433; font-size: 14px; white-space: nowrap; }
.voucher-period { width: 112px; min-width: 112px; }
.voucher-scope { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 70px; cursor: default; }
.voucher-scope span { color: #999; font-size: 10px; }
.voucher-subtotal-toggle { white-space: nowrap; color: #666; display: flex; align-items: center; gap: 4px; }
.voucher-subtotal { padding: 10px 14px; color: #425866; background: #f7fafe; border-top: 1px solid #e8eaed; font-size: 13px; text-align: right; }
.voucher-filter-actions { display: flex; align-items: center; gap: 8px; }
.search { width: 240px; min-width: 200px; flex-shrink: 1; }
.link-btn { border: 0; background: transparent; color: #2f95ff; padding: 4px 8px; font-size: 14px; }
.advanced { display: none; grid-template-columns: repeat(4, minmax(190px, 1fr)); gap: 12px 18px; padding-top: 12px; }
.advanced.open { display: grid; }
.advanced label { display: grid; grid-template-columns: 72px 1fr; align-items: center; color: #8e9ca1; font-size: 14px; }
.toolbar { display: flex; gap: 8px; padding: 8px 12px; border-bottom: 1px solid #e8eaed; }
.btn { height: 32px; padding: 4px 12px; border: 1px solid #c9c9c9; background: transparent; border-radius: 6px; color: #022433; font-size: 14px; }
.btn.primary { background: #2f95ff; border-color: #2f95ff; color: #fff; }
.btn:disabled { color: #c9c9c9; background: #f7f9fa; border-color: #e8eaed; }
.spacer { flex: 1; }
table { border-collapse: collapse; width: 100%; }
th { height: 36px; background: #eaf0fa; color: #333; font-weight: 400; border-bottom: 1px solid #e8eaed; border-right: 1px solid #f0f2f5; text-align: center; padding: 8px 12px; white-space: nowrap; font-size: 14px; }
td { height: 40px; padding: 8px 12px; border-bottom: 1px solid #f0f2f5; border-right: 1px solid #f5f6f7; color: #333; font-size: 14px; text-align: center; }
td.number { text-align: right; font-variant-numeric: tabular-nums; }
tr:hover td { background: #f7fafe; }
.empty { height: 280px; text-align: center; color: #999; }
.empty-icon { width: 50px; height: 40px; margin: 0 auto 12px; border: 1px solid #e0e6eb; border-radius: 4px; position: relative; opacity: 0.5; }
.empty-icon::after { content: ""; position: absolute; left: 8px; right: 8px; top: 10px; height: 2px; background: #e0e6eb; box-shadow: 0 8px 0 #e0e6eb, 0 16px 0 #e0e6eb; }
.pagination { height: 40px; display: flex; align-items: center; gap: 8px; padding: 0 12px; color: #666; font-size: 14px; border-top: 1px solid #e8eaed; }
.menu-flyout { position: fixed; left: 138px; top: 56px; width: 220px; background: white; border: 1px solid #dfe7ed; box-shadow: 0 7px 20px #1f3d5526; z-index: 20; padding: 10px 0; }
.menu-group-title { padding: 8px 20px; font-weight: 700; color: #304c5e; }
.menu-entry { padding: 10px 22px; cursor: pointer; }
.menu-entry:hover { background: #edf6ff; color: #238ee9; }
.book-flyout { width: 486px; display: grid; grid-template-columns: 1fr 1fr; padding: 18px 0; }
.book-column + .book-column { border-left: 1px solid #e2e8ed; }
.book-heading { height: 38px; padding: 7px 32px; font-size: 16px; font-weight: 700; color: #2c4657; }
.book-flyout .menu-entry { height: 40px; padding: 10px 32px; position: relative; }
.new-badge { position: absolute; right: 30px; top: 11px; background: #ff5b60; color: white; font-size: 10px; padding: 1px 3px; border-radius: 2px; }
.cashier-flyout { width: 726px; }
.settings-flyout { width: 966px; }
.salary-flyout { width: 486px; }
.settings-flyout .menu-entry { height: 40px; }
.entry-page { background: #f3f6f9; min-height: 100%; padding: 16px; overflow: auto; border: 0; }
.entry-sheet { width: 100%; min-width: 960px; background: #fff; margin: 0 auto; box-shadow: 0 2px 8px rgba(0,0,0,0.08); border-radius: 4px; overflow: hidden; }
.entry-toolbar { height: 40px; background: #fff; display: flex; align-items: center; gap: 0; padding: 0 12px; border-bottom: 1px solid #e8eaed; flex-shrink: 0; }
.entry-toolbar .btn { height: 28px; font-size: 14px; padding: 0 12px; background: transparent; border: 1px solid #d9d9d9; color: #022433; border-radius: 4px; margin-right: 8px; white-space: nowrap; }
.entry-toolbar .btn:hover { border-color: #2f95ff; color: #2f95ff; background: #f0f7ff; }
.entry-toolbar .btn.primary { background: #2f95ff; border-color: #2f95ff; color: #fff; }
.entry-toolbar .btn.primary:hover { background: #1a85f0; border-color: #1a85f0; color: #fff; }
.entry-tools-right { display: flex; align-items: center; gap: 16px; color: #8e9ca1; font-size: 14px; margin-left: auto; white-space: nowrap; }
.voucher-paper { width: 100%; margin: 0; background: #fff; padding: 16px 24px; }
.voucher-meta { display: grid; grid-template-columns: auto 1fr auto; align-items: end; min-height: 70px; margin-bottom: 0; padding: 8px 0; gap: 20px; }
.voucher-meta .meta-fields { justify-self: start; }
.voucher-meta .attachment { justify-self: end; }
.voucher-title { text-align: center; font-size: 22px; font-weight: 600; letter-spacing: 1px; color: #022433; white-space: nowrap; }
.voucher-period { text-align: center; color: #8e9ca1; margin-top: 4px; font-size: 14px; }
.meta-fields { display: flex; gap: 8px; align-items: center; color: #022433; font-size: 14px; flex-shrink: 0; white-space: nowrap; }
.meta-control { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.meta-input { width: 120px; height: 30px; border: 1px solid #d9d9d9; border-radius: 6px; text-align: left; padding: 0 8px; outline: 0; background: #fff; font-size: 14px; }
.meta-input.number { width: 60px; text-align: center; }
.meta-input.date { width: 130px; }
.meta-readonly { display: inline-flex; align-items: center; box-sizing: border-box; color: #022433; background: #f7f9fb; cursor: default; user-select: text; }
.meta-readonly.number { justify-content: center; }
.attachment { color: #2f95ff; display: flex; justify-content: flex-end; align-items: center; gap: 8px; font-size: 14px; flex-shrink: 0; }
.attachment .count { width: 50px; height: 30px; border: 1px solid #d9d9d9; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; color: #022433; }
.entry-table { table-layout: fixed; border: 1px solid #e8eaed; border-collapse: collapse; width: 100%; }
.entry-table th, .entry-table td { border: 1px solid #e8eaed; }
.entry-table th { height: 52px; background: #fff; text-align: center; color: #181d1f; font-size: 14px; font-weight: 400; }
.entry-table td { height: 59px; padding: 0; position: relative; }
.entry-table textarea, .entry-table input { width: 100%; height: 58px; border: 0; outline: 0; resize: none; padding: 8px; color: #022433; background: transparent; font-size: 14px; }
.entry-table input[type=number] { text-align: right; font-size: 14px; }
.entry-table .row-no { width: 36px; text-align: center; color: #8e9ca1; font-size: 14px; }
.entry-table .summary-col { width: 160px; }
.entry-table th.summary-col { text-align: center !important; vertical-align: middle; }
.entry-table td:nth-child(2) textarea { padding: 0 12px; line-height: 58px; white-space: nowrap; overflow: hidden; text-align: left; }
.entry-table .account-col { width: 180px; }
.entry-table .money-col { width: 200px; }
.money-head { padding: 0 !important; }
.money-title { height: 28px; display: grid; place-items: center; border-bottom: 1px solid #e8eaed; font-size: 13px; }
.money-digits { height: 24px; display: grid; grid-template-columns: repeat(11, 1fr); align-items: center; font-size: 12px; font-weight: 400; }
.money-digits span { height: 24px; display: grid; place-items: center; border-right: 1px solid #f0f2f5; }
.money-digits span:nth-child(3), .money-digits span:nth-child(6) { border-right-color: #9fcdf5; }
.money-digits span:nth-child(9) { border-right-color: #ffb4a9; }
.digit-cell { background-image: repeating-linear-gradient(to right, transparent 0, transparent calc(9.09% - 1px), #f0f2f5 calc(9.09% - 1px), #f0f2f5 9.09%); }
.digit-cell::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(to right, transparent 27.27%, #a9d5fa 27.27%, #a9d5fa calc(27.27% + 1px), transparent calc(27.27% + 1px), transparent 54.54%, #a9d5fa 54.54%, #a9d5fa calc(54.54% + 1px), transparent calc(54.54% + 1px), transparent 81.81%, #ffb2a5 81.81%, #ffb2a5 calc(81.81% + 1px), transparent calc(81.81% + 1px)); }
.digit-cell input { position: absolute; inset: 0; z-index: 2; font-size: 14px; padding-right: 8px; text-align: right; color: transparent; caret-color: transparent; }
.digit-cell input:focus { color: #022433; caret-color: #022433; background: #fff; }
.money-display { position: absolute; inset: 0; z-index: 1; display: grid; grid-template-columns: repeat(11, 1fr); align-items: center; text-align: center; font-size: 14px; font-weight: 600; color: #022433; pointer-events: none; }
.digit-cell input:focus + .money-display { display: none; }
.money-display span { display: grid; place-items: center; height: 100%; }
.total-money .money-display { font-size: 14px; }
.total-row .digit-cell { padding: 0 !important; background-image: none; }
.total-row .money-display span { border-right: 1px solid #f0f2f5; }
.total-row .money-display span:nth-child(3),
.total-row .money-display span:nth-child(6) { border-right-color: #8bc8ff; }
.total-row .money-display span:nth-child(9) { border-right-color: #ff9f93; }
.total-row .money-display span:last-child { border-right: 0; }
.row-actions { position: absolute; left: -25px; top: 10px; display: none; flex-direction: column; gap: 3px; }
.entry-table tr:hover .row-actions { display: flex; }
.row-action { width: 20px; height: 20px; border: 1px solid #b7c5ce; background: white; border-radius: 50%; padding: 0; line-height: 17px; color: #3b91d5; }
.total-row td { height: 52px; background: white; font-weight: 700; }
.total-label { padding-left: 18px !important; }
.total-money { text-align: right; padding-right: 12px !important; font-size: 17px; }
.voucher-foot { display: flex; justify-content: space-between; align-items: center; padding: 22px 0 0; color: #29475b; font-size: 16px; }
.bottom-actions { display: flex; justify-content: flex-end; gap: 12px; margin: 0; }
.toast { position: fixed; top: 74px; left: 50%; transform: translateX(-50%); background: #263f50; color: white; padding: 11px 20px; border-radius: 4px; box-shadow: 0 5px 18px #0003; z-index: 50; }
.placeholder-page { min-height: 420px; background: white; border: 1px solid #e2e9ee; display: grid; place-items: center; text-align: center; color: #758894; }
.placeholder-page h2 { color: #314c5d; font-size: 21px; }
.platform-page { min-height: 100vh; background: #f4f6f8; color: #253d4b; overflow: auto; }
.platform-top { height: 70px; background: white; display: flex; align-items: center; padding: 0 64px; box-shadow: 0 1px 4px #233b4d16; }
.platform-brand { color: #2693eb; font-size: 20px; font-weight: 700; }
.platform-links { margin-left: auto; display: flex; gap: 38px; align-items: center; font-size: 16px; }
.platform-layout { display: grid; grid-template-columns: 266px minmax(760px,1fr) 244px; gap: 20px; max-width: 1920px; margin: 25px auto; padding: 0 62px; }
.platform-side, .platform-main, .platform-right { background: white; border-radius: 8px; }
.company-card { padding: 28px 18px 20px; text-align: center; background: #dfe8ff; border-radius: 8px 8px 0 0; }
.cert { width: 75px; height: 75px; margin: 0 auto 12px; border-radius: 50%; background: white; display: grid; place-items: center; color: #2c97ee; font-size: 30px; }
.platform-side-menu { padding: 14px 0; }
.platform-side-item { height: 52px; padding: 0 25px; display: flex; align-items: center; gap: 12px; font-size: 16px; }
.platform-side-item.active { background: #e8f4ff; color: #228ce9; }
.hero-banner { height: 168px; margin-bottom: 15px; background: linear-gradient(120deg,#5538ff,#526df5 70%,#8d51e7); color: white; display: grid; place-items: center; font-size: 30px; font-weight: 700; }
.service-area { padding: 25px; }
.service-tabs { display: flex; gap: 38px; border-bottom: 1px solid #dfe5e9; margin-bottom: 20px; }
.service-tab { padding: 0 4px 13px; font-size: 17px; }
.service-tab.active { color: #298ff0; border-bottom: 2px solid #298ff0; }
.service-card { border: 1px solid #dfe7ed; border-radius: 7px; margin: 14px 0; padding: 28px 22px 0; }
.service-title { display: flex; align-items: center; gap: 14px; font-size: 18px; font-weight: 700; }
.service-icon { width: 52px; height: 52px; border-radius: 12px; background: #ffa528; color: white; display: grid; place-items: center; font-size: 25px; }
.service-info { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 18px 0 24px; color: #536a78; }
.service-actions { border-top: 1px solid #e5eaee; height: 68px; display: flex; align-items: center; gap: 28px; color: #268de9; }
.service-actions .btn { margin-left: auto; }
.platform-right { padding: 24px; }
.support-list { line-height: 2.2; border-bottom: 1px solid #e0e6ea; padding-bottom: 14px; }
.qr-box { height: 170px; margin-top: 18px; background: repeating-linear-gradient(45deg,#1c92df 0 5px,#fff 5px 10px); border: 12px solid #eef7ff; }
.ledger-hub { min-height: 100vh; background: #f4f4f4; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
.hub-top { height: 42px; background: #438ee4; color: #fff; display: flex; align-items: center; }
.hub-menu-left { display: flex; align-items: center; }
.jdy-logo { height: 42px; display: flex; align-items: center; padding: 0 12px 0 18px; color: #fff; font-size: 18px; font-weight: 700; letter-spacing: 1px; }
.hub-dot { color: #fff; font-size: 12px; }
.hub-companies { color: #fff; font-size: 14px; margin-left: 10px; }
.hub-menu-right { margin-left: auto; display: flex; align-items: center; padding-right: 15px; }
.hub-welcome { color: #fff; font-size: 14px; margin-right: 20px; }
.hub-nav { display: flex; align-items: center; list-style: none; margin: 0; padding: 0; }
.hub-nav-item { width: 34px; height: 42px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.hub-nav-item:hover { background: rgba(255,255,255,0.15); }
.hub-nav-icon { font-size: 20px; color: #fff; font-style: normal; }
.hub-crumb { height: 30px; background: #fff; border-bottom: 1px solid #ddd; display: flex; align-items: center; padding: 0 15px; }
.hub-crumb-home { color: #438ee4; font-size: 14px; cursor: pointer; }
.hub-cards { list-style: none; margin: 0; padding: 20px 0 0 40px; overflow: hidden; }
.hub-card { width: 250px; height: 200px; background: #fff; border: 1px solid #ddd; border-radius: 5px; box-shadow: 1px 1px 15px 0 #ccc; float: left; margin: 0 10px 10px 0; cursor: pointer; }
.hub-card:hover { box-shadow: 1px 1px 20px 0 #aaa; }
.hub-card-inner { height: 200px; display: flex; flex-direction: column; }
.hub-card-content { padding: 12px 17px 0; flex: 1; min-height: 0; }
.hub-card-title { margin: 0 0 10px; font-size: 14px; font-weight: 500; border-bottom: 1px solid #f2f2f4; height: 40px; display: flex; align-items: center; }
.hub-company-name { color: #438ee4; font-size: 14px; font-weight: 500; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hub-edit { color: #438ee4; margin-left: 8px; font-size: 14px; cursor: pointer; }
.hub-detail { list-style: circle inside; margin: 0; padding: 0; color: #666; font-size: 12px; }
.hub-detail li { height: 22px; line-height: 22px; color: #666; }
.hub-card-bottom { height: 30px; background: #438ee4; padding: 0 15px; display: flex; align-items: center; justify-content: space-between; }
.hub-period { color: #fff; font-size: 14px; }
.hub-bottom-actions { display: flex; align-items: center; gap: 6px; }
.hub-upload { color: #fff; font-size: 16px; cursor: pointer; }
.hub-btn { height: 20px; padding: 0 5px; font-size: 12px; border-radius: 1.5px; cursor: pointer; display: inline-flex; align-items: center; border: 1px solid #f3f3f6; color: #333; }
.hub-btn-default { background: #ecf3fc; margin-right: 2px; }
.hub-btn-white { background: #fff; }
.hub-card-new { display: flex; align-items: center; justify-content: center; }
.hub-new-inner { display: flex; flex-direction: column; align-items: center; color: #438ee4; }
.hub-new-plus { width: 50px; height: 50px; border-radius: 50%; border: 2px dashed #438ee4; color: #438ee4; font-size: 36px; line-height: 46px; text-align: center; margin-bottom: 10px; }
.hub-new-text { font-size: 14px; }
.modal-mask { position: fixed; inset: 0; background: #17304466; z-index: 100; display: grid; place-items: center; }
.create-modal { width: 480px; background: white; border-radius: 7px; box-shadow: 0 12px 38px #0004; }
.create-modal-head { height: 58px; padding: 18px 22px; border-bottom: 1px solid #e1e6ea; font-size: 18px; font-weight: 700; }
.create-modal-body { padding: 24px; }
.create-modal-body label { display: grid; grid-template-columns: 90px 1fr; align-items: center; margin: 15px 0; }
.create-modal-foot { padding: 16px 24px; border-top: 1px solid #e1e6ea; display: flex; justify-content: flex-end; gap: 10px; }
.accounting-internal-modal { max-height:90vh; display:flex; flex-direction:column; min-height:0; }
.accounting-internal-modal .create-modal-head,.accounting-internal-modal .create-modal-foot { flex-shrink:0; }
.accounting-internal-modal .create-modal-body { overflow:auto; min-height:0; }
.accounting-internal-modal .create-modal-body label { display:flex; flex-direction:column; align-items:stretch; gap:7px; margin:0; min-width:0; }
.accounting-internal-modal .create-modal-body .field { min-width:0; max-width:100%; width:100%; box-sizing:border-box; }
.accounting-internal-modal fieldset { min-width:0; }
.report-page { background: #fff; min-height: 100%; border: 1px solid #e2e9ee; border-radius: 8px; overflow: hidden; }
.report-head { height: 40px; display: flex; align-items: center; padding: 0 12px; border-bottom: 0; }
.report-head h2, .report-head .report-title { font-size: 14px; font-weight: 600; margin: 0; color: #022433; }
.report-filters { padding: 8px 12px; display: flex; align-items: center; gap: 8px; border-bottom: 0; }
.report-sub-title { padding: 12px 16px; border-bottom: 1px solid #e8eaed; }
.report-sub-title .subject-name { font-size: 14px; font-weight: 600; color: #022433; }
.report-toolbar { padding: 8px 12px; display: flex; gap: 8px; border-bottom: 1px solid #e8eaed; }
.report-table-wrap { overflow: auto; }
.book-page { background: #f3f6f9; border: 0; border-radius: 0; }
.book-page .report-head { background: #fff; border-bottom: 1px solid #e8eaed; padding: 0 16px; }
.book-page .report-filters { background: #fff; border-bottom: 1px solid #e8eaed; padding: 12px 16px; }
.book-page .report-sub-title { background: #fff; }
.book-page .report-toolbar { background: #fff; border-bottom: 1px solid #e8eaed; padding: 8px 16px; }
.book-page .report-table-wrap { background: #fff; padding: 0 16px 16px; }
.report-table { min-width: 100%; border-collapse: collapse; width: 100%; }
.report-table th { text-align: center; border: 1px solid #e8eaed; background: #fafbfc; height: 40px; font-weight: 400; color: #022433; font-size: 14px; }
.report-table td { height: 40px; border: 1px solid #e8eaed; padding: 0 12px; font-size: 14px; color: #022433; }
.report-table .number { text-align: right; font-variant-numeric: tabular-nums; }
.report-table .total td { background: #f0f7fd; font-weight: 700; }
.report-table td.bold { font-weight: 600; padding-left: 0; text-indent: 0; }
.balance-table th:nth-child(1), .balance-table th:nth-child(5) { width: 25%; }
.balance-table th:nth-child(2), .balance-table th:nth-child(6) { width: 5%; }
.balance-table th:nth-child(3), .balance-table th:nth-child(4), .balance-table th:nth-child(7), .balance-table th:nth-child(8) { width: 10%; }
.balance-table td:nth-child(1), .balance-table td:nth-child(5) { padding-left: 22px; }
.balance-table td { height: 40px; }
.statement-title { text-align: center; padding: 17px 0 4px; font-size: 22px; font-weight: 700; }
.statement-meta { display: flex; justify-content: space-between; padding: 0 22px 12px; color: #647986; }
/* 精斗云风格报表样式优化 */
.report-toolbar .btn { height: 28px; padding: 2px 12px; font-size: 12px; border-radius: 6px; border: 1px solid #c9c9c9; background: #fff; color: #022433; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.report-toolbar .btn:hover { border-color: #2f95ff; color: #2f95ff; background: #eaf4ff; }
.report-toolbar .btn:active { border-color: #2677cc; }
.report-filters .field { height: 28px; border: 1px solid #d9d9d9; border-radius: 6px; font-size: 14px; padding: 0 8px; color: #022433; background: #fff; }
.report-filters .field:focus { border-color: #2f95ff; outline: none; }
.report-filters .btn.primary { height: 28px; background: #2f95ff; border: 1px solid #2f95ff; color: #fff; border-radius: 6px; padding: 2px 12px; font-size: 12px; cursor: pointer; }
.report-filters .btn.primary:hover { background: #6db5ff; border-color: #6db5ff; }
.book-filter-wrap { flex-wrap: wrap; }
.book-filter-panel { flex: 0 0 100%; display: flex; align-items: center; gap: 8px; padding-top: 8px; }
.book-filter-panel .field { flex: 1; min-width: 220px; }
.book-filter-panel .btn { height: 28px; padding: 2px 12px; font-size: 12px; border-radius: 6px; border: 1px solid #c9c9c9; background: #fff; color: #022433; cursor: pointer; }
.book-filter-panel .btn:hover { border-color: #2f95ff; color: #2f95ff; background: #eaf4ff; }
.book-filter-panel .btn.primary { background: #2f95ff; border-color: #2f95ff; color: #fff; }
.book-filter-panel .btn.primary:hover { background: #6db5ff; border-color: #6db5ff; color: #fff; }
.report-table th { background: #eaf0fa; color: #333; font-weight: 500; }
.report-table tr:hover td { background: #f7fafe; }
.report-table .total td { background: #eaf4ff; }
/* 结账页面按钮样式（精斗云风格） */
.closing-toolbar .btn { height: 28px; padding: 2px 12px; font-size: 12px; border-radius: 6px; border: 1px solid #c9c9c9; background: #fff; color: #022433; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.closing-toolbar .btn:hover { border-color: #2f95ff; color: #2f95ff; background: #eaf4ff; }
.closing-toolbar .btn.primary { background: #2f95ff; border-color: #2f95ff; color: #fff; }
.closing-toolbar .btn.primary:hover { background: #6db5ff; border-color: #6db5ff; }
.closing-toolbar .btn:disabled { background: #f5f5f5; border-color: #d9d9d9; color: #bcbcbc; cursor: not-allowed; }
.closing-toolbar { padding: 8px 16px; display: flex; gap: 8px; align-items: center; background: #fff; border-bottom: 1px solid #e8eaed; }
.closing-tabs { display: flex; background: #fff; border-bottom: 1px solid #e8eaed; padding: 0 16px; }
.closing-tab { padding: 10px 16px; cursor: pointer; font-size: 14px; color: #647986; border-bottom: 2px solid transparent; }
.closing-tab:hover { color: #2f95ff; }
.closing-tab.active { color: #2f95ff; border-bottom-color: #2f95ff; font-weight: 500; }
.closing-list { padding: 16px; display: grid; gap: 12px; }
.closing-item { border: 1px solid #e8eaed; border-radius: 6px; padding: 16px; display: grid; grid-template-columns: 200px 1fr auto; gap: 16px; align-items: center; background: #fff; }
.closing-item:hover { border-color: #2f95ff; box-shadow: 0 2px 8px rgba(47,149,255,0.1); }
.closing-name { font-size: 14px; color: #022433; font-weight: 500; }
.closing-status { font-size: 13px; color: #647986; }
.closing-actions { display: flex; gap: 8px; align-items: center; }
.original-toolbar { padding: 10px 20px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid #e4eaee; overflow-x: auto; }
.original-toolbar .btn { white-space: nowrap; }
.original-body { display: grid; grid-template-columns: 220px minmax(0,1fr); min-height: 730px; }
.attachment-sidebar { border-right: 1px solid #dfe7ec; background: #fafbfc; }
.attachment-side-title { height: 48px; display: flex; align-items: center; justify-content: space-between; padding: 0 18px; font-weight: 700; border-bottom: 1px solid #e1e7eb; }
.attachment-side-period { padding: 12px 18px; color: #647986; border-bottom: 1px solid #e1e7eb; }
.attachment-categories { display: block; padding: 8px 0; }
.attachment-category { display: block; padding: 11px 20px; cursor: pointer; }
.attachment-category.active { color: #288fe9; background: #eaf5ff; border-right: 2px solid #288fe9; }
.original-table-area { min-width: 0; overflow: hidden; }
.original-table-area .report-table-wrap { height: 720px; }
.cashier-page, .asset-page { background: #fff; min-height: 100%; border: 1px solid #e2e9ee; border-radius: 8px; overflow: hidden; }
.cashier-head, .asset-head { height: 40px; display: flex; align-items: center; padding: 0 12px; }
.cashier-head h2, .asset-head h2 { font-size: 14px; font-weight: 600; margin: 0; color: #022433; }
.cashier-page .report-filters, .asset-page .report-filters,
.cashier-page .report-toolbar, .asset-page .report-toolbar,
.cashier-page .original-toolbar, .asset-page .original-toolbar { padding: 8px 12px; }
.cashier-page .report-table td, .asset-page .report-table td { height: 40px; }
.closing-page { background: #fff; min-height: 100%; border: 1px solid #e2e9ee; border-radius: 8px; overflow: hidden; }
.closing-tabs { height: 40px; display: flex; gap: 28px; align-items: end; padding: 0 12px; border-bottom: 1px solid #e8eaed; }
.closing-tab { height: 36px; display: flex; align-items: center; font-size: 14px; }
.closing-tab.active { color: #2f95ff; border-bottom: 2px solid #2f95ff; }
.closing-toolbar { padding: 8px 12px; display: flex; gap: 8px; border-bottom: 1px solid #e8eaed; }
.closing-list { padding: 12px; display: grid; gap: 12px; }
.closing-item { border: 1px solid #dde6ec; border-radius: 6px; min-height: 94px; display: grid; grid-template-columns: 210px 1fr auto; align-items: center; padding: 16px 20px; }
.closing-name { font-size: 14px; font-weight: 600; }
.closing-status { color: #7b8c97; line-height: 1.7; }
.closing-actions { display: flex; gap: 8px; }
.status-off { display: inline-block; padding: 3px 9px; background: #f1f3f5; color: #89959d; border-radius: 3px; margin-left: 8px; font-size: 12px; }
.confirm-box { width: 420px; background: white; border-radius: 7px; padding: 24px; box-shadow: 0 12px 36px #0004; }
.confirm-box h3 { margin-top: 0; }
.confirm-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; }
.subject-cell { position: relative; }
.subject-picker { position: absolute; left: 0; top: calc(100% + 4px); width: 460px; height: 365px; background: white; border: 1px solid #d8e1e7; border-radius: 5px; box-shadow: 0 8px 24px #20384938; z-index: 80; overflow: hidden; }
.subject-picker-search { height: 42px; display: flex; align-items: center; gap: 8px; padding: 0 10px; border-bottom: 1px solid #e4eaee; background: #fbfcfd; }
.subject-picker-search-input { min-width: 0; flex: 1; height: 30px; padding: 0 10px; border: 1px solid #cfd9df; border-radius: 4px; background: #fff; color: #17394c; font: inherit; font-size: 13px; outline: none; }
.subject-picker-search-input:focus { border-color: #2f95ff; box-shadow: 0 0 0 2px #2f95ff22; }
.subject-picker-search-icon { color: #6f818b; font-size: 17px; line-height: 1; }
.subject-list { height: 268px; overflow-y: auto; padding: 4px 0; }
.subject-picker-empty { padding: 24px 12px; color: #8999a3; text-align: center; font-size: 13px; }
.subject-option { height: 32px; display: flex; align-items: center; font-size: 14px; cursor: pointer; white-space: nowrap; color: #333; }
.subject-option.parent .subject-text { color: #022433; font-weight: 700; font-size: 14px; }
.subject-option.expanded { background: #eaf5fd; }
.subject-option.expanded .subject-text { color: #238ef0; }
.subject-option.expanded .tree-arrow::before { border-color: #238ef0 transparent transparent transparent; }
.subject-option.expanded .tree-arrow.collapsed::before { border-color: transparent transparent transparent #238ef0; border-width: 5px 0 5px 8px; }
.subject-option:hover { background: #eaf5fd; }
.subject-option:hover .subject-text { color: #238ef0; }
.subject-option:hover .tree-arrow::before { border-color: #238ef0 transparent transparent transparent; }
.subject-option:hover .tree-arrow.collapsed::before { border-color: transparent transparent transparent #238ef0; border-width: 5px 0 5px 8px; }
.subject-text { overflow: hidden; text-overflow: ellipsis; font-family: inherit; }
.subject-add { height: 42px; border-top: 1px solid #dce3e8; display: flex; align-items: center; justify-content: center; font-size: 13px; cursor: pointer; }
.subject-add:hover { color: #298fe9; }
.subject-more-button { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; padding: 0 0 4px; border: 1px solid #315468; border-radius: 50%; display: grid; place-items: center; background: #fff; color: #17394c; font: 700 8px/1 Arial,sans-serif; letter-spacing: 0; cursor: pointer; z-index: 3; }
.subject-more-button:hover, .subject-more-button:focus-visible { color: #2f95ff; border-color: #2f95ff; outline: none; box-shadow: 0 0 0 2px #2f95ff22; }
.subject-input-wrap input { padding-right: 42px !important; }
.subject-selector-modal { width: min(1120px,calc(100vw - 80px)); height: min(640px,calc(100vh - 56px)); background: #fff; border-radius: 7px; overflow: hidden; display: grid; grid-template-rows: 52px minmax(0,1fr) 60px; box-shadow: 0 14px 42px #0005; color: #092d40; }
.subject-selector-head { display: flex; align-items: center; padding: 0 24px; border-bottom: 1px solid #d7dde1; font-size: 18px; }
.subject-selector-head strong { font-weight: 700; }
.subject-selector-close { margin-left: auto; width: 28px; height: 28px; padding: 0; border: 0; background: transparent; color: #62686c; font: 300 25px/1 Arial,sans-serif; cursor: pointer; }
.subject-selector-main { min-height: 0; padding: 14px 20px 10px; display: grid; grid-template-rows: 40px minmax(0,1fr); gap: 10px; }
.subject-selector-toolbar { display: flex; align-items: center; gap: 14px; }
.subject-selector-tabs { width: 380px; height: 34px; display: grid; grid-template-columns: repeat(5,1fr); border: 1px solid #cfd7dc; border-radius: 6px; overflow: hidden; flex: none; }
.subject-selector-tabs button { padding: 0; border: 0; border-right: 1px solid #cfd7dc; background: #fff; color: #092d40; font: inherit; font-size: 14px; cursor: pointer; }
.subject-selector-tabs button:last-child { border-right: 0; }
.subject-selector-tabs button.active { background: #3297ee; color: #fff; }
.subject-selector-search { position: relative; width: 290px; height: 34px; flex: none; }
.subject-selector-search input { width: 100%; height: 100%; box-sizing: border-box; border: 1px solid #d2d9de; border-radius: 6px; padding: 0 36px 0 14px; color: #092d40; font: inherit; font-size: 13px; outline: none; }
.subject-selector-search input::placeholder { color: #93a0a8; }
.subject-selector-search input:focus { border-color: #3297ee; box-shadow: 0 0 0 2px #3297ee22; }
.subject-selector-search span { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); font-size: 18px; pointer-events: none; }
.subject-selector-expand { display: flex; align-items: center; gap: 6px; white-space: nowrap; font-size: 14px; cursor: pointer; }
.subject-selector-expand input { width: 16px; height: 16px; margin: 0; }
.subject-selector-table-wrap { min-height: 0; overflow: auto; border: 1px solid #bfd2e7; border-radius: 8px; }
.subject-selector-table { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; color: #092d40; font-size: 14px; }
.subject-selector-table .select-col { width: 52px; }
.subject-selector-table .code-col { width: 135px; }
.subject-selector-table .name-col { width: 300px; }
.subject-selector-table .category-col { width: 140px; }
.subject-selector-table .direction-col { width: 100px; }
.subject-selector-table .aux-col { width: 145px; }
.subject-selector-table .settings-col { width: 44px; }
.subject-selector-table th { position: sticky; top: 0; z-index: 2; height: 44px; padding: 0 14px; border-right: 1px solid #c9d7e6; border-bottom: 1px solid #b9cde1; background: #edf4ff; text-align: left; font-size: 14px; font-weight: 400; }
.subject-selector-table th:last-child, .subject-selector-table td:last-child { border-right: 0; text-align: center; }
.subject-selector-table td { height: 42px; padding: 0 14px; border-right: 1px solid #c9d7e6; border-bottom: 1px solid #c9d7e6; background: #fff; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.subject-selector-table tbody tr:last-child td { border-bottom: 0; }
.subject-selector-table tbody tr:hover td { background: #f4f9ff; }
.subject-selector-table tbody tr.selected td { background: #e8f4ff; }
.subject-selector-table td:first-child { text-align: center; padding: 0; }
.subject-selector-table input[type="radio"] { appearance: none; width: 16px; height: 16px; margin: 0; border: 1px solid #b8bec2; border-radius: 50%; background: #fff; vertical-align: middle; }
.subject-selector-table input[type="radio"]:checked { border: 4px solid #3297ee; }
.subject-selector-name { display: flex; align-items: center; min-width: 0; }
.subject-selector-name > span:last-child { overflow: hidden; text-overflow: ellipsis; }
.subject-selector-name .parent-name { font-weight: 700; }
.subject-selector-arrow, .subject-selector-arrow-space { width: 18px; height: 24px; flex: none; padding: 0; border: 0; background: transparent; position: relative; }
.subject-selector-arrow::before { content: ""; position: absolute; left: 5px; top: 7px; border-width: 5px 0 5px 7px; border-style: solid; border-color: transparent transparent transparent #8b9297; }
.subject-selector-arrow.expanded::before { left: 4px; top: 9px; border-width: 7px 5px 0; border-color: #8b9297 transparent transparent; }
.subject-selector-settings { font-size: 16px; }
.subject-selector-empty td { height: 150px; text-align: center !important; color: #8d999f; cursor: default; }
.subject-selector-foot { display: flex; align-items: center; gap: 12px; padding: 0 24px; border-top: 1px solid #d7dde1; }
.subject-selector-foot .btn { height: 36px; min-width: 76px; padding: 0 18px; font-size: 14px; }
.subject-selector-foot .btn.primary { margin-left: auto; }
.subject-selector-message { color: #d9363e; font-size: 13px; }
.summary-input-wrap { position: relative; }
.summary-input-wrap textarea { padding-right: 38px !important; }
.summary-more-button { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; padding: 0 0 4px; border: 1px solid #315468; border-radius: 50%; display: grid; place-items: center; background: #fff; color: #17394c; font: 700 8px/1 Arial,sans-serif; letter-spacing: 0; cursor: pointer; opacity: 0; z-index: 3; }
.summary-input-wrap:hover .summary-more-button, .summary-input-wrap:focus-within .summary-more-button { opacity: 1; }
.summary-input-wrap:focus-within { box-shadow: inset 0 0 0 1px #2f95ff; background: #fff; }
.summary-more-button:hover, .summary-more-button:focus-visible { color: #2f95ff; border-color: #2f95ff; outline: none; }
.summary-library-modal { position: relative; width: min(640px,calc(100vw - 32px)); height: min(513px,calc(100vh - 32px)); background: #fff; border-radius: 6px; overflow: hidden; display: grid; grid-template-rows: 50px minmax(0,1fr) 50px; box-shadow: 0 12px 32px #0005; color: #022433; }
.summary-library-head { display: flex; align-items: center; padding: 0 20px; border-bottom: 1px solid #d7dde1; font-size: 16px; line-height: 27px; }
.summary-library-head button, .summary-editor-head button { margin-left: auto; width: 24px; height: 24px; padding: 0; border: 0; background: transparent; color: #666; font: 300 24px/1 Arial,sans-serif; cursor: pointer; }
.summary-library-main { min-height: 0; padding: 16px 20px 11px; display: grid; grid-template-rows: 30px minmax(0,1fr); gap: 12px; }
.summary-library-search { position: relative; width: 210px; height: 30px; }
.summary-library-search input { width: 100%; height: 100%; box-sizing: border-box; border: 1px solid #d9d9d9; border-radius: 4px; padding: 0 34px 0 10px; color: #022433; font: inherit; font-size: 14px; outline: none; }
.summary-library-search input::placeholder { color: #93a0a8; }
.summary-library-search input:focus { border-color: #3297ee; box-shadow: 0 0 0 1px #3297ee22; }
.summary-library-search span { position: absolute; right: 11px; top: 50%; transform: translateY(-54%); width: 14px; height: 14px; border: 1.5px solid #92999e; border-radius: 50%; font-size: 0; pointer-events: none; }
.summary-library-search span::after { content: ""; position: absolute; right: -5px; bottom: -3px; width: 7px; height: 1.5px; background: #92999e; transform: rotate(48deg); transform-origin: left center; }
.summary-library-table-wrap { min-height: 0; overflow: auto; border: 1px solid #c2d1e4; border-radius: 4px; }
.summary-library-table { width: 100%; height: auto; border-collapse: separate; border-spacing: 0; table-layout: fixed; color: #022433; font-size: 14px; }
.summary-library-table:has(.summary-library-empty-row) { height: 100%; }
.summary-library-table .summary-check-col { width: 50px; }
.summary-library-table .summary-action-col { width: 84px; }
.summary-library-table th { height: 36px; padding: 0 12px; border-right: 1px solid #c9d7e6; border-bottom: 1px solid #b9cde1; background: #eaf0fa; text-align: left; font-size: 14px; font-weight: 400; }
.summary-library-table th:last-child { border-right: 0; }
.summary-library-table td { height: 36px; padding: 0 12px; border-right: 1px solid #c9d7e6; border-bottom: 1px solid #c9d7e6; background: #fff; color: #022433; text-align: left; cursor: pointer; }
.summary-library-table td:first-child { padding: 0; text-align: center; }
.summary-library-table td:last-child { border-right: 0; }
.summary-library-table tr.selected td { background: #e8f4ff; }
.summary-library-table input[type="radio"] { appearance: none; width: 14px; height: 14px; margin: 0; border: 1px solid #b8bec2; border-radius: 50%; background: #fff; vertical-align: middle; }
.summary-library-table input[type="radio"]:checked { border: 4px solid #3297ee; }
.summary-library-icon { position: relative; border: 0; background: transparent; color: #0b3548; width: 28px; height: 28px; padding: 0; cursor: pointer; vertical-align: middle; }
.summary-library-icon.edit::before { content: ""; position: absolute; left: 12px; top: 5px; width: 3px; height: 15px; border: 1.5px solid currentColor; border-radius: 1px 1px 0 0; transform: rotate(43deg); }
.summary-library-icon.edit::after { content: ""; position: absolute; left: 6px; bottom: 5px; width: 16px; border-bottom: 1.5px solid currentColor; }
.summary-library-icon.delete::before { content: ""; position: absolute; left: 8px; top: 9px; width: 11px; height: 14px; border: 1.5px solid currentColor; border-top: 0; border-radius: 0 0 1px 1px; }
.summary-library-icon.delete::after { content: ""; position: absolute; left: 6px; top: 6px; width: 16px; height: 3px; border-top: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; box-shadow: 5px -3px 0 -1.5px currentColor; }
.summary-library-icon:hover { color: #2f95ff; }
.summary-library-table td:last-child { display: table-cell; white-space: nowrap; }
.summary-library-empty-row td { height: 100%; padding: 0; border: 0; cursor: default; }
.summary-library-empty { min-height: 300px; display: grid; place-content: center; justify-items: center; gap: 14px; color: #999; font-size: 14px; }
.summary-empty-art { width: 64px; height: 70px; position: relative; }
.summary-empty-art::before, .summary-empty-art::after { content: ""; position: absolute; bottom: 4px; width: 27px; height: 21px; border-radius: 50% 50% 6px 6px; background: #f9fbff; }
.summary-empty-art::before { left: 0; }.summary-empty-art::after { right: 0; }
.summary-empty-art span { position: absolute; z-index: 2; left: 14px; top: 0; width: 40px; height: 56px; border-radius: 2px; background: #e2e9f5; clip-path: polygon(0 0,72% 0,100% 22%,100% 100%,0 100%); }
.summary-empty-art span::after { content: ""; position: absolute; right: 0; top: 0; width: 10px; height: 11px; background: #f3f6fc; clip-path: polygon(0 0,100% 100%,0 100%); }
.summary-empty-art i, .summary-empty-art b { position: absolute; z-index: 3; left: 20px; height: 4px; background: #c8d0df; }
.summary-empty-art i { top: 21px; width: 8px; }.summary-empty-art b { top: 33px; width: 27px; box-shadow: 0 9px 0 #c8d0df; }
.summary-library-foot { display: flex; align-items: center; gap: 12px; padding: 0 20px; border-top: 1px solid #d7dde1; }
.summary-library-foot .btn { height: 32px; min-width: 60px; padding: 0 12px; font-size: 14px; border-radius: 6px; }
.summary-library-foot .btn.primary { margin-left: auto; }
.summary-library-foot .btn.primary:disabled { background: #8ac8fb; border-color: #8ac8fb; color: #fff; opacity: .72; }
.summary-library-foot .btn:not(.primary) { background: #fff; border-color: #bdbdbd; color: #092d40; }
#summary-library-message, #summary-editor-message { color: #d9363e; font-size: 12px; }
.summary-editor-layer { position: absolute; inset: 0; z-index: 5; display: grid; place-items: center; background: #0005; }
.summary-editor-modal { width: 420px; background: #fff; border-radius: 7px; overflow: hidden; box-shadow: 0 12px 36px #0004; }
.summary-editor-head { height: 50px; padding: 0 20px; display: flex; align-items: center; border-bottom: 1px solid #dfe5e9; font-size: 17px; }
.summary-editor-body { padding: 22px 24px; }
.summary-editor-body label { display: grid; gap: 9px; font-size: 14px; }
.summary-editor-body textarea { width: 100%; height: 92px; resize: none; padding: 10px 12px; border: 1px solid #d2d9de; border-radius: 6px; font: inherit; color: #092d40; outline: none; }
.summary-editor-body textarea:focus { border-color: #3297ee; box-shadow: 0 0 0 2px #3297ee22; }
.summary-editor-foot { height: 58px; padding: 0 20px; display: flex; align-items: center; justify-content: flex-end; gap: 10px; border-top: 1px solid #dfe5e9; }
.subject-modal { width: min(1100px, calc(100vw - 60px)); height: min(680px, calc(100vh - 40px)); background: white; border-radius: 7px; overflow: hidden; display: grid; grid-template-rows: 52px 1fr 60px; box-shadow: 0 14px 40px #0004; }
.subject-modal-head { display: flex; align-items: center; padding: 0 24px; border-bottom: 1px solid #dfe5e9; font-size: 18px; font-weight: 700; }
.subject-modal-close { margin-left: auto; font-size: 24px; font-weight: 300; cursor: pointer; color: #6c7479; }
.subject-modal-content { display: grid; grid-template-columns: 420px 1fr; min-height: 0; }
.subject-tree-panel { border-right: 1px solid #dfe5e9; padding: 18px 24px; min-height: 0; }
.subject-tabs { display: grid; grid-template-columns: repeat(5,1fr); border: 1px solid #ccd6dd; border-radius: 6px; overflow: hidden; }
.subject-tab { height: 36px; border-right: 1px solid #ccd6dd; display: grid; place-items: center; font-size: 14px; cursor: pointer; }
.subject-tab:last-child { border-right: 0; }
.subject-tab.active { background: #3297ee; color: white; }
.subject-tree-search { margin: 12px 0; display: flex; align-items: center; gap: 12px; }
.subject-tree { height: calc(100% - 100px); border: 1px solid #dce4e9; border-radius: 5px; overflow-y: auto; padding: 4px 0; position: relative; }
.subject-tree-row { display: flex; align-items: center; padding: 4px 8px 4px 0; font-size: 13px; cursor: pointer; white-space: nowrap; user-select: none; line-height: 1.6; }
.subject-tree-row[hidden] { display: none; }
.subject-tree-row:hover { background: #f0f7ff; }
.subject-tree-row.selected { background: #e6f4ff; }
.subject-tree-row.selected .tree-text { color: #238ef0; }
.tree-arrow { width: 22px; height: 22px; margin: -4px 0; flex: none; display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; }
.tree-arrow::before { content: ""; width: 0; height: 0; border-style: solid; transition: transform 0.1s; }
.tree-arrow.collapsed::before { border-width: 5px 0 5px 8px; border-color: transparent transparent transparent #2b95ef; }
.tree-arrow.expanded::before { border-width: 8px 5px 0 5px; border-color: #2b95ef transparent transparent transparent; }
.tree-arrow-space { width: 20px; flex: none; display: inline-block; flex-shrink: 0; }
.tree-text.bold { font-weight: 700; color: #022433; font-size: 14px; }
.tree-text { color: #31424e; overflow: hidden; text-overflow: ellipsis; }
.subject-tree-empty { padding: 30px 12px; text-align: center; color: #8b96a0; font-size: 12px; }
.tree-search-box { position: relative; flex: 1; min-width: 0; }
.tree-search-box input.field.search { width: 100%; height: 28px; font-size: 12px; padding-right: 26px; }
.tree-search-icon { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); color: #8b96a0; font-size: 13px; pointer-events: none; }
.subject-tree-search label { font-size: 12px; color: #4b6171; white-space: nowrap; display: flex; align-items: center; gap: 4px; }
.subject-form { padding: 20px 36px; overflow-y: auto; }
.subject-form-row { display: grid; grid-template-columns: 100px 1fr; align-items: center; margin-bottom: 18px; font-size: 14px; }
.subject-form-row.required label::before { content: "*"; color: #f33; margin-right: 4px; }
.subject-form-row .field { width: 100%; height: 34px; font-size: 13px; }
.subject-help { grid-column: 2; color: #8b96a0; margin-top: 5px; font-size: 12px; }
.subject-options { display: flex; align-items: center; gap: 20px; font-size: 14px; }
.subject-form-message { min-height: 20px; margin: -6px 0 0 100px; font-size: 12px; color: #d9363e; }
.subject-form-message.success { color: #16813a; }
.subject-form-message.loading { color: #557080; }
.switch { width: 52px; height: 28px; background: #b8bec3; border-radius: 14px; position: relative; cursor: pointer; }
.switch::before { content: ""; width: 24px; height: 24px; background: white; border-radius: 50%; position: absolute; left: 2px; top: 2px; transition: .15s; }
.switch.on { background: #3297ee; }
.switch.on::before { left: 26px; }
.subject-modal-foot { border-top: 1px solid #dfe5e9; display: flex; align-items: center; justify-content: flex-end; gap: 14px; padding: 0 32px; }
.subject-modal-foot .btn { height: 48px; padding: 0 28px; font-size: 17px; }
.invoice-tabs { height: 48px; display: flex; gap: 28px; align-items: end; padding: 0 22px; border-bottom: 1px solid #e0e7eb; }
.invoice-tab { height: 40px; display: flex; align-items: center; font-size: 16px; cursor: pointer; }
.invoice-tab.active { color: #288fe9; border-bottom: 2px solid #288fe9; }
.invoice-summary { min-height: 56px; padding: 10px 22px; display: flex; flex-direction: column; justify-content: center; gap: 5px; border-top: 1px solid #e2e8ed; color: #607582; }
.tax-cards { display: grid; grid-template-columns: repeat(4,minmax(180px,1fr)); gap: 15px; padding: 20px; }
.tax-card { border: 1px solid #dce6ed; border-radius: 6px; padding: 18px; min-height: 130px; }
.tax-card strong { display: block; font-size: 24px; margin-top: 16px; }
/* === 金蝶风格页面覆盖 (settings/salary/tax/misc) === */
.kd-page { border: 1px solid #e2e9ee; border-radius: 8px; background: #fff; overflow: hidden; }
.kd-page .report-head { height: 44px; padding: 0 16px; border-bottom: 1px solid #e8eaed; }
.kd-page .report-head h2 { font-size: 14px; font-weight: 600; color: #022433; margin: 0; }
.kd-page .report-filters { padding: 10px 16px; gap: 8px; border-bottom: 1px solid #e8eaed; }
.kd-page .report-toolbar { padding: 10px 16px; border-bottom: 1px solid #e8eaed; }
.kd-page .report-table th { background: #eaf0fa; color: #333; font-size: 14px; height: 36px; padding: 8px 12px; text-align: center; }
.kd-page .report-table td { height: 40px; font-size: 14px; padding: 8px 12px; color: #333; text-align: center; }
.kd-page .report-table tr:hover td { background: #f7fafe; }
.kd-page .pagination { padding: 0 16px; border-top: 1px solid #e8eaed; }
/* 设置页菜单(金蝶风格: hover #f5f9ff, 激活 #2f95ff 文字) */
.settings-tabs { display: flex; align-items: center; gap: 4px; height: 40px; padding: 0 12px; background: #fff; border-bottom: 1px solid #e8eaed; }
.settings-tab { display: inline-flex; align-items: center; height: 32px; padding: 0 12px; font-size: 14px; color: #022433; cursor: pointer; border-radius: 6px; }
.settings-tab:hover { background: #f5f9ff; color: #2f95ff; }
.settings-tab.active { color: #2f95ff; font-weight: 600; background: #f5f9ff; }
.inv-page { background: #fff; min-height: 100%; display: flex; flex-direction: column; border: 1px solid #e2e9ee; border-radius: 8px; overflow: hidden; }
.inv-page-head { height: 40px; padding: 0 12px; display: flex; align-items: center; }
.inv-tabs { display: inline-flex; align-items: center; height: 32px; border-bottom: 1px solid #2f95ff; }
.inv-radio { display: inline-flex; align-items: center; height: 32px; padding: 0 12px; cursor: pointer; font-size: 14px; color: #333; position: relative; }
.inv-radio input { display: none; }
.inv-radio span { color: #333; }
.inv-radio.active span { color: #2f95ff; font-weight: 500; }
.inv-radio.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: #2f95ff; }
.inv-filter-row { display: flex; align-items: center; gap: 8px; padding: 8px 12px; flex-wrap: wrap; min-height: 32px; }
.inv-filter-left { display: flex; align-items: center; gap: 8px; flex: 1; flex-wrap: wrap; }
.inv-select { height: 30px; padding: 0 10px; display: inline-flex; align-items: center; gap: 4px; font-size: 14px; color: #333; cursor: pointer; }
.inv-select:hover { color: #2f95ff; }
.inv-arrow { font-size: 10px; color: #999; font-style: normal; }
.inv-date-range { display: inline-flex; align-items: center; gap: 6px; }
.inv-date-input { height: 30px; border: 0; border-bottom: 1px solid #d9d9d9; padding: 0 4px; font-size: 14px; color: #333; background: transparent; outline: 0; width: 110px; }
.inv-date-input:focus { border-bottom-color: #2f95ff; }
.inv-tilde { color: #999; }
.inv-filter-btn { height: 30px; padding: 0 10px; border: 0; background: transparent; color: #333; font-size: 14px; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.inv-filter-btn:hover { color: #2f95ff; }
.inv-remark-group { display: inline-flex; align-items: center; margin-left: 12px; }
.inv-select-small { height: 30px; padding: 0 8px; display: inline-flex; align-items: center; gap: 4px; font-size: 14px; color: #333; cursor: pointer; }
.inv-input-borderless { height: 30px; border: 0; border-bottom: 1px solid #d9d9d9; padding: 0 18px 0 4px; font-size: 14px; color: #333; background: transparent; outline: 0; }
.inv-input-borderless:focus { border-bottom-color: #2f95ff; }
.inv-search-icon { position: relative; margin-left: -16px; color: #999; cursor: pointer; font-size: 12px; }
.inv-checkbox { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: #333; cursor: pointer; margin-left: 12px; }
.inv-checkbox input { cursor: pointer; }
.inv-refresh { height: 30px; padding: 0 10px; border: 0; background: transparent; color: #333; font-size: 14px; cursor: pointer; }
.inv-refresh:hover { color: #2f95ff; }
.inv-btns { display: flex; align-items: center; gap: 8px; padding: 0 12px 8px; flex-wrap: wrap; }
.inv-btn { height: 32px; padding: 4px 12px; border: 1px solid #c9c9c9; border-radius: 6px; background: transparent; color: #022433; font-size: 14px; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.inv-btn:hover { border-color: #2f95ff; color: #2f95ff; }
.inv-btn-primary { background: #2f95ff; border-color: #2f95ff; color: #fff; }
.inv-btn-primary:hover { background: #1a85f0; border-color: #1a85f0; color: #fff; }
.inv-btn-arrow { font-size: 10px; font-style: normal; }
.inv-table-wrap { flex: 1; overflow: auto; border-top: 1px solid #e8eaed; }
.inv-table { border-collapse: collapse; width: max-content; min-width: 100%; table-layout: fixed; }
.inv-table th { height: 36px; background: #eaf0fa; color: #333; font-size: 14px; font-weight: 400; text-align: center; padding: 8px 12px; border-right: 1px solid #f0f2f5; border-bottom: 1px solid #e8eaed; white-space: nowrap; position: sticky; top: 0; z-index: 1; }
.inv-table td { height: 40px; padding: 8px 12px; color: #333; font-size: 14px; border-right: 1px solid #f5f6f7; border-bottom: 1px solid #f0f2f5; text-align: center; }
.inv-table td.number { text-align: right; font-variant-numeric: tabular-nums; }
.inv-table tr:hover td { background: #f7fafe; }
.inv-table .empty { height: 280px; text-align: center; color: #999; }
.inv-table .empty-icon { width: 50px; height: 40px; margin: 0 auto 12px; border: 1px solid #e0e6eb; border-radius: 4px; position: relative; opacity: 0.5; }
.inv-table .empty-icon::after { content: ""; position: absolute; left: 8px; right: 8px; top: 10px; height: 2px; background: #e0e6eb; box-shadow: 0 8px 0 #e0e6eb, 0 16px 0 #e0e6eb; }
.inv-pagination { height: 40px; padding: 0 12px; display: flex; align-items: center; gap: 8px; border-top: 1px solid #e8eaed; color: #666; font-size: 14px; }
.inv-page-btn { min-width: 28px; height: 28px; padding: 0 8px; border: 1px solid #d9d9d9; background: #fff; border-radius: 4px; color: #333; cursor: pointer; font-size: 14px; }
.inv-page-btn.active { background: #2f95ff; border-color: #2f95ff; color: #fff; }
.inv-page-size { height: 28px; border: 1px solid #d9d9d9; border-radius: 4px; color: #333; font-size: 14px; padding: 0 8px; background: #fff; cursor: pointer; }
.inv-summary { padding: 8px 12px; border-top: 1px solid #e8eaed; display: flex; justify-content: space-between; color: #666; font-size: 14px; background: #fafbfc; }
@media (max-width: 1450px) { .cards { grid-template-columns: repeat(2, 1fr); } .right-rail { display: none; } .home-grid { grid-template-columns: 1fr; } }
@media print {
  body { min-width: 0; overflow: visible; background: white; }
  .sidebar, .topbar, .tabs, .report-filters, .report-toolbar, .report-head, .original-toolbar, .entry-toolbar, .pagination, .right-rail, .home-grid, .cards, .flyout { display: none !important; }
  .app, .shell { display: block; height: auto; }
  .content { overflow: visible; padding: 0; }
  .report-page, .voucher-paper, .entry-sheet { width: 100%; max-width: none; border: 0; box-shadow: none; border-radius: 0; }
  .report-table-wrap { overflow: visible; height: auto !important; }
  .statement-title { font-size: 20px; }
  .report-table { font-size: 12px; }
  .report-table th { background: #eaf0fa !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .report-table .total td { background: #eaf4ff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* ==================== Logo 设置页面 ==================== */
.logo-cfg-card {
  background: #fff;
  border: 1px solid #e8eef3;
  border-radius: 6px;
  padding: 22px;
}
.logo-preview-box {
  background: #f6f8fa;
  border: 1px dashed #c5d3e0;
  border-radius: 6px;
  height: 110px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px;
}
.logo-preview-box .logo-mark {
  width: 24px;
  height: 24px;
}

/* ==================== 账号下拉菜单 ==================== */
.account-trigger {
  cursor: pointer;
  user-select: none;
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 13px;
  color: #4b6171;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
  transition: background 0.15s;
}
.account-trigger:hover { background: #f0f6ff; color: #2f95ff; }
.account-trigger .acc-icon { color: #2f95ff; font-size: 14px; }
.account-trigger .acc-account { color: #8e9ca1; font-size: 12px; margin-left: 2px; }
.account-menu-name .acc-account-menu { color: #8e9ca1; font-size: 12px; font-weight: 400; margin-left: 4px; }

.account-menu {
  position: fixed;
  top: 56px;
  right: 20px;
  width: 240px;
  background: #fff;
  border: 1px solid #dce4e9;
  border-radius: 7px;
  box-shadow: 0 10px 28px rgba(32, 56, 74, 0.17);
  z-index: 70;
  overflow: hidden;
  animation: accMenuIn 0.15s ease-out;
}
@keyframes accMenuIn {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}
.account-menu::before {
  content: "";
  position: absolute;
  top: -8px;
  right: 32px;
  width: 16px;
  height: 16px;
  background: #fff;
  border-left: 1px solid #dce4e9;
  border-top: 1px solid #dce4e9;
  transform: rotate(45deg);
}
.account-menu-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  background: linear-gradient(180deg, #f4f8ff 0%, #edf4ff 100%);
  border-bottom: 1px solid #e4eaf2;
}
.account-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: linear-gradient(135deg, #2f95ff, #18b4f1);
  color: #fff;
  font-size: 16px;
  font-weight: 600;
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.account-menu-name {
  font-size: 14px;
  font-weight: 600;
  color: #022433;
  line-height: 1.4;
}
.account-menu-role {
  font-size: 12px;
  color: #8e9ca1;
  margin-top: 2px;
}
.account-menu-divider {
  height: 1px;
  background: #f0f2f5;
  margin: 4px 0;
}
.account-menu-item {
  padding: 9px 16px;
  font-size: 13px;
  color: #4b6171;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  transition: background 0.15s, color 0.15s;
}
.account-menu-item:hover {
  background: #edf6ff;
  color: #2f95ff;
}
.account-menu-item#menu-logout { color: #f5222d; }
.account-menu-item#menu-logout:hover { background: #fff1f0; }

/* ==================== 通用 Modal ==================== */
.modal-mask {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.35);
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: maskIn 0.15s ease-out;
}
@keyframes maskIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
.modal-box {
  width: 380px;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);
  overflow: hidden;
  animation: boxIn 0.18s ease-out;
}
@keyframes boxIn {
  from { opacity: 0; transform: translateY(-10px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.modal-head {
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px;
  border-bottom: 1px solid #f0f2f5;
  font-size: 15px;
  font-weight: 600;
  color: #022433;
}
.modal-close {
  cursor: pointer;
  color: #8e9ca1;
  font-size: 20px;
  font-weight: 300;
  line-height: 1;
  padding: 2px 6px;
  border-radius: 4px;
  transition: all 0.15s;
}
.modal-close:hover { background: #f0f2f5; color: #4b6171; }
.modal-body { padding: 18px 20px; }
.modal-foot {
  padding: 12px 16px;
  border-top: 1px solid #f0f2f5;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  background: #fafbfc;
}
.modal-foot .btn {
  height: 30px;
  padding: 0 14px;
  border-radius: 4px;
  font-size: 13px;
  border: 1px solid #d9d9d9;
  background: #fff;
  color: #4b6171;
  cursor: pointer;
  transition: all 0.15s;
}
.modal-foot .btn:hover { border-color: #2f95ff; color: #2f95ff; }
.modal-foot .btn-primary {
  background: #2f95ff;
  border-color: #2f95ff;
  color: #fff;
}
.modal-foot .btn-primary:hover { background: #1b7fe8; border-color: #1b7fe8; color: #fff; }
.modal-foot .btn[disabled] { opacity: 0.6; cursor: not-allowed; }

/* 账号信息 */
.acc-info-row {
  display: flex;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid #f5f7fa;
}
.acc-info-row:last-child { border-bottom: 0; }
.acc-info-label {
  width: 80px;
  color: #8e9ca1;
  font-size: 13px;
}
.acc-info-value {
  flex: 1;
  color: #022433;
  font-size: 13px;
  font-weight: 500;
}

/* 修改密码 */
.pwd-field {
  margin-bottom: 14px;
}
.pwd-field:last-child { margin-bottom: 0; }
.pwd-field label {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  color: #4b6171;
}
.pwd-field input {
  width: 100%;
  height: 34px;
  border: 1px solid #d9d9d9;
  border-radius: 4px;
  padding: 0 10px;
  font-size: 13px;
  color: #022433;
  transition: border-color 0.15s, box-shadow 0.15s;
  outline: none;
}
.pwd-field input:focus {
  border-color: #2f95ff;
  box-shadow: 0 0 0 2px rgba(47, 149, 255, 0.12);
}
.pwd-error {
  color: #f5222d;
  font-size: 12px;
  margin-top: 8px;
  min-height: 18px;
}
/* 密码输入框容器 + 眼睛图标 */
.pwd-wrap {
  position: relative;
  width: 100%;
}
.pwd-wrap .login-input,
.pwd-wrap .field {
  padding-right: 36px;
}
.pwd-eye {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #8e9ca1;
  cursor: pointer;
  user-select: none;
  line-height: 1;
  z-index: 2;
  border-radius: 4px;
  transition: color 0.15s, background 0.15s;
}
.pwd-eye svg { display: block; pointer-events: none; }
.pwd-eye:hover { color: #4b6171; background: #f1f5f8; }
.pwd-eye:focus-visible { outline: 2px solid #2f95ff; outline-offset: 1px; }
/* 表单字段（找回密码/设置安全问题） */
.pwd-field {
  margin-bottom: 16px;
}
.pwd-field > label {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  color: #4b6171;
}
/* 验证码行 */
.captcha-row {
  display: flex;
  gap: 8px;
  align-items: center;
}
.captcha-input {
  flex: 1;
  min-width: 0;
}
.captcha-img {
  width: 120px;
  height: 40px;
  border-radius: 4px;
  cursor: pointer;
  flex-shrink: 0;
  border: 1px solid #d8e0e6;
  background: #f0f5ff;
}
/* ==================== SaaS 管理后台样式 ==================== */
.saas-tab {
  display: inline-block;
  padding: 12px 20px;
  font-size: 14px;
  color: #8e9ca1;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all .2s;
  user-select: none;
}
.saas-tab:hover {
  color: #2e9ef3;
}
.saas-tab.active {
  color: #2e9ef3;
  border-bottom-color: #2e9ef3;
  font-weight: 500;
}
.tenant-select-item:hover {
  border-color: #2e9ef3 !important;
  background: #f0f7ff;
}
.tenant-select-item:hover span {
  transform: translateX(4px);
  transition: transform .2s;
}

.login-portal-switch { margin-top: 14px; text-align: center; font-size: 12px; }
.login-portal-link { color: #647986; text-decoration: none; }
.login-portal-link:hover { color: #2e9ef3; }
.invite-result { padding: 28px 0 6px; text-align: center; }
.invite-result h2 { margin: 12px 0 8px; font-size: 20px; color: #263944; }
.invite-result p { margin: 0 0 24px; color: #647986; line-height: 1.7; }
.invite-result-mark { width: 52px; height: 52px; border-radius: 50%; margin: 0 auto; display: grid; place-items: center; background: #e8f7ee; color: #27864b; font-size: 28px; }
.invite-login-btn { display: flex; align-items: center; justify-content: center; text-decoration: none; }
.invite-meta { display: grid; grid-template-columns: 64px 1fr; gap: 8px 12px; margin: 0 0 22px; padding: 12px 14px; background: #f6f8fa; border: 1px solid #e5e9ed; border-radius: 6px; font-size: 13px; }
.invite-meta span { color: #7b8c98; }
.invite-meta b { color: #263944; font-weight: 600; }

.tenant-manage-modal { width: min(920px, 90vw); max-height: 88vh; display: flex; flex-direction: column; }
.tenant-loading { min-height: 240px; display: grid; place-items: center; color: #7b8c98; }
.tenant-summary { display: grid; grid-template-columns: repeat(4, 1fr); background: #f6f8fa; border-bottom: 1px solid #e5e9ed; }
.tenant-summary > div { padding: 14px 18px; border-right: 1px solid #e5e9ed; }
.tenant-summary > div:last-child { border-right: 0; }
.tenant-summary span { display: block; color: #7b8c98; font-size: 12px; margin-bottom: 5px; }
.tenant-summary b { display: block; color: #263944; font-size: 15px; }
.tenant-manage-body { padding: 18px 20px 22px; overflow: auto; }
.tenant-manage-body h4 { margin: 20px 0 8px; font-size: 13px; color: #263944; }
.tenant-invite-bar { display: grid; grid-template-columns: minmax(220px, 1fr) 120px 108px minmax(120px, auto); gap: 8px; align-items: center; }
.tenant-invite-bar .field { width: 100%; }
.tenant-invite-bar #tenant-manage-error { color: #d9363e; font-size: 12px; }
.tenant-table-wrap { border: 1px solid #e5e9ed; border-radius: 6px; overflow: auto; }
.tenant-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.tenant-table th { padding: 9px 12px; text-align: left; color: #647986; background: #f6f8fa; border-bottom: 1px solid #e5e9ed; font-weight: 600; }
.tenant-table td { padding: 10px 12px; border-bottom: 1px solid #edf0f2; vertical-align: middle; }
.tenant-table tr:last-child td { border-bottom: 0; }
.tenant-table td:first-child b, .tenant-table td:first-child small { display: block; }
.tenant-table td:first-child small { color: #8b969d; margin-top: 3px; }
.tenant-role-select { width: 110px; }
.link-btn.danger { color: #d9363e; }
.invite-link-cell { display: flex; gap: 6px; min-width: 320px; }
.invite-link-cell .field { flex: 1; min-width: 220px; font-size: 12px; color: #647986; }
.tenant-switch-modal { width: 520px; }
.tenant-switch-list { padding: 12px; max-height: 460px; overflow: auto; }
.tenant-switch-row { width: 100%; min-height: 64px; border: 1px solid #e1e6ea; background: #fff; padding: 10px 14px; display: flex; align-items: center; justify-content: space-between; text-align: left; margin-bottom: 8px; border-radius: 6px; color: #2f95ff; }
.tenant-switch-row:last-child { margin-bottom: 0; }
.tenant-switch-row:hover:not(:disabled) { border-color: #2f95ff; background: #f3f8fe; }
.tenant-switch-row:disabled { cursor: default; color: #8b969d; }
.tenant-switch-row.current { background: #f6f8fa; }
.tenant-switch-row b, .tenant-switch-row small { display: block; }
.tenant-switch-row b { color: #263944; font-size: 14px; margin-bottom: 4px; }
.tenant-switch-row small { color: #7b8c98; }

.saas-admin-shell { min-width: 1000px; min-height: 100vh; background: #f4f6f8; color: #263944; overflow: auto; }
.saas-admin-header { height: 58px; display: flex; align-items: center; gap: 18px; padding: 0 28px; background: #162a3a; color: #fff; }
.saas-admin-header > div { flex: 1; font-size: 17px; font-weight: 600; }
.saas-admin-header a { color: #b9d6ea; text-decoration: none; font-size: 13px; }
.saas-admin-header button { border: 0; background: transparent; color: #fff; cursor: pointer; font-size: 13px; }
.saas-admin-tabs { height: 48px; padding: 0 28px; display: flex; align-items: end; gap: 4px; background: #fff; border-bottom: 1px solid #dde3e7; }
.saas-admin-main { padding: 20px 28px 36px; }
.saas-toolbar { min-height: 42px; display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.saas-toolbar .field { height: 32px; min-width: 160px; }
.saas-toolbar input.field { width: 300px; }
.saas-toolbar > span { margin-left: auto; color: #7b8c98; font-size: 13px; }
.saas-table-wrap { background: #fff; border: 1px solid #dde3e7; border-radius: 6px; overflow: auto; }
.saas-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.saas-table th { background: #f6f8fa; color: #607582; font-weight: 600; text-align: left; padding: 10px 12px; border-bottom: 1px solid #dde3e7; white-space: nowrap; }
.saas-table td { padding: 11px 12px; border-bottom: 1px solid #edf0f2; vertical-align: middle; }
.saas-table tr:last-child td { border-bottom: 0; }
.saas-table td b, .saas-table td small { display: block; }
.saas-table td small { color: #8b969d; margin-top: 3px; }
.saas-table .field { height: 30px; min-width: 112px; }
.saas-actions { display: flex; gap: 6px; align-items: center; white-space: nowrap; }
.saas-actions .btn { height: 28px; padding: 0 10px; font-size: 12px; }
.btn.danger { color: #c83b43; border-color: #e6b9bc; background: #fff; }
.btn.danger:hover { color: #a61d24; border-color: #c83b43; }
.saas-status { display: inline-flex; align-items: center; height: 24px; padding: 0 8px; border-radius: 4px; font-size: 12px; white-space: nowrap; }
.saas-status.pending { color: #9a5b13; background: #fff4dc; }
.saas-status.active { color: #287448; background: #e8f6ee; }
.saas-status.suspended { color: #a83239; background: #fdecee; }
.saas-status.terminated { color: #687783; background: #edf0f2; }
.tenant-admin-table { min-width: 1040px; }
.plan-grid { display: grid; grid-template-columns: repeat(3, minmax(280px, 1fr)); gap: 14px; }
.plan-editor { position: relative; background: #fff; border: 1px solid #dde3e7; border-radius: 6px; padding: 18px; }
.plan-code { position: absolute; top: 18px; right: 18px; color: #7b8c98; font-size: 12px; font-family: ui-monospace, monospace; }
.plan-editor > label { display: block; color: #607582; font-size: 12px; margin-bottom: 14px; }
.plan-editor > label .field, .plan-editor textarea { display: block; width: 100%; margin-top: 6px; }
.plan-editor textarea { min-height: 72px; resize: vertical; border: 1px solid #d9d9d9; border-radius: 6px; padding: 8px 10px; font: inherit; color: #263944; }
.plan-editor-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.plan-editor-row label { color: #607582; font-size: 12px; }
.plan-editor-row .field { width: 100%; margin-top: 6px; }
.plan-active { color: #263944 !important; }

.template-dropdown { background: #fff; border: 1px solid #d8e1e7; border-radius: 6px; box-shadow: 0 6px 20px #20384930; overflow: hidden; }
.template-option { padding: 10px 20px; font-size: 14px; cursor: pointer; color: #263944; }
.template-option:hover { background: #eaf5fd; color: #238ef0; }

.template-modal { width: 480px; background: #fff; border-radius: 8px; box-shadow: 0 10px 40px rgba(0,0,0,0.18); overflow: hidden; }
.template-modal .modal-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid #e1e6ea; font-size: 16px; font-weight: 700; color: #143044; }
.template-modal .modal-close { font-size: 22px; color: #94a3ad; cursor: pointer; line-height: 1; font-weight: 300; }
.template-modal .modal-close:hover { color: #263944; }
.template-modal .modal-body { padding: 20px; }
.template-modal .modal-foot { padding: 12px 20px; border-top: 1px solid #e1e6ea; display: flex; justify-content: flex-end; gap: 10px; }
.template-modal .form-row { display: flex; align-items: center; gap: 10px; }
.template-modal .form-row label { font-size: 14px; color: #506677; white-space: nowrap; }
.template-modal .form-row .field { flex: 1; height: 36px; border: 1px solid #d9d9d9; border-radius: 4px; padding: 0 10px; font-size: 14px; outline: none; }
.template-modal .form-row .field:focus { border-color: #2f95ff; }
.select-template-modal { width: 520px; }
.template-list-body { max-height: 400px; overflow-y: auto; padding: 8px 0; }
.template-empty { text-align: center; padding: 40px 0; color: #8a9ba8; font-size: 14px; }
.template-item { display: flex; align-items: center; padding: 12px 20px; border-bottom: 1px solid #f0f3f5; }
.template-item:last-child { border-bottom: none; }
.template-item:hover { background: #f7fafc; }
.template-item-name { font-size: 14px; font-weight: 600; color: #143044; flex: 1; }
.template-item-info { font-size: 12px; color: #8a9ba8; margin: 0 16px; white-space: nowrap; }
.template-item-actions { display: flex; gap: 8px; }
.template-item-actions .btn.small { height: 28px; padding: 0 14px; font-size: 12px; }
.template-item-actions .btn.small.danger { color: #d0464b; border-color: #f0c8c9; }
.template-item-actions .btn.small.danger:hover { background: #fef0f0; border-color: #d0464b; color: #d0464b; }

.pref-modal { width: 640px; background: #fff; border-radius: 8px; box-shadow: 0 10px 40px rgba(0,0,0,0.18); overflow: hidden; }
.pref-modal .modal-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 24px; border-bottom: 1px solid #e1e6ea; font-size: 17px; font-weight: 700; color: #143044; }
.pref-modal .modal-close { font-size: 22px; color: #94a3ad; cursor: pointer; line-height: 1; font-weight: 300; }
.pref-modal .modal-close:hover { color: #263944; }
.pref-modal-body { padding: 20px 24px; max-height: 65vh; overflow-y: auto; }
.pref-modal .modal-foot { padding: 14px 24px; border-top: 1px solid #e1e6ea; display: flex; justify-content: flex-end; gap: 10px; }
.pref-section-title { font-size: 14px; font-weight: 700; color: #263944; margin: 18px 0 12px; }
.pref-section-title:first-child { margin-top: 0; }
.pref-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 24px; }
.pref-check { display: flex; align-items: center; gap: 8px; font-size: 14px; color: #263944; cursor: pointer; }
.pref-check input[type="checkbox"] { width: 16px; height: 16px; accent-color: #2f95ff; cursor: pointer; }
.pref-rule-row { display: flex; align-items: center; gap: 16px; margin-bottom: 12px; font-size: 14px; }
.pref-rule-label { color: #263944; white-space: nowrap; }
.pref-radio { display: flex; align-items: center; gap: 6px; cursor: pointer; color: #263944; }
.pref-radio input[type="radio"] { width: 15px; height: 15px; accent-color: #2f95ff; cursor: pointer; }
.pref-radio input[type="radio"]:disabled { cursor: not-allowed; }
.pref-radio:has(input:disabled) { color: #a8b6c0; cursor: not-allowed; }
.pref-divider { height: 1px; background: #e1e6ea; margin: 18px 0; }
.pref-suggest-row { margin-top: 10px; margin-left: 24px; margin-bottom: 0; }

@media (max-width: 700px) {
  .login-page { min-height: 100dvh; padding: 16px; overflow: auto; }
  .login-box { width: min(100%, 420px); padding: 28px 22px; }
  .login-subtitle { margin-bottom: 24px; }
  .invite-meta { grid-template-columns: 56px 1fr; }
}

/* ==================== 设置-科目设置页 ==================== */
.subj-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; padding: 10px 12px; background: #fff; border-bottom: 1px solid #e8eaed; }
.subj-tool-group { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.subj-tool-right { margin-left: auto; }
.subj-search-box { display: flex; align-items: center; gap: 6px; width: 200px; height: 32px; padding: 0 10px; border: 1px solid #d8e0e6; border-radius: 4px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.subj-search-box:focus-within { border-color: #2e9ef3; box-shadow: 0 0 0 3px rgba(46,158,243,.12); }
.subj-search-icon { color: #94a3ad; font-weight: 700; font-size: 13px; font-family: serif; }
.subj-search-box input { border: none; outline: none; flex: 1; min-width: 0; font-size: 13px; color: #243746; background: transparent; }
.subj-check-link { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #4b6171; cursor: pointer; white-space: nowrap; }
.subj-check-link input { width: 14px; height: 14px; accent-color: #2f95ff; cursor: pointer; }
.subj-table-wrap { background: #fff; }
.subj-table th, .subj-table td { font-size: 13px; }
.subj-table .s-check { width: 36px; text-align: center; }
.subj-table .s-check input { width: 14px; height: 14px; accent-color: #2f95ff; cursor: pointer; vertical-align: middle; }
.subj-table .s-ops { width: 150px; white-space: nowrap; }
.subj-table .s-ops .link-btn { margin-right: 8px; }
.subj-table .s-code { display: flex; align-items: center; }
.subj-table .s-center { text-align: center; }
.subj-table .row-disabled td { color: #a8b6c0; text-decoration: line-through; background: #fafbfc; }
.subj-table .row-disabled td.s-ops, .subj-table .row-disabled td.s-check { text-decoration: none; }
.s-tag { display: inline-block; padding: 1px 8px; border-radius: 3px; font-size: 12px; }
.s-tag.on { color: #237a3a; background: #eaf7ee; }
.s-tag.off { color: #a08666; background: #f7f1e8; }
.subj-pager { display: flex; align-items: center; gap: 4px; padding: 10px 14px; font-size: 13px; color: #6f8291; background: #fff; border-top: 1px solid #eef1f5; }
.subj-pager b { color: #2f95ff; font-weight: 600; }
.subj-batch-menu { position: fixed; background: #fff; border: 1px solid #d8e1e7; border-radius: 6px; box-shadow: 0 6px 20px #20384930; overflow: hidden; z-index: 9997; min-width: 140px; }
.subj-batch-item { padding: 10px 18px; font-size: 13px; color: #263944; cursor: pointer; white-space: nowrap; }
.subj-batch-item:hover { background: #eaf5fd; color: #238ef0; }
.ss-modal { width: 560px; background: #fff; border-radius: 8px; box-shadow: 0 10px 40px rgba(0,0,0,.18); overflow: hidden; }
.ss-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 15px 22px; border-bottom: 1px solid #e1e6ea; font-size: 16px; font-weight: 700; color: #143044; }
.ss-modal-head .modal-close { font-size: 22px; color: #94a3ad; cursor: pointer; line-height: 1; font-weight: 300; }
.ss-modal-head .modal-close:hover { color: #5b6b76; }
.ss-modal-body { padding: 20px 24px; max-height: 62vh; overflow-y: auto; }
.ss-field { display: flex; align-items: flex-start; margin-bottom: 14px; }
.ss-field > label { width: 92px; flex: none; text-align: right; padding-right: 12px; font-size: 13px; color: #4b6171; line-height: 34px; }
.ss-input-wrap { flex: 1; min-width: 0; }
.ss-input-wrap .field { width: 100%; height: 34px; }
.ss-hint { margin-top: 5px; font-size: 12px; color: #94a3ad; }
.ss-warn { margin-top: 5px; font-size: 12px; color: #d48806; background: #fffbe6; border: 1px solid #ffe58f; border-radius: 4px; padding: 5px 10px; line-height: 1.6; }
.ss-inline { display: flex; align-items: center; gap: 20px; height: 34px; }
.ss-radio { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: #263944; cursor: pointer; }
.ss-radio input { width: 15px; height: 15px; accent-color: #2f95ff; cursor: pointer; }
.ss-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #263944; cursor: pointer; }
.ss-check input { width: 15px; height: 15px; accent-color: #2f95ff; cursor: pointer; }
.ss-message { min-height: 20px; font-size: 13px; color: #e53e3e; margin: 4px 0 0 104px; }
.ss-message.success { color: #237a3a; }
.ss-message.loading { color: #2f95ff; }
.ss-modal-foot { display: flex; align-items: center; justify-content: flex-end; gap: 10px; padding: 12px 22px; border-top: 1px solid #e1e6ea; }
.muted-line { height: 34px; line-height: 34px; font-size: 13px; color: #6f8291; background: #f7f9fc; border-radius: 4px; padding: 0 12px; }

.voucher-editor-fields{border:0;margin:0;padding:0;min-width:0}.voucher-editor-fields[disabled] input,.voucher-editor-fields[disabled] textarea{color:#536573;background:#f6f8fa}.voucher-editor-notice{padding:12px 18px;background:#fff7e6;color:#8a5b13;border-bottom:1px solid #ffe1a6}.entry-toolbar .btn:disabled,.bottom-actions .btn:disabled{opacity:.55;cursor:not-allowed}

.entry-extra-fields{padding:6px 4px;display:flex;flex-wrap:wrap;gap:6px;font-size:12px;color:#647988}.entry-extra-fields label{display:flex;align-items:center;gap:4px}.entry-extra-fields input{width:76px!important;height:26px!important;border:1px solid #d8e2e8!important;padding:3px!important}.entry-extra-fields select{max-width:230px;height:26px;border:1px solid #d8e2e8}.entry-table .subject-cell:has(.entry-extra-fields){height:100px}

.money-display.negative{color:#d33}

.money-display .red-money{color:#d33}.money-display .money-overflow{grid-column:1 / -1;text-align:right;width:auto;font-size:14px}

/* 工资模块 */
.salary-error{color:#b42318;background:#fff2f0;padding:12px 18px;margin:8px 20px;border:1px solid #ffccc7}
.salary-grid{max-height:65vh;overflow:auto}.salary-grid table{min-width:5900px}.salary-grid th{white-space:nowrap;min-width:145px;position:sticky;top:0;z-index:1}.salary-grid .field{width:100%;min-width:120px}.salary-grid td{height:48px}.salary-grid tfoot td{position:sticky;bottom:0;background:#fff2d5;font-weight:600}.salary-amount{text-align:right}.salary-grid .salary-fixed{position:sticky;left:0;background:white;z-index:1}.salary-staff-layout{display:flex;gap:18px;padding:0 20px}.salary-depts{width:205px;flex-shrink:0;border:1px solid #dce5ec;padding:18px;min-height:360px}.salary-depts .selected{background:#e6f4ff}.salary-ytd{padding:18px 22px;background:#fafcff}.salary-modal{width:680px;max-width:94vw}.salary-modal-body{display:grid;gap:16px;max-height:74vh;overflow:auto}.salary-modal-body>label{display:flex;gap:15px;align-items:center}.salary-modal-body>label>.field{flex:1}.salary-template-modal{width:1380px}.salary-template-modal table{min-width:1600px}.salary-template-modal td .field{width:180px}.salary-modal .salary-error{margin:0}.salary-grid input:disabled{color:#596879;background:#f5f7f9}
@media print{body:has(.salary-detail) .sidebar,body:has(.salary-detail) .topbar,body:has(.salary-detail) .tabs,body:has(.salary-detail) button,body:has(.salary-detail) .report-filters{display:none!important}body:has(.salary-detail) .salary-grid{max-height:none;overflow:visible}body:has(.salary-detail) .shell{margin:0}body:has(.salary-detail) .salary-grid table{min-width:0;font-size:8px}body:has(.salary-detail) .salary-grid th{min-width:0;white-space:normal;position:static}body:has(.salary-detail) .salary-grid .field{min-width:0;border:0;font-size:8px;padding:0}body:has(.salary-detail) .salary-grid td{padding:2px}@page{size:A3 landscape;margin:8mm}}

.reim-modal{width:900px;max-width:96vw}.reim-detail-modal{width:1400px}.reim-modal-body{max-height:72vh;overflow:auto}.reim-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px 24px}.reim-form-grid label{display:flex;flex-direction:column;gap:7px}.reim-form-grid .field{width:100%}.reim-lines{margin:18px 0}.reim-lines table{min-width:1300px}.reim-lines .field{width:130px}.reim-lines td{padding:7px}.reim-lines .reim-aux{min-width:180px;height:65px}.reim-attachments{display:flex;flex-wrap:wrap;gap:14px;align-items:center;padding:18px 0}.reim-attachments small{width:100%;color:#6f8291}.reim-flow{padding:16px 0;line-height:2}.reim-flow .current{color:#138bf4;font-weight:600}.reim-workflow-body{padding:24px}.reim-rule{padding:20px;margin:20px 0;border:1px solid #dce5ec;border-radius:6px}.reim-rule-head{display:flex;gap:18px;margin-bottom:16px}.reim-step{display:flex;gap:15px;align-items:center;margin:16px 0}.reim-step select{min-width:230px;height:85px}.reim-step input{width:180px}.reim-modal .create-modal-foot{flex-wrap:wrap;gap:8px}.reim-workflow .salary-error{margin:16px}.reim-modal input:disabled,.reim-modal select:disabled{background:#f5f7f9;color:#596879}

.reim-fields{border:0;padding:0;margin:0;min-width:0}.reim-modal .reim-form-grid label{display:flex;margin:0;align-items:stretch;text-align:left}.reim-modal .reim-form-grid{gap:14px 24px}.reim-modal .reim-form-grid .field{min-width:0}.reim-page .report-head{height:auto;min-height:46px;flex-wrap:wrap;gap:8px}.reim-page .report-filters{flex-wrap:wrap}

.shell{grid-template-columns:minmax(0,1fr)}.reim-modal button:disabled{opacity:.45;cursor:default}.reim-notice{padding:0 16px;line-height:1.8}

.reim-print{text-align:left;color:#222}.reim-print h2{text-align:center}.reim-print .report-table td{white-space:normal}.reim-print p{line-height:1.8}
@media print{body:has(.reim-print) .sidebar,body:has(.reim-print) .shell,body:has(.reim-print) .create-modal-head,body:has(.reim-print) .create-modal-foot{display:none!important}body:has(.reim-print) .app{display:block;min-width:0;height:auto;overflow:visible}body:has(.reim-print) .modal-mask{position:static;display:block;background:none;padding:0}body:has(.reim-print) .reim-modal{width:100%;max-width:none;box-shadow:none;border:0}body:has(.reim-print) .reim-modal-body{max-height:none;overflow:visible;padding:0}body:has(.reim-print) .reim-fields{display:block}body:has(.reim-print) .report-table tr{break-inside:avoid}body:has(.reim-print) .report-table th,body:has(.reim-print) .report-table td{font-size:10px;padding:6px}}
.voucher-resource-modal{width:min(1100px,96vw);max-height:90vh;display:flex;flex-direction:column}.voucher-resource-body{overflow:auto;min-height:0}.voucher-resource-body label{display:block;margin:12px 0}.voucher-file-preview{border:0;width:100%;height:60vh}.voucher-file-image{display:block;max-width:100%;max-height:65vh;margin:auto}.voucher-print-paper{background:white;color:#111;padding:18px;margin:0 auto 24px;break-after:page}.voucher-print-paper:last-child{break-after:auto}.voucher-print-paper h2{text-align:center}.voucher-print-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:16px}.voucher-print-paper table{width:100%;min-width:0!important;table-layout:auto;border-collapse:collapse}.voucher-print-paper th,.voucher-print-paper td{border:1px solid #999;padding:8px;white-space:normal;overflow-wrap:anywhere}.voucher-print-paper thead{display:table-header-group}.voucher-print-paper tr{break-inside:avoid}.voucher-print-paper .number{text-align:right}.voucher-resource-mask button:disabled{opacity:.5}
@media print{body:has(.voucher-resource-print-modal) .sidebar,body:has(.voucher-resource-print-modal) .shell,body:has(.voucher-resource-print-modal) .create-modal-head,body:has(.voucher-resource-print-modal) .create-modal-foot{display:none!important}body:has(.voucher-resource-print-modal) .modal-mask{position:static!important;background:white!important;display:block!important;padding:0!important}body:has(.voucher-resource-print-modal) .voucher-resource-print-modal{box-shadow:none!important;border:0!important;width:100%!important;max-height:none!important;display:block!important}body:has(.voucher-resource-print-modal) .voucher-resource-body{max-height:none!important;overflow:visible!important;padding:0!important}.voucher-print-paper{margin:0;padding:8mm 0}.voucher-print-paper table{font-size:10pt}body:has(.voucher-resource-print-modal) .salary-error{display:none!important}}

.cashier-form{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px}.cashier-form label{display:flex;flex-direction:column;gap:8px}.cashier-form .field{width:100%;box-sizing:border-box}.cashier-page p{padding:8px 12px;line-height:1.7}.cashier-page h3{padding:12px 8px}.cashier-page .report-table-wrap{max-height:none}.cashier-page details{padding:12px}.cashier-page .report-table td{white-space:nowrap}
body:has(.cashier-page) .shell{min-height:0;grid-template-rows:56px 42px minmax(0,1fr)}

/* 凭证模板独立编辑窗口。 */
.voucher-resource-modal:has(.template-editor){width:min(1380px,96vw)}
.template-search{display:flex;gap:10px;padding:12px 0}.template-search .field{width:min(480px,70vw)}
.template-editor fieldset{border:0;padding:0;margin:0;min-width:0}.template-editor-meta{display:flex;gap:24px;flex-wrap:wrap}.template-editor-meta label{display:flex;align-items:center;gap:12px}.template-editor-meta #template-edit-name{width:320px}.template-editor-meta #template-edit-word{width:100px}
.template-editor-grid{overflow:auto;max-height:48vh}.template-editor-grid table{min-width:1170px;table-layout:fixed}.template-editor-grid th:first-child{width:42px}.template-editor-grid th:nth-child(2){width:190px}.template-editor-grid th:nth-child(3){width:280px}.template-editor-grid th:last-child{width:140px}.template-editor-grid td{padding:8px;vertical-align:top}.template-editor-grid .field{width:100%;box-sizing:border-box;min-width:0}.template-editor-grid input[type=number]{text-align:right}.template-editor-grid thead th{position:sticky;top:0;background:#f5f7fa;z-index:1}.template-aux label{font-size:12px;color:#617080;margin:8px 0}.template-editor-total{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;margin-top:16px}.template-editor input:disabled,.template-editor select:disabled{background:#f5f7fa;color:#617080}

.template-list-controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:12px 0}.template-list-controls select{width:155px}.template-list-controls>input{width:290px}.template-list-controls label{display:flex;align-items:center;gap:7px;white-space:nowrap}.template-list-table{overflow:auto;max-height:55vh}.template-list-table table{min-width:660px}.template-list-table th{position:sticky;top:0;background:#f5f7fa;z-index:1}.template-list-table td{vertical-align:middle}.template-list-table td.number{text-align:right;white-space:nowrap}.template-list-pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 0;flex-wrap:wrap}.template-list-pagination select{width:112px}.template-common-tag{display:inline-block;margin-left:8px;padding:2px 5px;background:#edf5ff;color:#2687e7;border-radius:3px;font-size:11px}.template-chooser-modal{width:min(1300px,96vw);max-height:90vh;display:flex;flex-direction:column}.template-chooser-modal .modal-body{overflow:auto;min-height:0}.template-chooser-modal .template-list-table{max-height:52vh}.template-chooser-modal input[type=radio]{width:16px;height:16px}.template-chooser-modal button:disabled{opacity:.45}.template-editor-meta #template-edit-category{width:180px}
.advanced-page-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.advanced-modal{width:min(1180px,96vw);max-height:94vh;display:flex;flex-direction:column}.advanced-modal .create-modal-body{overflow:auto;max-height:72vh}.advanced-fields{border:0;padding:0;min-width:0}.advanced-fields>label{display:inline-flex;flex-direction:column;gap:5px;margin:8px 12px 12px 0}.advanced-modal .report-table .field{min-width:105px;width:100%}.advanced-modal .report-table td{vertical-align:top}.advanced-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:12px}.advanced-grid label{display:flex;flex-direction:column;gap:6px}.advanced-error{color:#b42318;background:#fff3f0;padding:10px}.financial-print-controls{display:flex;gap:10px;flex-wrap:wrap;background:#f6f8fa;padding:12px;margin-bottom:14px}.financial-print-controls label{display:flex;align-items:center;gap:5px}.financial-print-controls input[type=number]{width:60px}.financial-print-page{background:white;margin:10px 0 20px;border:1px solid #ddd;padding:20px;min-height:220px;overflow:auto}.financial-print-page-number{text-align:right;color:#555;margin-top:10px}.finance-trend{margin:20px 0;padding:20px;background:white;border:1px solid #edf0f3}.finance-trend svg{width:100%;max-height:300px}.advanced-fields details label{display:inline-flex;gap:5px;margin:8px}
@media print{.financial-print-controls{display:none}.financial-print-page{break-after:page;border:0;margin:0;padding:0}.financial-print-page:last-child{break-after:auto}}

.financial-print-page table{font-size:inherit}.financial-print-page th,.financial-print-page td{padding:4px}.financial-print-page td.financial-print-number{white-space:nowrap;overflow-wrap:normal;word-break:normal;text-align:right;font-variant-numeric:tabular-nums}

.currency-initial-modal{width:min(1250px,96vw)}.currency-initial-modal .create-modal-body{max-height:72vh;overflow:auto}.currency-initial-grid{overflow:auto}.currency-initial-grid table{min-width:1850px}.currency-initial-grid input{min-width:105px;max-width:140px}.currency-initial-grid select{min-width:140px}

.finance-trend-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.finance-trend-head h3{flex:1}.finance-comparison{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.finance-comparison article{padding:12px;border:1px solid #edf0f3;border-radius:6px}.finance-comparison strong{font-size:22px}.finance-comparison p{font-size:13px;color:#617080}

.shell{min-height:0}

/* Keep both the book pages and the long navigation within the visible window. */
.app{grid-template-rows:minmax(0,1fr)}
.sidebar{min-height:0}
.sidebar .nav{min-height:0;overflow:auto}
.sidebar .logo,.sidebar .sidebar-foot{flex-shrink:0}
/* 录凭证：科目检索/摘要联想键盘高亮 */
.subject-option.active { background: #eaf5fd; }
.subject-option.active .subject-text { color: #238ef0; }
.summary-suggest { max-height: 320px; overflow: auto; background: #fff; border: 1px solid #dcdfe6; box-shadow: 0 4px 12px rgba(0,0,0,.12); border-radius: 4px; }
/* 设置-凭证字 */
.voucher-words-page .voucher-word-actions { display: flex; gap: 10px; align-items: center; }
.voucher-words-page .drag-handle { cursor: move; color: #8a94a6; font-size: 16px; }
.voucher-words-page tr.drag-over td { border-top: 2px solid #238ef0; }
.word-default-tag { display: inline-block; margin-left: 6px; padding: 0 8px; border: 1px solid #91caff; border-radius: 10px; color: #238ef0; background: #eaf5fd; font-size: 12px; line-height: 18px; }
.voucher-word-form label { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; }
.voucher-word-form label .field { flex: 1; }
.voucher-word-form .required { color: #f5222d; }
.voucher-word-default { display: flex; gap: 16px; align-items: center; }
.voucher-word-default label { margin: 0; }
.voucher-word-error { color: #d33; margin: 8px 0 0; }
select#voucher-word { min-width: 64px; }
/* 账套中心：真实账套卡片 */
.hub-card .hub-edit { border: 0; background: none; cursor: pointer; color: inherit; font-size: 15px; padding: 0 4px; }
.hub-card button.hub-btn { border: 1px solid #d9d9d9; cursor: pointer; font: inherit; }
.hub-card-current { box-shadow: 0 0 0 2px #91caff; }
.hub-card .hub-status { color: #fa8c16; }
.hub-card-new.disabled, .ledger-create.disabled { opacity: .55; cursor: not-allowed; }
.hub-detail .current-ledger, .ledger-option .current-ledger { margin-left: 8px; padding: 0 6px; border-radius: 8px; background: #eaf5fd; color: #238ef0; font-size: 12px; }
/* 设置-现金流量初始余额 / 科目现金流量项目 */
.cashflow-opening-table td.line { text-align: center; color: #666; }
.cashflow-opening-table tr.section td { background: #f7f9fc; }
.cashflow-opening-table tr.total td { font-weight: 600; }
.cashflow-opening-input { width: 180px; text-align: right; }
.cashflow-tabs { display: flex; gap: 4px; padding: 0 16px; }
.cashflow-subject-page .report-filters { display: flex; align-items: center; gap: 16px; }
.cashflow-subject-page select.field { width: 100%; min-width: 220px; }
.cashflow-subject-page tr.cashflow-custom td { background: #fffbe6; }
.cashflow-expand { width: 18px; padding: 0; }
/* 凭证打印（套打模板） */
.voucher-print-modal { width: min(1180px, 96vw); max-height: 92vh; display: flex; flex-direction: column; }
.voucher-print-modal .create-modal-body { overflow: auto; min-height: 0; }
.vp-controls { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.vp-controls select { min-width: 320px; }
.vp-preview { background: #eef1f5; padding: 16px; display: flex; flex-direction: column; align-items: center; gap: 16px; overflow: auto; }
.vp-sheet { background: #fff; box-shadow: 0 1px 6px rgba(0,0,0,.15); box-sizing: border-box; padding: 4mm 6mm; overflow: hidden; color: #000; font-family: "SimSun", "Songti SC", serif; }
.vp-sheet-inner { height: 100%; }
.vp-slot { display: flex; flex-direction: column; overflow: hidden; }
.vp-slot + .vp-slot { border-top: 1px dashed #999; padding-top: 3mm; margin-top: 2mm; }
.vp-block { display: flex; flex-direction: column; height: 100%; }
.vp-title { text-align: center; font-size: 1.6em; font-weight: bold; letter-spacing: .4em; text-decoration: underline double; margin-bottom: 1.5mm; }
.vp-meta { display: flex; justify-content: space-between; margin-bottom: 1mm; }
.vp-table { width: 100%; border-collapse: collapse; table-layout: fixed; flex: 1; }
.vp-table th, .vp-table td { border: 1px solid #333; padding: 0 1mm; height: 7mm; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; vertical-align: middle; }
.vp-table th { font-weight: normal; text-align: center; }
.vp-table .vp-summary { width: 24%; }
.vp-table .vp-subject { width: 34%; white-space: normal; line-height: 1.2; }
.vp-table .vp-money { width: 21%; text-align: right; padding: 0; }
.vp-table .vp-small { width: 7%; text-align: right; }
.vp-aux { color: #333; font-size: .9em; }
.vp-digits { display: grid; grid-template-columns: repeat(11, 1fr); height: 100%; text-align: center; }
.vp-digits span { border-left: 1px solid #bbb; display: flex; align-items: center; justify-content: center; }
.vp-digits span:nth-child(3), .vp-digits span:nth-child(6), .vp-digits span:nth-child(9) { border-right: 1px solid #4a90d9; }
.vp-digits span:nth-child(9) { border-right-color: #e05a5a; }
.vp-digit-head { font-size: .8em; border-top: 1px solid #333; }
.vp-red { color: #d00; }
.vp-total td { font-weight: bold; }
.vp-foot { display: flex; justify-content: space-between; margin-top: 1.5mm; flex-wrap: wrap; gap: 2mm; }
#vp-print-root { display: none; }
@media print {
  body.vp-printing > *:not(#vp-print-root) { display: none !important; }
  body.vp-printing #vp-print-root { display: block; }
  body.vp-printing .vp-sheet { box-shadow: none; page-break-after: always; break-after: page; }
  body.vp-printing .vp-sheet:last-child { page-break-after: auto; break-after: auto; }
}
/* 套打模板编辑、打印设置 */
.ptpl-editor { display: grid; grid-template-columns: 340px 1fr; gap: 16px; }
.ptpl-form { display: flex; flex-direction: column; gap: 8px; }
.ptpl-form label { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.ptpl-form label .field { width: 150px; }
.ptpl-checks { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; }
.ptpl-checks .ptpl-check, .ptpl-form .ptpl-check { justify-content: flex-start; }
.print-settings-page .report-filters { display: flex; gap: 8px; }
.print-settings-page tr.print-general td { background: #f7f9fc; }
.vp-table thead th { height: auto; padding: .6mm 0; }
.vp-table th.vp-money { text-align: center; }
.vp-table th.vp-money .vp-digit-head { height: 4.5mm; margin-top: .6mm; font-size: .75em; }
.vp-table td.vp-money .vp-digits { min-height: 6mm; }
/* 原始凭证 */
.original-page .original-toolbar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.original-page .attachment-side-title span { cursor: pointer; }
.original-page .attachment-side-title span.active { color: #238ef0; font-weight: 600; }
.original-page .attachment-category { cursor: pointer; display: block; }
.original-page .attachment-category small { color: #999; }
.original-more { position: relative; display: inline-block; }
.original-more-menu { position: absolute; top: 100%; right: 0; z-index: 20; background: #fff; border: 1px solid #dcdfe6; box-shadow: 0 4px 12px rgba(0,0,0,.12); display: flex; flex-direction: column; padding: 6px 0; min-width: 140px; }
.original-more-menu .link-btn { text-align: left; padding: 6px 14px; }
.original-link-list { max-height: 320px; overflow: auto; border: 1px solid #eee; padding: 6px; }
.original-link-item { display: block !important; padding: 4px 0; }
.original-cat-row { display: flex; justify-content: space-between; padding: 4px 0; border-bottom: 1px dashed #eee; }
.original-print-sheet { display: flex; flex-direction: column; align-items: center; justify-content: center; }
.original-print-sheet img { max-width: 100%; max-height: 95%; object-fit: contain; }
/* 税务 */
.tax-check { margin: 8px 0 14px 120px; padding: 10px 14px; border-radius: 4px; }
.tax-check.ok { background: #f6ffed; border: 1px solid #b7eb8f; }
.tax-check.bad { background: #fff2f0; border: 1px solid #ffccc7; }
.tax-check ul { margin: 6px 0 0; padding-left: 18px; }
.tax-filing-page .report-head { display: flex; align-items: center; gap: 10px; }
.report-table tr.tax-sub td { color: #647986; font-size: 13px; }
.hub-card[data-hub-card] { cursor: pointer; }
.hub-card.hub-card-disabled { cursor: default; opacity: .75; }
.hub-nav-item[data-hub-nav] { cursor: pointer; }
.hub-help dt { font-weight: 600; margin-top: 10px; }
.hub-help dd { margin: 4px 0 0; color: #3d4b57; line-height: 1.7; }
.platform-link, .platform-side-item { cursor: pointer; }
.platform-page .service-tabs { display: flex; align-items: center; }
.hm-metric-tabs span[data-home-metric] { cursor: pointer; }
select.card-period { border: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; }
.hm-benchmark { padding: 12px 16px; }
.home-quick-group { margin: 8px 0; display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; }
.home-quick-group b { width: 100%; }
.balance-table th { text-align: center; }
.book-inline-check { display: inline-flex; align-items: center; gap: 4px; margin: 0 8px; }
.report-table tr.cf-subtotal td { background: #fffbe6 !important; }
.create-modal-body label.reclass-item { display: block; margin: 12px 0; cursor: pointer; }
.reclass-item input { margin: 0 6px 0 0; vertical-align: -2px; }
.reclass-item small { display: block; margin: 4px 0 0 22px; line-height: 1.6; }
.reclass-tip { color: #8a94a6; margin-left: 4px; cursor: help; }
.reclass-warn { color: #fa8c16; margin-right: auto; }
/* 财务初始余额 */
.ib-tabs { display: inline-flex; border: 1px solid #d9e0e6; border-radius: 4px; overflow: hidden; }
.ib-tab { border: 0; border-right: 1px solid #d9e0e6; background: #fff; padding: 7px 18px; cursor: pointer; color: #314454; font-size: 14px; }
.ib-tab:last-child { border-right: 0; }
.ib-tab.active { background: #3a8ee6; color: #fff; }
.ib-start { margin-left: 18px; color: #314454; }
.initial-page .inline-check { display: inline-flex; align-items: center; gap: 4px; margin-left: 12px; white-space: nowrap; }
.ib-wrap { overflow: auto; max-height: calc(100vh - 290px); border: 1px solid #e1e6ea; }
.ib-table { margin: 0; }
.ib-table tbody td:nth-child(1), .ib-table tbody td:nth-child(2) { text-align: left; }
.ib-table tbody td:nth-child(3) { text-align: center; }
.ib-table tbody td.number { text-align: right; }
.ib-table thead th { position: sticky; top: 0; z-index: 1; background: #edf2f7; text-align: center; }
.ib-table thead tr:nth-child(2) th { top: 37px; }
.ib-table tr.ib-parent td { font-weight: 600; }
.ib-table td.ib-cell { padding: 0; min-width: 110px; }
.ib-input { width: 100%; height: 36px; border: 0; padding: 0 10px; text-align: right; background: transparent; font: inherit; }
.ib-input:hover { background: #f5f9ff; }
.ib-input:focus { outline: 2px solid #3a8ee6; outline-offset: -2px; background: #fff; }
.ib-toggle { display: inline-block; width: 16px; border: 0; background: none; padding: 0; color: #6b7b8a; cursor: pointer; }
.ib-detail { margin-left: 8px; font-size: 12px; }
.ib-count { padding: 10px 2px; color: #536573; }
.ib-trial-result { padding: 12px 14px; margin-bottom: 12px; border-radius: 4px; font-size: 15px; }
.ib-trial-result.ok { background: #f0f9eb; color: #389e0d; }
.ib-trial-result.bad { background: #fff1f0; color: #cf1322; }
/* 凭证暂存 */
.split-btn { position: relative; display: inline-flex; }
.split-btn > .btn:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.split-btn > .split-caret { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: -1px; padding: 0 8px; }
.split-menu { position: absolute; top: 100%; left: 0; z-index: 30; min-width: 110px; margin-top: 4px; background: #fff; border: 1px solid #e1e6ea; border-radius: 4px; box-shadow: 0 4px 14px rgba(0,0,0,.12); padding: 4px 0; }
.split-menu button { display: block; width: 100%; border: 0; background: none; text-align: left; padding: 8px 14px; cursor: pointer; font: inherit; color: #314454; }
.split-menu button:hover { background: #f0f6ff; color: #1677ff; }
.btn.stage-tip { border-color: #fa8c16; color: #fa8c16; animation: stagePulse 1.6s ease-in-out infinite; }
@keyframes stagePulse { 50% { box-shadow: 0 0 0 4px rgba(250,140,22,.18); } }
.stage-tip-bubble { position: absolute; top: calc(100% + 8px); left: 0; z-index: 29; white-space: nowrap; background: #fffbe6; border: 1px solid #ffe58f; color: #8a5b13; padding: 6px 10px; border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.stage-tip-bubble .link-btn { margin-left: 8px; }
.staging-modal { width: 885px; max-width: 96vw; }
.staging-modal .create-modal-head { display: flex; justify-content: space-between; align-items: center; }
.staging-filters { flex-wrap: wrap; gap: 8px; padding: 0 0 10px; }
.staging-filters .search { width: 220px; }
.staging-table-wrap { max-height: 380px; overflow: auto; border: 1px solid #e1e6ea; }
.staging-table { margin: 0; }
.staging-table td { text-align: left; vertical-align: top; }
.staging-table td.number { text-align: right; }
.staging-table tr.staging-row { cursor: pointer; }
.staging-table tr.staging-row:hover td, .staging-table tr.staging-row.selected td { background: #f0f6ff; }
.staging-modal .pager { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding-top: 10px; }
.small { font-size: 12px; }
/* 费用明细表 */
.expense-filters { flex-wrap: wrap; gap: 8px; }
.expense-filters #expense-subject { width: 250px; }
.expense-charts { display: grid; grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr); gap: 12px; margin: 4px 0 10px; }
.expense-card { border: 1px solid #e1e6ea; border-radius: 4px; padding: 10px 12px; background: #fff; min-width: 0; }
.expense-card-head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.expense-card-head .spacer { flex: 1; }
.small-btn { height: 26px; padding: 0 10px; font-size: 12px; }
.expense-chart { width: 100%; height: auto; display: block; }
.expense-chart .chart-grid { stroke: #edf0f3; }
.expense-chart .chart-axis { font-size: 11px; fill: #8a94a6; }
.expense-chart .chart-line { fill: none; stroke: #3a8ee6; stroke-width: 2; }
.expense-chart .chart-dot { fill: #fff; stroke: #3a8ee6; stroke-width: 2; }
.expense-chart .chart-bar { fill: #3a8ee6; }
.expense-donut { display: flex; align-items: center; gap: 12px; }
.expense-donut ul { list-style: none; margin: 0; padding: 0; font-size: 12px; flex: 1; min-width: 0; }
.expense-donut li { display: flex; align-items: center; gap: 6px; margin: 4px 0; }
.expense-donut li i { width: 10px; height: 10px; border-radius: 2px; flex-shrink: 0; }
.expense-donut li b { margin-left: auto; font-weight: 500; }
.expense-empty { padding: 50px 0; text-align: center; }
.expense-options { flex-wrap: wrap; }
.expense-wrap { overflow: auto; }
.expense-table th, .expense-table td { white-space: nowrap; }
.expense-table td:nth-child(2), .expense-table td:nth-child(3) { text-align: left; }
.expense-table .yoy { font-size: 11px; color: #8a94a6; }
.expense-table tr.expense-aux td { color: #536573; background: #fbfcfd; }
.expense-analyze { opacity: .55; }
.expense-analyze.active, .expense-analyze:hover { opacity: 1; }
.report-caption { display: flex; justify-content: space-between; color: #647986; font-size: 13px; padding: 4px 2px 8px; }
@media (max-width: 900px) { .expense-charts { grid-template-columns: 1fr; } }
.dep-table td:nth-child(-n+4) { text-align: left; }
.dep-table tr.subtotal td { background: #f7f9fc; font-weight: 600; }
.dep-table tr.dep-disposed td { color: #8a94a6; }
.dep-table .tag { margin-left: 6px; font-size: 11px; padding: 1px 6px; border-radius: 3px; background: #f0f0f0; color: #8a94a6; }
.dep-table .dep-changes { text-align: left; white-space: normal; min-width: 220px; font-size: 12px; color: #536573; }
.pp-table td:first-child { text-align: left; white-space: nowrap; }
.pp-table td.center { text-align: center; }
.pp-table tr.pp-key td { font-weight: 600; background: #fafbfc; }
.pp-wrap { overflow: auto; }
.pp-empty { padding: 12px 4px; }
/* 工资新手导航 */
.salary-guide { display: grid; gap: 14px; padding: 6px 0; }
.salary-guide-step { display: flex; gap: 16px; align-items: flex-start; border: 1px solid #e1e6ea; border-radius: 6px; padding: 16px 18px; background: #fff; }
.salary-guide-no { width: 34px; height: 34px; border-radius: 50%; background: #3a8ee6; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; flex-shrink: 0; }
.salary-guide-body h3 { margin: 4px 0 6px; font-size: 16px; }
.salary-guide-body p { margin: 0 0 10px; color: #647986; }
.salary-guide-actions { display: flex; flex-wrap: wrap; gap: 8px; }
/* 财税服务：工具、知识库、页签 */
.finance-top { padding: 12px 0 4px; }
.finance-tools { display: flex; flex-wrap: wrap; gap: 12px; }
.finance-tool { display: flex; align-items: center; gap: 10px; border: 1px solid #e1e6ea; background: #fff; border-radius: 6px; padding: 12px 16px; cursor: pointer; font: inherit; color: #22313f; min-width: 150px; }
.finance-tool:hover { border-color: #3a8ee6; color: #1677ff; }
.finance-tool-icon { width: 30px; height: 30px; border-radius: 6px; background: #eaf3ff; color: #1677ff; display: flex; align-items: center; justify-content: center; font-weight: 700; }
.finance-search { display: flex; gap: 8px; margin: 14px 0 8px; max-width: 640px; }
.finance-search .field { flex: 1; }
.finance-links { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; padding: 8px 0; color: #536573; }
.knowledge-results { display: grid; gap: 10px; margin: 6px 0 10px; }
.knowledge-results article { border: 1px solid #e1e6ea; border-radius: 6px; padding: 10px 14px; background: #fbfcfd; }
.knowledge-results h4 { margin: 0 0 4px; }
.knowledge-results p { margin: 0 0 4px; color: #314454; line-height: 1.7; }
.finance-tabs { margin: 10px 0 6px; }
.finance-news { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; padding: 10px 0; }
.finance-news .card { padding: 18px; }
.finance-news ul { padding-left: 18px; line-height: 2; }
.finance-consumables { padding: 10px 0; grid-template-columns: repeat(3, minmax(220px, 1fr)); }
.finance-mine-title { margin: 14px 0 8px; }
.finance-tool-modal { width: 820px; max-width: 96vw; }
.finance-tool-modal .create-modal-head { display: flex; justify-content: space-between; align-items: center; }
.tool-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px 14px; margin-bottom: 12px; }
.tool-grid label { display: flex; flex-direction: column; gap: 4px; }
.tool-result { display: flex; flex-wrap: wrap; gap: 12px; margin: 6px 0 12px; }
.tool-result > div, .upper-result { background: #f5f9ff; border: 1px solid #d6e6fb; border-radius: 6px; padding: 10px 14px; display: flex; flex-direction: column; gap: 4px; min-width: 150px; }
.tool-result span, .upper-result span { color: #647986; font-size: 12px; }
.tool-result b, .upper-result b { font-size: 18px; color: #1d2b36; }
.tool-scroll { max-height: 340px; overflow: auto; }
.ss-rate { width: 80px; }
@media (max-width: 700px) { .finance-consumables { grid-template-columns: 1fr; } }
.voucher-page td.source-docs { max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tax-mode { margin-right: 8px; } .tax-year-wrap { overflow: auto; } .tax-year-table td:first-child { text-align: left; white-space: nowrap; }
.tag-default { display:inline-block; padding:1px 8px; border-radius:3px; background:#e6f4ff; color:#1677ff; font-size:12px; }
.book-quick { position: fixed; right: 16px; top: 120px; bottom: 24px; width: 280px; z-index: 40; background: #fff; border: 1px solid #e1e6ea; border-radius: 6px; box-shadow: 0 6px 24px rgba(0,0,0,.12); display: flex; flex-direction: column; padding: 10px; }
.book-quick-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.book-quick ul { list-style: none; margin: 8px 0 0; padding: 0; overflow: auto; flex: 1; }
.book-quick li button { display: block; width: 100%; text-align: left; padding: 5px 6px; border-radius: 3px; }
.book-quick li button.active { background: #e6f4ff; font-weight: 600; }
.recon-manual { margin: 10px 0; }
.recon-manual-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.recon-manual-head .spacer { flex: 1; }
.recon-form { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 10px; }
.recon-form #recon-summary { width: 220px; }
/* 报表样式 / 分享 */
.report-style-modal { width: 640px; max-width: 96vw; }
.style-notice { background: #e6f4ff; border: 1px solid #b7dcff; border-radius: 4px; padding: 10px 14px; margin-bottom: 10px; font-size: 13px; }
.style-notice ol { margin: 6px 0 0; padding-left: 20px; line-height: 1.8; }
.style-option { display: block; margin: 10px 0; cursor: pointer; }
.style-preview-links { margin: 4px 0 0 22px; font-size: 12px; color: #8a94a6; }
.style-preview-links .link-btn { margin-left: 8px; font-size: 12px; }
.style-preview-mask { z-index: 1100; }
.report-share-modal { width: 760px; max-width: 96vw; }
.share-days { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 6px 0 12px; }
.share-created { border: 1px solid #d6e6fb; background: #f5f9ff; border-radius: 6px; padding: 12px; margin-bottom: 12px; }
.share-created label { display: flex; align-items: center; gap: 8px; }
.share-created #share-link { flex: 1; }
.share-code { margin-top: 8px; } .share-code b { font-size: 18px; letter-spacing: 2px; color: #1677ff; margin: 0 8px; }
.share-page { min-height: 100vh; background: #f0f2f5; display: flex; justify-content: center; align-items: flex-start; padding: 40px 16px; box-sizing: border-box; }
.share-box { background: #fff; border-radius: 8px; padding: 28px; width: 360px; max-width: 100%; box-shadow: 0 4px 18px rgba(0,0,0,.08); display: grid; gap: 12px; }
.share-box h2 { margin: 0; }
.share-report { background: #fff; border-radius: 8px; padding: 24px; width: 1100px; max-width: 100%; overflow: auto; }
.share-report h2 { text-align: center; margin: 0 0 10px; }
.share-table td:first-child, .share-table td:nth-child(5) { text-align: left; }
.share-table td.share-head { font-weight: 600; }
.report-copy-result { background: #f6ffed; border: 1px solid #b7eb8f; padding: 8px 10px; border-radius: 4px; }
.create-modal-body label.style-option { display: block; margin: 8px 0; }
.report-style-modal .create-modal-body { max-height: calc(100vh - 220px); overflow: auto; }
.report-style-modal { margin-top: 4vh; }
.report-style-modal .style-preview-links { display: block; }
/* 资产卡片弹窗分区 */
.asset-card-body { max-height: 70vh; overflow: auto; }
.asset-card-modal .create-modal-head { display: flex; justify-content: space-between; align-items: center; }
.asset-entry-period { font-size: 13px; font-weight: 400; color: #647986; }
.asset-sec { margin: 14px 0 6px; padding-bottom: 6px; border-bottom: 1px solid #edf0f3; font-size: 14px; color: #22313f; }
.asset-sec:first-child { margin-top: 0; }
.asset-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 18px; }
.asset-calc { display: block; background: #f7f9fc; color: #314454; }
@media (max-width: 700px) { .asset-grid { grid-template-columns: 1fr; } }
/* 结转损益凭证模板设置 */
.voucher-word-form .closing-profit-form .closing-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:10px 0}
.voucher-word-form .closing-profit-form .closing-row>span{color:#333;min-width:96px}
.voucher-word-form .closing-profit-form label.closing-radio{display:inline-flex;align-items:center;gap:4px;margin:0;font-weight:normal;width:auto}
.voucher-word-form .closing-profit-form .closing-row .field{flex:1;min-width:220px}
.voucher-word-form .closing-profit-form p.muted{margin:0 0 4px 110px;font-size:12px}
/* 日记账：本日小计、自动生成的对方账户流水标记 */
.cashier-page tr:has(.daily-subtotal){background:#f7f9fb}
.cashier-page tr:has(.daily-subtotal) td{font-weight:600}
.cashier-pair{color:#1677ff;font-size:12px;margin-left:2px;cursor:help}
.cashier-page .original-toolbar .book-inline-check{display:inline-flex;align-items:center;gap:4px;margin-right:12px;white-space:nowrap}
