:root {
  color-scheme: light;
  --bg: #f3f5f2;
  --surface: #ffffff;
  --surface-alt: #f7f8f6;
  --ink: #1b2628;
  --muted: #697477;
  --line: #d9dfdb;
  --line-strong: #bec8c2;
  --green: #126b55;
  --green-soft: #e6f2ed;
  --blue: #2b5ea8;
  --blue-soft: #eaf0f8;
  --amber: #9a6113;
  --amber-soft: #faf0dd;
  --red: #a43c43;
  --red-soft: #f9e9ea;
  --sidebar: #202827;
  --sidebar-muted: #aeb9b5;
  --shadow: 0 2px 8px rgba(20, 37, 32, 0.06);
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--bg); color: var(--ink); font-family: Inter, "Segoe UI", Arial, sans-serif; letter-spacing: 0; }
button, input, select { font: inherit; letter-spacing: 0; }
button { cursor: pointer; }
.hidden { display: none !important; }

.app-shell { display: grid; grid-template-columns: 228px minmax(0, 1fr); min-height: 100vh; transition: grid-template-columns .24s cubic-bezier(.2,.7,.2,1); }
.app-shell.sidebar-collapsed { grid-template-columns: 64px minmax(0, 1fr); }
.sidebar { position: sticky; top: 0; z-index: 30; height: 100vh; display: flex; flex-direction: column; background: var(--sidebar); color: #fff; padding: 18px 12px 14px; box-shadow: 1px 0 0 rgba(255,255,255,.04); }
.brand { position: relative; display: flex; align-items: center; gap: 11px; padding: 2px 30px 20px 8px; border-bottom: 1px solid rgba(255,255,255,.1); }
.brand-mark { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 6px; background: #3e9878; font-weight: 800; }
.brand-copy { min-width: 0; }
.brand strong, .brand small { display: block; }
.brand strong { font-size: 16px; }
.brand small { margin-top: 2px; color: var(--sidebar-muted); font-size: 11px; }
.main-nav { display: grid; gap: 4px; margin-top: 18px; }
.sidebar-toggle { position: absolute; top: 5px; right: 0; display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 1px solid rgba(255,255,255,.16); border-radius: 7px; background: transparent; color: #cdd8d4; line-height: 1; transition: color .16s ease, background .16s ease, border-color .16s ease, transform .18s ease; }
.sidebar-toggle svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .24s cubic-bezier(.2,.7,.2,1); }
.sidebar-toggle:hover, .sidebar-toggle:focus-visible { border-color: rgba(113,207,169,.55); background: rgba(88,178,142,.16); color: #fff; outline: none; }
.nav-item { position: relative; display: flex; align-items: center; gap: 9px; width: 100%; min-height: 42px; padding: 5px 8px; border: 0; border-left: 3px solid transparent; border-radius: 7px; background: transparent; color: #c8d3cf; text-align: left; font-size: 13px; transition: color .16s ease, background .16s ease, transform .16s ease; }
.nav-icon { display: grid; place-items: center; flex: 0 0 30px; width: 30px; height: 30px; border: 1px solid transparent; border-radius: 8px; color: #bfd0ca; transition: color .16s ease, background .16s ease, border-color .16s ease, transform .16s ease, box-shadow .16s ease; }
.nav-icon svg { width: 20px; height: 20px; overflow: visible; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.nav-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-item:hover, .nav-item:focus-visible { background: rgba(255,255,255,.065); color: #fff; outline: none; }
.nav-item:hover .nav-icon, .nav-item:focus-visible .nav-icon { border-color: rgba(113,207,169,.22); background: rgba(88,178,142,.13); color: #effff8; transform: translateX(1px) scale(1.06); }
.nav-item.active { border-left-color: #65c49e; background: linear-gradient(90deg, rgba(88,178,142,.18), rgba(255,255,255,.075)); color: #fff; font-weight: 700; }
.nav-item.active .nav-icon { border-color: rgba(101,196,158,.34); background: rgba(88,178,142,.18); color: #8ee0bd; box-shadow: inset 0 0 0 1px rgba(255,255,255,.025); }
.sidebar-footer { display: flex; align-items: center; gap: 7px; margin-top: auto; padding: 11px 8px 2px; color: var(--sidebar-muted); font-size: 11px; }
.status-dot { width: 7px; height: 7px; border-radius: 50%; background: #59b88f; }
.sidebar-collapsed .sidebar { padding-inline: 8px; }
.sidebar-collapsed .brand { justify-content: center; padding: 2px 0 20px; }
.sidebar-collapsed .brand-copy, .sidebar-collapsed .sidebar-footer-copy { display: none; }
.sidebar-collapsed .sidebar-toggle { top: 43px; right: 10px; background: var(--sidebar); }
.sidebar-collapsed .sidebar-toggle svg { transform: rotate(180deg); }
.sidebar-collapsed .main-nav { margin-top: 34px; }
.sidebar-collapsed .nav-item { justify-content: center; padding-inline: 5px; }
.sidebar-collapsed .nav-label { position: absolute; left: calc(100% + 12px); z-index: 50; width: max-content; max-width: 220px; padding: 8px 11px; overflow: visible; border: 1px solid rgba(255,255,255,.1); border-radius: 7px; background: #17201f; box-shadow: 0 8px 24px rgba(10,18,16,.24); color: #fff; font-size: 12px; font-weight: 600; line-height: 1.2; opacity: 0; pointer-events: none; transform: translateX(-5px); transition: opacity .14s ease, transform .18s ease; }
.sidebar-collapsed .nav-label::before { content: ""; position: absolute; top: 50%; left: -5px; width: 9px; height: 9px; border-left: 1px solid rgba(255,255,255,.1); border-bottom: 1px solid rgba(255,255,255,.1); background: #17201f; transform: translateY(-50%) rotate(45deg); }
.sidebar-collapsed .nav-item:hover .nav-label, .sidebar-collapsed .nav-item:focus-visible .nav-label { opacity: 1; transform: translateX(0); }
.sidebar-collapsed .sidebar-footer { justify-content: center; padding-inline: 0; }
.sidebar-collapsed .sidebar-logout { margin-left: 0; }
.sidebar-collapsed .sidebar-logout-label { display: none; }

.workspace { min-width: 0; padding: 0 24px 36px; }
.topbar { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; justify-content: space-between; min-height: 76px; background: rgba(243,245,242,.96); border-bottom: 1px solid var(--line); }
.topbar h1 { margin: 0; font-size: 20px; line-height: 1.2; }
.topbar p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }
.source-summary { display: flex; align-items: center; gap: 14px; }
.source-state { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; }
.source-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--green); }
.source-dot.pending { background: var(--amber); }
.source-dot.error { background: var(--red); }
.source-time { color: var(--muted); font-size: 11px; }
.icon-button { display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border: 1px solid var(--line-strong); border-radius: 5px; background: var(--surface); color: var(--ink); font-size: 20px; line-height: 1; }
.icon-button:hover { border-color: var(--green); color: var(--green); }

.page { display: none; padding-top: 18px; }
.page.active { display: block; }
.sticky-filter-stack { position: sticky; top: 76px; z-index: 18; padding-top: 6px; background: var(--bg); }
.sticky-filter-stack .filter-band { margin-bottom: 12px; }
.page-tools { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; min-height: 34px; }
.page-tool-actions { display: flex; align-items: center; gap: 7px; }
.section-note { color: var(--muted); font-size: 12px; }
.command-button { min-height: 32px; padding: 6px 11px; border: 1px solid var(--green); border-radius: 5px; background: var(--green); color: #fff; font-size: 12px; font-weight: 700; }
.command-button:hover { background: #0d5d49; }
.text-button { padding: 4px 7px; border: 0; background: transparent; color: var(--blue); font-size: 12px; font-weight: 700; }
.text-button:hover { text-decoration: underline; }

.segmented { display: inline-flex; padding: 2px; border: 1px solid var(--line-strong); border-radius: 5px; background: var(--surface); }
.segmented button { min-height: 29px; padding: 5px 10px; border: 0; border-radius: 3px; background: transparent; color: var(--muted); font-size: 12px; }
.segmented button.active { background: var(--ink); color: #fff; }
.segmented.compact button { min-height: 28px; padding: 4px 8px; font-size: 11px; }
.quick-range-field { flex: 1 1 430px; }
.quick-ranges { display: flex; flex-wrap: wrap; }

.filter-band-inline { display: contents; }
.filter-band { display: flex; align-items: flex-end; gap: 8px; flex-wrap: wrap; padding: 10px; margin-bottom: 12px; border: 1px solid var(--line); background: var(--surface); box-shadow: var(--shadow); }
.field { display: grid; gap: 4px; min-width: 125px; }
.field.grow { flex: 1 1 220px; }
.field > span { color: var(--muted); font-size: 10px; font-weight: 700; text-transform: uppercase; }
.field input, .field select { width: 100%; height: 32px; padding: 5px 8px; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff; color: var(--ink); font-size: 12px; outline: none; }
.field input:focus, .field select:focus { border-color: var(--green); box-shadow: 0 0 0 2px var(--green-soft); }

.multi-select { position: relative; min-width: 150px; }
.multi-trigger { display: flex; align-items: center; justify-content: space-between; width: 100%; height: 32px; padding: 5px 8px; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff; color: var(--ink); font-size: 12px; text-align: left; }
.multi-trigger::after { content: "▾"; color: var(--muted); }
.multi-menu { position: absolute; z-index: 60; top: 36px; left: 0; width: 260px; max-width: 75vw; padding: 8px; border: 1px solid var(--line-strong); border-radius: 5px; background: #fff; box-shadow: 0 10px 30px rgba(22,37,32,.18); }
.multi-menu input { width: 100%; height: 30px; padding: 4px 7px; border: 1px solid var(--line); border-radius: 4px; }
.multi-actions { display: flex; justify-content: space-between; margin: 6px 0; }
.multi-options { max-height: 220px; overflow: auto; border-top: 1px solid var(--line); }
.multi-option { display: flex; align-items: flex-start; gap: 7px; padding: 6px 3px; border-bottom: 1px solid #edf0ed; font-size: 11px; line-height: 1.25; }
.multi-option input { flex: 0 0 auto; width: 14px; height: 14px; margin: 0; accent-color: var(--green); }

.metric-strip { display: grid; grid-template-columns: repeat(5, minmax(130px, 1fr)); gap: 8px; margin-bottom: 12px; }
.metric-strip.compact-metrics { grid-template-columns: repeat(3, minmax(150px, 220px)); }
.metric-strip.dds-plan-metrics { grid-template-columns: repeat(4, minmax(150px, 1fr)); margin: 12px; }
.metric { min-height: 80px; padding: 12px; border: 1px solid var(--line); border-top: 3px solid var(--line-strong); border-radius: 6px; background: var(--surface); box-shadow: var(--shadow); }
.metric span, .metric small { display: block; color: var(--muted); font-size: 11px; }
.metric strong { display: block; margin-top: 8px; font-size: 20px; line-height: 1.05; overflow-wrap: anywhere; }
.metric small { margin-top: 4px; }
.metric.positive { border-top-color: var(--green); }
.metric.negative { border-top-color: var(--red); }

.work-section { margin-top: 12px; border: 1px solid var(--line); background: var(--surface); box-shadow: var(--shadow); }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 54px; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.section-heading h2 { margin: 0; font-size: 14px; }
.section-heading p { margin: 3px 0 0; color: var(--muted); font-size: 11px; }
.section-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
.section-toggle { flex: 0 0 34px; font-size: 16px; }
.chart-wrap { position: relative; min-height: 340px; padding: 10px 12px 12px; }
canvas { display: block; width: 100%; height: 340px; }
.chart-tooltip { position: absolute; z-index: 8; min-width: 126px; padding: 7px 9px; border: 1px solid #b9c4bf; border-radius: 4px; background: rgba(255,255,255,.97); box-shadow: 0 6px 20px rgba(22,34,31,.16); pointer-events: none; transform: translate(-50%, -100%); }
.chart-tooltip strong, .chart-tooltip span { display: block; }
.chart-tooltip strong { color: var(--ink); font-size: 12px; font-variant-numeric: tabular-nums; }
.chart-tooltip span { margin-top: 2px; color: var(--muted); font-size: 10px; }
.empty-state { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); font-size: 12px; }

.table-scroll { width: 100%; overflow: auto; }
.table-scroll.tall { max-height: 520px; }
.matrix-scroll { max-height: 580px; }
.register-scroll { max-height: calc(100vh - 250px); min-height: 420px; }
.data-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 11px; }
.data-table th, .data-table td { padding: 7px 8px; border-right: 1px solid #edf0ed; border-bottom: 1px solid #e5e9e6; background: #fff; text-align: left; vertical-align: top; white-space: nowrap; }
.data-table th { position: sticky; top: 0; z-index: 5; background: #eef2ef; color: #44504e; font-weight: 800; text-align: center; vertical-align: middle; }
.data-table tbody tr:hover td { background: #f6f9f7; }
.data-table .num { text-align: center; font-variant-numeric: tabular-nums; }
.data-table .wrap-cell { min-width: 220px; max-width: 380px; white-space: normal; line-height: 1.3; }
.data-table .muted-cell { color: var(--muted); }
.data-table .positive-cell { color: var(--green); font-weight: 700; }
.data-table .negative-cell { color: var(--red); font-weight: 700; }
.data-table .magnitude-cell { color: #075fd0; font-weight: 700; }
.data-table .opening-cell { color: #b46a08; font-weight: 700; }
.data-table .closing-cell { color: var(--green); font-weight: 800; }
.balance-summary-row td { border-top: 2px solid var(--line-strong); background: #f7faf8; font-weight: 800; }
.closing-row td { border-top-color: #91aa9f; }
.account-org-row td { background: #edf4f0; font-weight: 800; }
.account-org-row td:first-child { position: sticky; left: 0; z-index: 3; }
.account-group-toggle { display: flex; align-items: center; gap: 7px; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; text-align: left; font-weight: 800; }
.account-group-toggle .tree-toggle { flex: 0 0 18px; }
.account-row td:first-child { position: sticky; left: 0; z-index: 2; background: #fff; }
.account-indent { display: block; padding-left: 22px; }
.balance-value { min-width: 112px; font-variant-numeric: tabular-nums; }
.account-org-row.has-negative-balance td:first-child { color: #c51624; }
.org-negative-balance { background: #ffdfe2 !important; color: #c00014 !important; font-weight: 900 !important; }
.org-account-warning { background: #fff2b8 !important; color: var(--ink) !important; font-weight: 850 !important; }
.account-negative-balance { background: #ffdfe2 !important; color: #c00014 !important; font-weight: 900 !important; }
.matrix-table th:first-child, .matrix-table td:first-child { position: sticky; left: 0; z-index: 4; min-width: 310px; max-width: 420px; }
.matrix-table th:first-child { z-index: 8; background: #e7ede9; }
.matrix-table td:first-child { background: #fff; white-space: normal; }
.matrix-table .tree-row.level-0 td { font-weight: 800; background: #edf4f0; }
.matrix-table .tree-row.level-1 td { font-weight: 750; background: #f4f7f5; }
.matrix-table .tree-row.level-2 td:first-child { font-weight: 700; }
.matrix-table .opening-row td { background: #f8faf8; border-bottom: 2px solid #168879; }
.matrix-table .tree-row.flow-receipt td { background: #edf8f0 !important; color: var(--ink) !important; }
.matrix-table .tree-row.flow-transfer td { background: #fff7d8 !important; color: var(--ink) !important; }
.matrix-table .tree-row.flow-receipt button,
.matrix-table .tree-row.flow-transfer button { color: var(--ink) !important; }
.data-table tbody tr.dds-row-receipt td { background: #edf8f0; color: var(--ink); }
.data-table tbody tr.dds-row-transfer td { background: #fff7d8; color: var(--ink); }
.period-total-cell { background: #dfece6 !important; box-shadow: inset 2px 0 0 #8ba99b, inset -2px 0 0 #8ba99b; font-weight: 850 !important; }
.dds-plan-fact-table td:nth-child(n+2), .dds-plan-fact-table th:nth-child(n+2) { min-width: 84px; text-align: center; }
.dds-plan-fact-table thead tr:first-child th { top: 0; z-index: 12; height: 36px; box-shadow: inset 0 -1px #aebdb6; }
.dds-plan-fact-table thead tr:nth-child(2) th { top: 36px; z-index: 11; box-shadow: 0 2px 3px rgba(25, 48, 42, .12); }
.dds-plan-fact-table thead tr:first-child th:first-child { z-index: 14; }
.dds-plan-fact-table .dds-plan-period-head { min-width: 336px; border-left: 2px solid #b6c5be; font-size: 12px; letter-spacing: .01em; }
.dds-plan-fact-table .dds-plan-subhead { min-width: 84px; padding-block: 7px; font-size: 11px; }
.dds-plan-fact-table .dds-plan-subhead:nth-child(4n+1),
.dds-plan-fact-table td:nth-child(4n+2) { border-left: 2px solid #b6c5be; }
.dds-plan-data-cell { position: relative; padding: 7px 6px 15px !important; text-align: center !important; vertical-align: middle !important; font-variant-numeric: tabular-nums; }
.dds-plan-percent-cell, .dds-plan-delta-cell { font-weight: 750; }
.dds-plan-fact-table .variance-positive { color: var(--green); font-weight: 800; }
.dds-plan-fact-table .variance-negative { color: var(--red); font-weight: 800; }
.dds-plan-detail-button { width: 100%; min-height: 30px; padding: 1px 2px; border: 0; border-radius: 3px; background: transparent; color: inherit; font: inherit; font-weight: inherit; text-align: center; cursor: pointer; }
.dds-plan-detail-button:hover, .dds-plan-detail-button:focus-visible { background: rgba(0, 113, 99, .08); outline: 2px solid rgba(0, 113, 99, .22); outline-offset: -2px; }
.dds-plan-data-cell:has(.dds-plan-detail-button:hover) { background: #f1f8f5 !important; }
.dds-plan-chart-grid { display: grid; grid-template-columns: repeat(2, minmax(300px, 1fr)); gap: 10px; padding: 10px; }
.dds-plan-chart-card:first-child { grid-column: 1 / -1; }
.dds-plan-chart-card { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: linear-gradient(180deg, #fff 0%, #fbfdfc 100%); }
.dds-plan-chart-title { padding: 10px 12px 0; }
.dds-plan-chart-title h3 { margin: 0; color: #243d35; font-size: 13px; }
.dds-plan-chart-title p { margin: 3px 0 0; color: var(--muted); font-size: 10px; }
.dds-plan-chart-wrap { min-height: 278px; padding: 4px 8px 8px; }
.dds-plan-chart-wrap canvas { height: 260px; }
.dds-plan-chart-wrap .chart-tooltip { min-width: 150px; border-color: #9bb2a8; }
.dds-plan-chart-wrap .chart-tooltip span { display: flex; justify-content: space-between; gap: 14px; }
.dds-plan-chart-wrap .chart-tooltip b { font-weight: 700; }
.dds-plan-chart-wrap .chart-tooltip em { font-style: normal; font-variant-numeric: tabular-nums; }

.data-table th.weekend-cell,
.data-table td.weekend-cell { background: #fff0ef !important; }
.data-table td.weekend-cell.negative-cell,
.data-table td.weekend-cell.account-negative-balance,
.data-table td.weekend-cell.org-negative-balance { background: #ffdfe2 !important; }
.data-table tbody tr.weekend-row td { background: #fff0ef !important; }
.balance-value[data-balance-bucket] { cursor: pointer; text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 3px; }
.balance-value[data-balance-bucket]:hover,
.balance-value[data-balance-bucket]:focus-visible { text-decoration-color: currentColor; outline: 2px solid rgba(13, 109, 91, .25); outline-offset: -2px; }
.account-balance-popover { position: fixed; z-index: 120; width: min(430px, calc(100vw - 24px)); max-height: min(420px, calc(100vh - 24px)); overflow: auto; border: 1px solid var(--line-strong); border-radius: 6px; background: #fff; box-shadow: 0 14px 36px rgba(17,25,24,.24); color: var(--ink); }
.account-balance-popover-head { position: sticky; top: 0; padding: 10px 12px; border-bottom: 1px solid var(--line); background: #f6f9f7; }
.account-balance-popover-head strong,
.account-balance-popover-head span { display: block; }
.account-balance-popover-head span { margin-top: 2px; color: var(--muted); font-size: 10px; }
.account-balance-operation { display: grid; grid-template-columns: 82px minmax(0, 1fr) auto; gap: 8px; align-items: start; padding: 8px 12px; border-bottom: 1px solid var(--line); font-size: 11px; }
.account-balance-operation:last-child { border-bottom: 0; }
.account-balance-operation time,
.account-balance-operation small { color: var(--muted); }
.account-balance-operation strong { text-align: right; white-space: nowrap; }
.account-balance-operation-main span,
.account-balance-operation-main small { display: block; overflow-wrap: anywhere; }
.account-balance-empty { padding: 14px 12px; color: var(--muted); font-size: 11px; }
.china-metrics { grid-template-columns: repeat(5, minmax(130px, 1fr)); }
.china-scroll { max-height: calc(100vh - 342px); overflow-x: hidden; }
.china-table { width: 100%; table-layout: fixed; font-size: 9.5px; }
.china-table th, .china-table td { padding: 4px 3px; overflow: hidden; white-space: normal; line-height: 1.2; }
.china-table th { font-size: 8.5px; overflow-wrap: anywhere; vertical-align: middle; }
.china-table td:first-child, .china-table th:first-child { text-align: center; }
.china-table .checkbox { width: 13px; height: 13px; }
.china-table .status-badge { max-width: 100%; padding: 2px 3px; overflow: hidden; font-size: 8.5px; text-overflow: ellipsis; white-space: nowrap; }
.china-col-check { width: 2%; }
.china-col-status { width: 6%; }
.china-col-check-type { width: 6%; }
.china-col-action { width: 6%; }
.china-col-comment { width: 12%; }
.china-col-payment-type { width: 7%; }
.china-col-payment { width: 12%; }
.china-col-dates { width: 17%; }
.china-col-amounts { width: 10%; }
.china-col-participants { width: 10%; }
.china-col-unf { width: 6%; }
.china-col-plan { width: 6%; }
.china-table tbody tr.china-row-error td { background: #fff5f4; }
.china-table tbody tr.china-row-ok td { background: #f1f8f3; }
.china-table tbody tr:hover td { filter: brightness(0.985); }
.china-table tbody tr { cursor: pointer; }
.china-table tbody tr.china-row-selected td { box-shadow: inset 0 1px #168879, inset 0 -1px #168879; }
.china-table .china-action-cell { text-align: center; vertical-align: middle; }
.china-action-button { min-height: 23px; max-width: 100%; padding: 3px 5px; font-size: 8.5px; }
.china-clip { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow-wrap: anywhere; }
.china-comment-cell .china-clip { -webkit-line-clamp: 4; }
.china-cell-stack { display: grid; gap: 2px; min-width: 0; }
.china-field-line { display: grid; grid-template-columns: minmax(30px, 38%) minmax(0, 1fr); gap: 3px; min-width: 0; border-bottom: 1px dotted #dfe5e1; }
.china-field-line:last-child { border-bottom: 0; }
.china-field-line small { overflow: hidden; color: var(--muted); font-size: 7.5px; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.china-field-line > span { overflow: hidden; font-size: 9px; font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
.china-date-input { width: 100%; min-width: 0; height: 20px; padding: 1px 2px; border: 1px solid var(--line-strong); border-radius: 3px; background: #fff; font: 8.5px/1 Arial, sans-serif; }
.china-date-input:disabled { border-color: transparent; background: transparent; color: var(--muted); }
.china-date-editor, .china-date-value { display: flex; align-items: center; gap: 3px; min-width: 0; }
.china-date-editor .china-date-input { flex: 1 1 auto; }
.china-weekday { flex: 0 0 auto; min-width: 19px; padding: 1px 2px; border-radius: 3px; font-size: 7.5px; font-weight: 700; line-height: 1.2; text-align: center; text-transform: uppercase; }
.china-weekday.payment-day { background: #dff3e8; color: #11664f; }
.china-weekday.weekend { background: #fde4e2; color: #a42f38; }
.china-weekday.regular-day { background: #eef1ef; color: #5b6661; }
.china-amount-input { width: 100%; min-width: 0; height: 20px; padding: 1px 3px; border: 1px solid var(--line-strong); border-radius: 3px; background: #fff; font: 8.5px/1 Arial, sans-serif; text-align: right; }
.china-detail-link { width: 100%; min-width: 0; padding: 0; overflow: hidden; border: 0; background: transparent; color: var(--blue); font: inherit; font-weight: 700; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.china-detail-link:hover { text-decoration: underline; }
.china-plan-link { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; white-space: normal; overflow-wrap: anywhere; }
.console-workspace { margin-top: 0; }
.china-console-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, 34%); gap: 10px; padding: 0 12px 12px; }
.china-console-body textarea { width: 100%; min-height: 220px; resize: vertical; padding: 10px; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff; color: var(--ink); font: 12px/1.45 Consolas, monospace; }
.china-console-body textarea:focus { border-color: var(--green); box-shadow: 0 0 0 2px var(--green-soft); outline: none; }
.china-console-status { min-height: 80px; padding: 10px; border-left: 3px solid var(--line-strong); background: #f7f9f8; color: var(--muted); white-space: pre-wrap; line-height: 1.45; }
.china-console-status.ok { border-color: var(--green); color: var(--ink); background: var(--green-soft); }
.china-console-status.error { border-color: var(--red); color: var(--red); background: var(--red-soft); }
.china-detail-heading { margin: 4px 0 0; color: var(--muted); font-size: 10px; text-transform: uppercase; }
.china-detail-card .operation-fields dd { white-space: pre-line; }
.china-detail-empty { padding: 12px; border: 1px dashed var(--line-strong); background: #fff; color: var(--muted); font-size: 11px; }
.china-article-table-wrap { max-height: 430px; border: 0; }
.china-article-table { width: 100%; table-layout: fixed; }
.china-article-table th { position: sticky; top: 0; z-index: 1; }
.china-article-table th:nth-child(1), .china-article-table th:nth-child(2) { width: 42%; }
.china-article-table th:nth-child(3) { width: 16%; }
.china-article-table td { vertical-align: top; }
.china-article-table td strong, .china-article-table td span { display: block; }
.china-article-table td strong { font-size: 11px; overflow-wrap: anywhere; }
.china-article-table td span { margin-top: 2px; color: var(--muted); font-variant-numeric: tabular-nums; }
.china-article-table tr.china-article-match td { background: #f1f8f3; }
.china-article-table tr.china-article-quantity td { background: #fff7d8; }
.china-article-table tr.china-article-missing td,
.china-article-table tr.china-article-extra td,
.china-article-table tr.china-article-unmapped td { background: #fff0ef; }
.china-article-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-top: 1px solid var(--line); background: #f8faf8; font-size: 11px; }
.china-article-actions.blocked { color: var(--muted); }
.tree-label { display: flex; align-items: center; gap: 5px; min-height: 18px; }
.tree-toggle { display: grid; place-items: center; width: 18px; height: 18px; padding: 0; border: 0; background: transparent; color: var(--blue); }
.tree-spacer { width: 18px; flex: 0 0 18px; }
.matrix-value { position: relative; min-width: 104px; padding-bottom: 15px !important; text-align: center !important; font-variant-numeric: tabular-nums; }
.matrix-number { display: inline-block; }
.cell-share { position: absolute; right: 4px; bottom: 2px; color: #71807a; font-size: 8px; font-weight: 650; line-height: 1; white-space: nowrap; }
.matrix-value button { border: 0; background: transparent; color: inherit; font-weight: inherit; }
.matrix-drill { width: 100%; padding: 0; text-align: center; text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 2px; }

.matrix-drill:hover, .matrix-drill:focus-visible { text-decoration-color: currentColor; }
.row-badge { display: inline-block; padding: 2px 5px; border-radius: 3px; background: var(--surface-alt); color: var(--muted); font-size: 10px; }
.status-badge { display: inline-block; padding: 2px 6px; border-radius: 3px; background: var(--blue-soft); color: var(--blue); font-size: 10px; font-weight: 700; }
.status-badge.warn { background: var(--amber-soft); color: var(--amber); }
.status-badge.error { background: var(--red-soft); color: var(--red); }
.status-badge.ok { background: var(--green-soft); color: var(--green); }
.status-badge.neutral { background: #eef1ef; color: var(--muted); }

.register-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 44px; padding: 7px 10px; border: 1px solid var(--line); border-bottom: 0; background: var(--surface); }
.register-actions, .row-actions { display: flex; align-items: center; gap: 5px; }
.register-totals { display: flex; align-items: baseline; gap: 12px; color: var(--muted); font-size: 11px; }
.register-totals strong { color: var(--ink); font-size: 18px; }
.register-section { margin-top: 0; }
.register-hidden-section { margin-top: 12px; border-color: #c7d2cc; background: #f8faf9; }
.register-hidden-section .section-heading { background: #eef3f0; }
.register-hidden-row { opacity: .78; }
.register-hidden-row:hover { opacity: 1; }
#registerHiddenTable .register-hidden-group td { background: #dde7e1; }
#registerHiddenTable .register-hidden-group button { width: 100%; padding: 5px; border: 0; background: transparent; color: var(--ink); font: inherit; font-weight: 800; text-align: left; }
#registerHiddenTable .register-hidden-group span { margin-left: 12px; color: var(--muted); font-weight: 400; }
.selected-total { color: var(--green); font-size: 13px; }
.checkbox { width: 15px; height: 15px; accent-color: var(--green); }
.preview-button { min-height: 28px; padding: 4px 8px; border: 1px solid var(--blue); border-radius: 4px; background: var(--surface); color: var(--blue); font-size: 11px; font-weight: 700; }
.preview-button:hover { background: var(--blue-soft); }
.date-preview-button { min-height: 28px; padding: 4px 8px; border: 1px solid var(--line-strong); border-radius: 4px; background: var(--surface); color: var(--ink); font-size: 11px; font-weight: 700; }
.date-preview-button:hover { border-color: var(--green); color: var(--green); }
.safe-preview { border-color: var(--amber); background: var(--surface); color: #80520e; }
.safe-preview:hover { background: var(--amber-soft); }
.register-date-cell { min-width: 132px; }
.register-date-input { width: 124px; height: 28px; padding: 3px 5px; border: 1px solid var(--line-strong); border-radius: 4px; font: inherit; }
.register-currency, .currency-cell { width: 68px; min-width: 68px; max-width: 68px; }
.bulk-edit-form { display: grid; grid-template-columns: 150px minmax(220px, 1fr); gap: 10px 12px; align-items: center; padding: 16px; }
.bulk-edit-toggle { display: flex; align-items: center; gap: 8px; font-weight: 700; }
.bulk-edit-form > input:not(.checkbox), .bulk-edit-form > select { min-height: 34px; padding: 5px 8px; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff; font: inherit; }
.bulk-edit-actions { grid-column: 1 / -1; }
.change-preview-cell span, .change-preview-cell strong { display: block; }
.change-preview-cell span { color: var(--muted); }
.change-preview-cell strong { margin-top: 3px; color: var(--ink); }

.status-overview { display: grid; grid-template-columns: repeat(4, minmax(150px, 1fr)); border: 1px solid var(--line); background: var(--surface); box-shadow: var(--shadow); }
.status-overview > div { padding: 14px; border-right: 1px solid var(--line); }
.status-overview > div:last-child { border-right: 0; }
.status-overview span, .status-overview strong { display: block; }
.status-overview span { color: var(--muted); font-size: 10px; text-transform: uppercase; }
.status-overview strong { margin-top: 6px; font-size: 16px; }
.safe-text { color: var(--green); }
.bridge-grid { display: grid; grid-template-columns: repeat(2, minmax(220px, 1fr)); gap: 1px; background: var(--line); }
.bridge-route { padding: 12px; background: #fff; }
.bridge-route strong { display: block; font-size: 12px; }
.bridge-route code { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; overflow-wrap: anywhere; }

.error-banner { margin-top: 12px; padding: 9px 11px; border: 1px solid #e6b7ba; background: var(--red-soft); color: #7c2930; font-size: 12px; }
.loading-layer { position: fixed; inset: 0; z-index: 100; display: grid; place-content: center; justify-items: center; gap: 8px; background: rgba(243,245,242,.94); }
.loading-layer strong { font-size: 14px; }
.loading-layer span { color: var(--muted); font-size: 11px; }
.loader { width: 30px; height: 30px; border: 3px solid var(--line); border-top-color: var(--green); border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.toast { position: fixed; right: 20px; bottom: 20px; z-index: 110; max-width: 420px; padding: 10px 12px; border-radius: 5px; background: var(--ink); color: #fff; box-shadow: 0 10px 30px rgba(0,0,0,.25); font-size: 12px; }

.modal { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; padding: 20px; background: rgba(17,25,24,.55); }
.modal-panel { width: min(860px, 100%); max-height: 90vh; overflow: auto; border-radius: 6px; background: var(--surface); box-shadow: 0 24px 70px rgba(0,0,0,.3); }
.modal-head { position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--line); background: #fff; }
.modal-head h2 { margin: 0; font-size: 16px; }
.modal-head p { margin: 3px 0 0; color: var(--muted); font-size: 11px; }
.modal-content { padding: 16px; }
.preview-grid { display: grid; grid-template-columns: 180px 1fr; border: 1px solid var(--line); }
.preview-grid dt, .preview-grid dd { margin: 0; padding: 7px 9px; border-bottom: 1px solid var(--line); }
.preview-grid dt { background: var(--surface-alt); color: var(--muted); font-size: 11px; }
.preview-grid dd { overflow-wrap: anywhere; font-size: 12px; }
.preview-code { margin-top: 12px; padding: 12px; overflow: auto; border-radius: 4px; background: #18201f; color: #dfe9e5; font: 11px/1.5 Consolas, monospace; white-space: pre-wrap; }
.preview-warning { margin-top: 12px; padding: 9px; border-left: 3px solid var(--amber); background: var(--amber-soft); color: #64400d; font-size: 11px; }
.write-confirmation { position: sticky; bottom: 0; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 16px; border-top: 1px solid var(--line-strong); background: #fff; }
.write-confirm-label { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; }
.write-command { border-color: #a7353d; background: #a7353d; color: #fff; }
.write-command:hover:not(:disabled) { border-color: #83272e; background: #83272e; }
.write-command:disabled { cursor: not-allowed; opacity: .45; }
.write-result { padding: 12px; border-left: 3px solid var(--green); background: var(--green-soft); color: #195b48; font-size: 12px; line-height: 1.45; }
.write-result.error { border-left-color: var(--red); background: var(--red-soft); color: #7c2930; }
.fx-section { margin-bottom: 12px; }
.fx-table th:first-child, .fx-table td:first-child { width: 180px; }
.fx-rate-cell { width: 180px; text-align: right !important; }
.fx-rate-input { width: 100px; height: 30px; padding: 4px 8px; border: 1px solid var(--line-strong); border-radius: 4px; text-align: right; font-variant-numeric: tabular-nums; }
.fx-rate-input:focus { border-color: var(--green); outline: 2px solid var(--green-soft); }
.details-panel { width: min(920px, 100%); }
.details-content { display: grid; gap: 10px; background: var(--surface-alt); }
.operation-card { border: 1px solid var(--line-strong); border-radius: 6px; background: #fff; overflow: hidden; }
.operation-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.operation-card-head > div { display: flex; gap: 5px; flex-wrap: wrap; justify-content: flex-end; }
.operation-card-head strong { font-size: 12px; line-height: 1.35; }
.detail-badge { display: inline-block; padding: 3px 6px; border-radius: 3px; background: var(--green-soft); color: var(--green); font-size: 10px; font-weight: 700; white-space: nowrap; }
.operation-fields { display: grid; grid-template-columns: 120px minmax(0, 1fr); margin: 0; padding: 10px 12px; font-size: 11px; line-height: 1.45; }
.operation-fields dt { color: var(--muted); }
.operation-fields dd { margin: 0; overflow-wrap: anywhere; }
.details-write-toolbar { position: sticky; top: 65px; z-index: 2; display: flex; align-items: flex-end; gap: 8px; padding: 9px 14px; border-bottom: 1px solid var(--line); background: #f8faf8; }
.details-write-toolbar .field { min-width: 150px; margin-left: auto; }
.operation-select { display: flex; align-items: center; gap: 7px; }

.stress-banner { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; padding: 10px 12px; border: 1px solid #d7b66f; background: var(--amber-soft); color: #64400d; font-size: 11px; }
.stress-banner strong { font-size: 12px; }
.overdraft-banner { border-color: #a9c9bd; background: #eef7f3; color: #164f43; }
.overdraft-monthly-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 560px), 1fr)); gap: 10px; padding: 12px; }
.overdraft-month-card { border: 1px solid var(--line); border-radius: 6px; background: #fff; overflow: hidden; }
.overdraft-month-card header,
.overdraft-month-card footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 10px; background: #f7faf8; }
.overdraft-month-card header strong { font-size: 12px; text-transform: capitalize; }
.overdraft-month-card header span,
.overdraft-month-card footer span { color: var(--muted); font-size: 10px; }
.overdraft-month-card footer strong { font-size: 11px; color: var(--green); }
.overdraft-month-card.overdraft-month-overlimit { border-color: #efb6ba; }
.overdraft-month-card.overdraft-month-overlimit footer { background: var(--red-soft); }
.overdraft-month-card.overdraft-month-overlimit footer strong { color: var(--red); }
.overdraft-bars { display: grid; gap: 8px; padding: 10px; }
.overdraft-bars div { position: relative; min-height: 34px; padding-bottom: 12px; }
.overdraft-bars span,
.overdraft-bars strong { position: relative; z-index: 1; display: block; }
.overdraft-bars span { color: var(--muted); font-size: 10px; }
.overdraft-bars strong { margin-top: 2px; font-size: 12px; font-variant-numeric: tabular-nums; }
.overdraft-bars i { position: absolute; left: 0; bottom: 0; height: 6px; min-width: 2px; border-radius: 999px; background: #4f9f7d; }
.overdraft-bars i.repay { background: #6685c1; }
.overdraft-bars i.transfer { background: #d8a73e; }
.overdraft-bars i.uncovered { background: var(--red); }
.overdraft-bars i.debt { background: #b07a2a; }
.overdraft-month-empty { padding: 14px 12px; color: var(--muted); font-size: 12px; }
.overdraft-month-end { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 10px; border-bottom: 1px solid var(--line); background: #fbfdfc; }
.overdraft-month-end div { min-width: 0; padding: 7px 8px; border: 1px solid var(--line); border-radius: 5px; background: #fff; }
.overdraft-month-end span { display: block; color: var(--muted); font-size: 10px; }
.overdraft-month-end strong { display: block; margin-top: 3px; font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.overdraft-month-end .negative strong { color: var(--red); }
.overdraft-month-end .positive strong { color: var(--green); }
.overdraft-month-sources { width: calc(100% - 20px); margin: 0 10px 10px; border-collapse: collapse; font-size: 10px; table-layout: fixed; }
.overdraft-month-sources th,
.overdraft-month-sources td { padding: 5px 4px; border-top: 1px solid var(--line); text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.overdraft-month-sources th { color: var(--muted); font-weight: 700; background: #f8fbfa; }
.overdraft-month-sources .num { text-align: right; font-variant-numeric: tabular-nums; }
.overdraft-flow-table tbody tr.overdraft-flow-draw td { background: #edf8f0; color: var(--ink); }
.overdraft-flow-table tbody tr.overdraft-flow-transfer td { background: #fff7d8; color: var(--ink); }
.overdraft-flow-table tbody tr.overdraft-flow-repay td { background: #f2f5fb; color: var(--ink); }
.overdraft-flow-table tbody tr.overdraft-warning-row td { background: var(--red-soft); color: var(--red); font-weight: 700; white-space: normal; }
.data-table tbody tr.overdraft-source-gap td { background: var(--red-soft); }
.data-table tbody tr.overdraft-source-gap td:last-child { color: var(--red); font-weight: 800; }
.stress-matrix .matrix-value { cursor: cell; }
.stress-matrix .matrix-value:hover { background: var(--blue-soft); }
.compact-modal { width: min(680px, 100%); }
.stress-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 16px; }
.stress-wide { grid-column: 1 / -1; }
.stress-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; align-items: center; gap: 8px; padding-top: 4px; }
.stress-cell-actions { padding: 12px 16px; border-top: 1px solid var(--line); background: #fff; }
.stress-import-panel { width: min(760px, 100%); }
.stress-import-form { display: grid; gap: 10px; padding: 16px; }
.stress-import-form textarea { width: 100%; min-height: 330px; resize: vertical; padding: 10px; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff; color: var(--ink); font: 12px/1.45 Consolas, monospace; }
.stress-import-form textarea:focus { border-color: var(--green); box-shadow: 0 0 0 2px var(--green-soft); outline: none; }
.import-status { min-height: 18px; color: var(--red); font-weight: 700; }
.transfer-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 16px; }
.transfer-wide { grid-column: 1 / -1; }
.transfer-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; align-items: center; gap: 8px; padding-top: 4px; }
.invoice-check { min-width: 120px; white-space: normal; }
.funds-ok { color: var(--green); font-weight: 700; }
.funds-shortage { color: var(--red); font-weight: 800; background: var(--red-soft) !important; }
.account-select { width: 180px; min-width: 160px; height: 30px; padding: 3px 5px; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff; font-size: 11px; }

.payroll-metrics, .credit-metrics { grid-template-columns: repeat(5, minmax(145px, 1fr)); }
.payroll-scroll { max-height: calc(100vh - 330px); }
.payroll-table { width: 100%; min-width: 0; table-layout: fixed; font-size: 12px; }
.payroll-table th, .payroll-table td { padding: 6px 4px; overflow: hidden; }
.payroll-table thead th { text-align: center !important; vertical-align: middle; }
.payroll-table th:first-child, .payroll-table td:first-child { position: sticky; left: 0; z-index: 2; width: 16%; min-width: 0; white-space: normal; background-color: #e0e9e4; }
.payroll-table thead th:first-child { z-index: 5; background-color: #d4e0da; color: #10251f; }
.payroll-table th:not(:first-child) { width: auto; }
.payroll-table th:nth-last-child(-n+4) { width: 7%; background: #d4e0da; color: #10251f; }
.payroll-table td:nth-last-child(-n+4) { background: #e2ebe6; }
.payroll-type-row td { border-top: 2px solid #738f83; background: #dfeae5; font-weight: 800; }
.payroll-type-row td:first-child { background: #dfeae5; }
.payroll-subgroup-row td { background: #e6efeb; font-weight: 800; }
.payroll-subgroup-row td:first-child { padding-left: 8px; background: #e6efeb; }
.payroll-position-row td { background: #edf3f0; font-weight: 800; }
.payroll-position-row td:first-child { padding-left: 13px; background: #edf3f0; }
.payroll-position-row small, .payroll-subgroup-row small, .payroll-source-toggle small { display: block; margin-top: 2px; color: var(--muted); font-size: 11px; font-weight: 500; }
.payroll-employee-row td:first-child { background: #f2f6f4; }
.payroll-employee-row td:first-child { padding-left: 25px; }
.payroll-source-row td { background: #f7f9f8; color: var(--muted); font-size: 12px; }
.payroll-source-row td:first-child { padding-left: 48px; background: #edf3f0; }
.payroll-source-toggle, .credit-toggle { display: flex; align-items: flex-start; gap: 7px; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; text-align: left; }
.payroll-source-toggle strong, .credit-toggle strong { display: block; }
.payroll-month { height: 46px; padding: 5px 3px !important; text-align: center !important; font-size: 11px; font-variant-numeric: tabular-nums; }
.payroll-month[data-payroll-detail-scope] { cursor: pointer; }
.payroll-month[data-payroll-detail-scope]:hover { outline: 2px solid rgba(0, 113, 99, 0.28); outline-offset: -2px; background: #eef8f5 !important; }
.payroll-month span { display: block; line-height: 1.35; white-space: nowrap; }
.payroll-total { text-align: center !important; font-size: 11px; font-weight: 800; font-variant-numeric: tabular-nums; }
.payroll-accrued { color: #314b6f; }
.payroll-paid { color: #167152; font-weight: 700; }
.payroll-planned { color: #8b5b0b; }
.empty-payroll-cell { color: #a7afac; text-align: center !important; }
.payroll-source-month { background: #f7f9f8 !important; }
.payroll-operations-scroll { max-height: 360px; }
.payroll-operations-table { min-width: 1320px; font-size: 13px; }
.payroll-operations-table th:nth-child(3),
.payroll-operations-table td:nth-child(3) { min-width: 120px; }
.payroll-operations-table th:nth-child(5),
.payroll-operations-table td:nth-child(5) { min-width: 310px; }
.payroll-operations-table th,
.payroll-operations-table td { text-align: center; vertical-align: middle; }
.payroll-operations-table .num { text-align: center !important; }
.payroll-inline-select { width: 100%; min-width: 150px; height: 30px; padding: 4px 6px; border: 1px solid var(--line-strong); border-radius: 4px; background: #fff; color: var(--ink); font-size: 13px; }
.payroll-draft-row td { background: #fff8df !important; }
.payroll-undefined-group td { background: #e2ebe6; color: #10251f; font-weight: 800; }
.payroll-detail-section { margin-bottom: 14px; }
.payroll-detail-section h3 { margin: 0 0 7px; font-size: 14px; }
.payroll-detail-table { min-width: 880px; font-size: 11px; }
.payroll-detail-table th { text-align: center; }

.credit-scroll { max-height: calc(100vh - 330px); }
.credit-table { min-width: 1620px; }
.credit-registry-scroll { max-height: 430px; }
.credit-registry-table { min-width: 1680px; }
.credit-registry-table td:first-child small,
.credit-registry-table td small { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; }
.credit-row td { vertical-align: middle; }
.credit-row td:first-child { min-width: 190px; }
.credit-toggle small { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; }
.credit-detail-row > td { padding: 0 !important; background: #f4f7f5; }
.credit-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 12px; }
.credit-detail-grid section { min-width: 0; border: 1px solid var(--line); background: #fff; }
.credit-detail-grid h3 { margin: 0; padding: 9px 10px; border-bottom: 1px solid var(--line); font-size: 12px; }
.credit-chart-section { overflow: hidden; }
.credit-chart-grid { display: grid; grid-template-columns: 1fr; }
.credit-chart-panel { min-width: 0; padding: 0 12px 12px; }
.credit-chart-panel + .credit-chart-panel { border-top: 1px solid var(--line); }
.credit-chart-heading { min-height: 58px; padding: 11px 4px 6px; }
.credit-chart-heading h2 { margin: 0; font-size: 13px; }
.credit-chart-heading p { margin: 3px 0 0; color: var(--muted); font-size: 10px; }
.credit-chart-panel canvas { width: 100%; height: 300px; }

.control-metrics, .sales-metrics { grid-template-columns: repeat(4, minmax(150px, 1fr)); }
.sales-chart-wrap { padding: 8px 12px 16px; }
.sales-chart-wrap canvas { width: 100%; height: 300px; }
.revenue-group-toggle { display: flex; align-items: center; gap: 6px; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; }
.revenue-leaf { display: block; padding-left: 19px; }
.group-row td { background: #e8f0ec !important; }
.sidebar-logout { display: inline-flex; align-items: center; gap: 5px; margin-left: auto; padding: 3px; border: 0; border-radius: 5px; background: transparent; color: #dce7e2; font: inherit; cursor: pointer; }
.sidebar-logout:hover, .sidebar-logout:focus-visible { background: rgba(255,255,255,.08); color: #fff; outline: none; }
.sidebar-logout svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.auth-modal { z-index: 150; background: #eef2ef; }
.auth-panel { width: min(420px, 100%); }
.auth-form, .admin-user-form { display: grid; gap: 12px; padding: 18px; }
.auth-form .command-button { justify-self: end; min-width: 140px; }
.permission-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 10px; border: 1px solid var(--line); background: #f7f9f8; }
.check-line { display: flex; align-items: center; gap: 7px; font-size: 11px; }
.china-bulk-form textarea { min-height: 76px; resize: vertical; }
.compact-table { font-size: 10px; }
.compact-table th, .compact-table td { padding: 6px 7px; }

.revenue-source-table { min-width: 760px; font-size: 10px; }
.revenue-source-table th:first-child,
.revenue-source-table td:first-child { position: sticky; left: 0; z-index: 2; min-width: 230px; text-align: left; }
.revenue-source-table thead th:first-child { z-index: 4; }
.revenue-source-table th:not(:first-child),
.revenue-source-table td:not(:first-child) { min-width: 105px; white-space: nowrap; }
.revenue-level-0 td { border-top: 2px solid #79978b; background: #dfeae5; font-weight: 800; }
.revenue-level-0 td:first-child { background: #dfeae5; }
.revenue-level-1 td { background: #eef4f1; font-weight: 700; }
.revenue-level-1 td:first-child { background: #eef4f1; }
.revenue-level-2 td:first-child { padding-left: 34px; background: #fff; }
.revenue-level-1 .revenue-level-label { padding-left: 16px; }

@media (max-width: 1050px) {
  .app-shell { grid-template-columns: 190px minmax(0, 1fr); }
  .app-shell.sidebar-collapsed { grid-template-columns: 64px minmax(0, 1fr); }
  .workspace { padding-inline: 16px; }
  .metric-strip, .metric-strip.dds-plan-metrics { grid-template-columns: repeat(3, minmax(130px, 1fr)); }
  .dds-plan-chart-grid { grid-template-columns: 1fr; }
  .dds-plan-chart-card:first-child { grid-column: auto; }
  .payroll-metrics, .credit-metrics { grid-template-columns: repeat(3, minmax(130px, 1fr)); }
  .status-overview { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 760px) {
  .app-shell { display: block; }
  .app-shell.sidebar-collapsed { display: block; }
  .sidebar { position: static; width: 100%; height: auto; padding: 10px; }
  .brand { padding-bottom: 10px; }
  .main-nav { display: flex; overflow-x: auto; margin-top: 10px; }
  .nav-item { width: auto; min-width: max-content; border-left: 0; border-bottom: 3px solid transparent; }
  .nav-item.active { border-bottom-color: #58b28e; }
  .sidebar-toggle { display: none; }
  .sidebar-collapsed .brand { justify-content: flex-start; padding: 0 0 10px; }
  .sidebar-collapsed .brand-copy { display: block; }
  .sidebar-collapsed .nav-label { position: static; width: auto; max-width: none; padding: 0; overflow: hidden; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; opacity: 1; pointer-events: auto; transform: none; }
  .sidebar-collapsed .nav-label::before { display: none; }
  .sidebar-collapsed .main-nav { margin-top: 10px; }
  .sidebar-collapsed .nav-item { justify-content: flex-start; padding-inline: 10px; }
  .sidebar-footer { display: none; }
  .workspace { padding: 0 10px 24px; }
  .topbar { min-height: 70px; }
  .source-time { display: none; }
  .metric-strip, .metric-strip.compact-metrics, .metric-strip.dds-plan-metrics { grid-template-columns: repeat(2, minmax(120px, 1fr)); }
  .china-metrics { grid-template-columns: repeat(2, minmax(120px, 1fr)); }
  .payroll-metrics, .credit-metrics { grid-template-columns: repeat(2, minmax(120px, 1fr)); }
  .control-metrics, .sales-metrics { grid-template-columns: repeat(2, minmax(120px, 1fr)); }
  .china-console-body { grid-template-columns: 1fr; }
  .china-scroll { overflow: auto; }
  .china-table { min-width: 1100px; }
  .filter-band { align-items: stretch; }
  .field { flex: 1 1 145px; }
  .status-overview { grid-template-columns: 1fr; }
  .status-overview > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .bridge-grid { grid-template-columns: 1fr; }
  .preview-grid { grid-template-columns: 1fr; }
  .write-confirmation { align-items: stretch; flex-direction: column; }
  .sticky-filter-stack { top: 70px; padding-top: 4px; }
  .details-write-toolbar { position: static; flex-wrap: wrap; }
  .details-write-toolbar .field { margin-left: 0; }
  .stress-form { grid-template-columns: 1fr; }
  .stress-wide, .stress-actions { grid-column: 1; }
  .transfer-form { grid-template-columns: 1fr; }
  .transfer-wide, .transfer-actions { grid-column: 1; }
  .operation-card-head { display: block; }
  .operation-card-head > div { justify-content: flex-start; margin-top: 7px; }
  .operation-fields { grid-template-columns: 92px minmax(0, 1fr); }
  .credit-detail-grid { grid-template-columns: 1fr; }
  .credit-chart-grid { grid-template-columns: 1fr; }
  .credit-chart-panel + .credit-chart-panel { border-left: 0; border-top: 1px solid var(--line); }
  .permission-grid { grid-template-columns: 1fr; }
}

/* The register fits the workspace; long content wraps within each payment row. */
#registerTable { table-layout: fixed; width: 100%; }
#registerTable th, #registerTable td { min-width: 0; max-width: none; white-space: normal; overflow-wrap: anywhere; padding: 7px 5px; }
#registerTable small { display: block; margin-top: 4px; font-weight: 400; }
#registerTable .register-date-input, #registerTable .account-select { width: 100%; min-width: 0; max-width: 100%; font-size: 11px; padding: 3px 1px; }
#registerTable .register-amount-input { font-weight: 700; text-align: right; appearance: textfield; }
#registerTable .register-amount-input::-webkit-inner-spin-button, #registerTable .register-amount-input::-webkit-outer-spin-button { appearance: none; margin: 0; }
#registerTable .register-currency { width: auto; min-width: 0; max-width: none; }
#registerTable .row-actions { flex-direction: column; align-items: stretch; }
#registerTable .row-actions button { padding-inline: 2px; overflow-wrap: anywhere; white-space: normal; }
#registerTable details { margin-top: 5px; font-weight: 400; }
#registerTable summary { cursor: pointer; color: var(--green); }
#registerTable .status-badge { white-space: normal; }
#registerTable .register-group td { background: #e7efea; }
#registerTable .register-group button { width: 100%; border: 0; padding: 4px; background: transparent; color: var(--ink); text-align: left; font: inherit; font-weight: 800; }
#registerTable .register-group span { margin-left: 12px; color: var(--muted); font-weight: 400; }
.register-blocks { display: flex; gap: 4px; padding: 5px; margin-bottom: 10px; border: 1px solid var(--line); background: var(--surface); }
.register-blocks [role="tab"] { min-height: 38px; padding: 8px 22px; border: 0; border-radius: 4px; background: transparent; color: var(--muted); font: inherit; font-size: 13px; font-weight: 700; }
.register-blocks [role="tab"]:hover { background: #e7efea; color: var(--ink); }
.register-blocks [role="tab"].active { background: var(--green); color: #fff; }
.register-blocks [role="tab"]:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
@media (max-width: 760px) { .register-blocks [role="tab"] { flex: 1; min-width: 0; padding-inline: 6px; } }
#page-register .register-toolbar, #page-register .register-actions, #page-register .register-totals, #page-register .page-tools, #page-register .page-tool-actions { flex-wrap: wrap; }
@media (max-width: 760px) {
  #registerTable { display: block; }
  #registerTable colgroup, #registerTable thead { display: none; }
  #registerTable tbody { display: block; }
  #registerTable tbody tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-bottom: 2px solid var(--line-strong); }
  #registerTable tbody td { display: block; }
  #registerTable tbody td::before { content: attr(data-label); display: block; color: var(--muted); font-size: 10px; margin-bottom: 4px; }
  #registerTable tbody .register-group { display: block; }
  #registerTable tbody td:last-child { grid-column: 1 / -1; }
}
