:root{--text:#14202b;--text-muted:#4b5560;--text-soft:#4b5560;--bg:#eceef0;--surface:#fff;--surface-alt:#f5f6f7;--border:#14202b24;--border-strong:#14202b38;--input-border:#14202b4d;--accent:#0b5d4a;--accent-hover:#08483a;--accent-tint:#eaf3ef;--pending:#8a5a12;--pending-tint:#f5ead9;--danger:#a23b2e;--danger-border:#a23b2e66;--danger-hover-bg:#f7eae8;--neutral-text:#14202b;--neutral-hover-bg:#14202b0f;--sidebar-bg:#14202b;--sidebar-text:#fff9;--sidebar-text-strong:#fff;--sidebar-border:#ffffff1f;--sans:"Archivo", system-ui, "Segoe UI", Roboto, sans-serif;--serif:"Archivo", system-ui, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, Consolas, monospace;font:14px/1.5 var(--sans);color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0}#root{min-height:100vh}h1,h2{margin:0;font-weight:600}.app-shell{height:100vh;display:flex;overflow:hidden}.app-shell__sidebar{background:var(--sidebar-bg);flex-direction:column;flex:none;width:236px;height:100vh;padding:20px 12px;transition:width .18s,padding .18s;display:flex;position:relative;overflow:hidden auto}.app-shell__sidebar--collapsed{width:56px;padding-left:8px;padding-right:8px}.app-shell__header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.app-shell__sidebar--collapsed .app-shell__header{justify-content:center}.app-shell__toggle{border:1px solid var(--sidebar-border);width:24px;height:24px;color:var(--sidebar-text);cursor:pointer;background:0 0;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:14px;line-height:1;display:flex}.app-shell__toggle:hover{color:var(--sidebar-text-strong);background:#ffffff14}.app-shell__logo{background:var(--surface);border-radius:4px;max-width:152px;height:auto;margin:0;padding:8px 10px;display:block}.app-shell__brand{font-family:var(--sans);color:var(--sidebar-text-strong);padding:10px 8px 4px;font-size:14px;font-weight:600;line-height:1.3}.app-shell__user-panel{border-top:1px solid var(--sidebar-border);margin-top:auto;padding:14px 8px 0}.app-shell__user-name{color:var(--sidebar-text-strong);font-size:13px;font-weight:600}.app-shell__user-role{color:var(--sidebar-text);margin-bottom:10px;font-size:11.5px}.app-shell__signout-btn{border:1px solid var(--sidebar-border);width:100%;color:var(--sidebar-text);cursor:pointer;background:0 0;border-radius:3px;padding:7px 8px;font-size:11.5px;font-weight:600}.app-shell__signout-btn:hover{color:var(--sidebar-text-strong);background:#ffffff14}.auth-screen{text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:12px;height:100vh;padding:24px;display:flex}.auth-screen__title{font-family:var(--sans);color:var(--text);font-size:22px;font-weight:700}.auth-screen__message{max-width:420px;color:var(--text-soft);font-size:14px;line-height:1.5}.auth-screen__signout-btn{border:1px solid var(--text);color:var(--text);cursor:pointer;background:0 0;border-radius:3px;padding:9px 18px;font-size:13px;font-weight:600}.auth-screen__signout-btn:hover{background:var(--text);color:var(--surface)}.app-shell__nav{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.app-shell__sidebar--collapsed .app-shell__nav{margin-top:40px}.app-shell__nav-link{color:var(--sidebar-text);white-space:nowrap;border-left:3px solid #0000;padding:9px 10px;font-size:14px;text-decoration:none;display:block}.app-shell__nav-link--collapsed{text-align:center;letter-spacing:.02em;padding:9px 4px;font-size:11px;font-weight:600}.app-shell__nav-link:hover{color:var(--sidebar-text-strong)}.app-shell__nav-link--active{border-left-color:var(--accent);color:var(--sidebar-text-strong);background:#ffffff0f;font-weight:600}.app-shell__nav-link--active:hover{color:var(--sidebar-text-strong)}.app-shell__content{background:var(--bg);flex:1;height:100vh;padding:24px 32px;overflow-y:auto}.page-header{justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.page-header__breadcrumb{color:var(--text-soft);font-size:13px}.page-header__title{font-family:var(--sans);letter-spacing:-.01em;margin-top:4px;font-size:24px;font-weight:700}.page-header__right{align-items:center;gap:16px;margin-top:4px;display:flex}.page-header__actions{align-items:center;gap:10px;display:flex}.page-header__divider{background:var(--border-strong);align-self:stretch;width:1px}.page-header__as-on-label{color:var(--text-soft);text-align:right;font-size:12px}.page-header__as-on-value{font-family:var(--mono);font-variant-numeric:tabular-nums;margin-top:4px;font-size:14px;font-weight:600}.page-placeholder{color:var(--text-muted)}.drawer-overlay{z-index:100;background:#14202b52;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:var(--surface);width:440px;max-width:100%;height:100%;box-shadow:-1px 0 0 var(--border-strong);overflow-y:auto}.drawer__header{justify-content:space-between;gap:12px;padding:26px 26px 0;display:flex}.drawer__invoice-no{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text-soft);font-size:12px}.drawer__vendor-name{font-family:var(--sans);margin-top:6px;font-size:21px;font-weight:700}.drawer__close{cursor:pointer;border:1px solid var(--input-border);background:var(--surface);width:30px;height:30px;color:var(--text);border-radius:3px;flex:none;font-size:15px}.drawer__close:hover{background:var(--text);color:var(--surface);border-color:var(--text)}.drawer__badges{border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:14px 26px 22px;display:flex}.drawer__amount{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;padding:22px 26px 0;font-size:29px;font-weight:700}.drawer__description{color:var(--text-muted);margin:7px 26px 0;font-size:13px;line-height:1.5}.drawer__grid{background:var(--border);border:1px solid var(--border);border-radius:4px;grid-template-columns:1fr 1fr;gap:1px;margin:22px 26px 0;display:grid;overflow:hidden}.drawer__grid-cell{background:var(--surface);padding:13px 15px}.drawer__grid-label{color:var(--text-soft);font-size:12px}.drawer__grid-value{font-family:var(--mono);font-variant-numeric:tabular-nums;margin-top:6px;font-size:13.5px}.drawer__ageing--overdue{color:var(--danger)}.drawer__ageing--soon{color:var(--pending)}.drawer__ageing--future,.drawer__ageing--ontime{color:var(--accent)}.drawer__section-title{color:var(--text-soft);margin:26px 26px 12px;font-size:12.5px}.drawer__record{background:var(--surface);border:1px solid var(--border);border-radius:4px;margin:0 26px;padding:0 16px}.drawer__record-row{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:11px 0;font-size:13px;display:flex}.drawer__record-row span:first-child{color:var(--text-muted)}.drawer__record-row--last{border-bottom:none}.drawer__capture-btn{text-align:center;width:calc(100% - 52px);margin:20px 26px 26px;display:block}.drawer__lock-note{color:var(--text-soft);border:1px solid var(--border);background:var(--surface-alt);border-radius:4px;margin:20px 26px 26px;padding:12px 14px;font-size:12.5px;line-height:1.5}.chips{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.chip{border:1px solid var(--input-border);background:var(--surface);color:var(--neutral-text);cursor:pointer;border-radius:3px;padding:7px 14px;font-size:13px}.chip:hover{background:var(--neutral-hover-bg)}.chip--active{background:var(--text);border-color:var(--text);color:var(--surface);font-weight:600}.chip--active:hover{background:var(--text)}.chip__hint{color:inherit;opacity:.7;font-size:11px}.btn{border:1px solid var(--input-border);background:var(--surface);cursor:pointer;color:var(--neutral-text);font-size:13px;font-family:var(--sans);border-radius:3px;padding:8px 14px}.btn:hover{background:var(--neutral-hover-bg)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--surface);padding:9px 15px;font-weight:600}.btn--primary:hover{background:var(--accent-hover)}.btn--danger{background:var(--danger);border-color:var(--danger);color:var(--surface);padding:9px 15px;font-weight:600}.btn--danger:hover{background:#7a2a20}.btn--sm{padding:4px 10px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.row-btn{cursor:pointer;white-space:nowrap;font-size:11.5px;font-family:var(--sans);border-radius:3px;padding:5px 9px}.row-btn--primary{border:1px solid var(--accent);background:var(--accent);color:var(--surface);font-weight:600}.row-btn--primary:hover{background:var(--accent-hover)}.row-btn--neutral{border:1px solid var(--input-border);background:var(--surface);color:var(--neutral-text)}.row-btn--neutral:hover{background:var(--text);color:var(--surface);border-color:var(--text)}.row-btn--danger{border:1px solid var(--danger-border);background:var(--surface);color:var(--danger)}.row-btn--danger:hover{background:var(--danger);color:var(--surface);border-color:var(--danger)}.row-btn:disabled{opacity:.5;cursor:not-allowed}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;background:var(--surface);width:100%;font-size:13px}.col-payment-date{min-width:190px}.col-payment-ref{min-width:140px}.col-payment-bank{min-width:150px}.col-remarks{min-width:200px}.col-actions{white-space:nowrap;width:1%;min-width:200px}.col-actions--single{min-width:110px}.data-table th{text-align:left;color:var(--text-soft);background:var(--surface-alt);border-bottom:1px solid var(--border-strong);white-space:nowrap;padding:13px 16px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:14px 16px;font-size:13.5px}:is(.data-table tbody tr:has(.status-pill--overdue) td:first-child,.data-table tbody tr:has(.status-pill--reject) td:first-child){border-left:3px solid var(--danger)}.data-table tbody tr:has(.status-pill--soon) td:first-child{border-left:3px solid var(--pending)}:is(.data-table tbody tr:has(.status-pill--future) td:first-child,.data-table tbody tr:has(.status-pill--ontime) td:first-child,.data-table tbody tr:has(.status-pill--insert) td:first-child){border-left:3px solid var(--accent)}.data-table tbody tr:has(.status-pill--update) td:first-child{border-left:3px solid var(--text)}.data-table td.cell-mono{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text-muted);white-space:nowrap;font-size:12.5px}.data-table td.cell-strong{min-width:180px;font-size:14.5px;font-weight:600}.data-table td.cell-description{color:var(--text-muted);white-space:normal;min-width:280px;max-width:360px;line-height:1.4}.data-table td.cell-amount{color:var(--text);font-weight:600}.data-table td.cell-ageing{font-size:14px;font-weight:600}.data-table td.cell-ageing--overdue{color:var(--danger)}.data-table td.cell-ageing--soon{color:var(--pending)}.data-table td.cell-ageing--future{color:var(--accent)}.row--clickable{cursor:pointer}.row--clickable:hover{background:var(--surface-alt)}.row--warning{background:var(--pending-tint)}.actions-cell{white-space:nowrap;gap:8px;display:flex}.empty-state{color:var(--text-muted);font-family:var(--sans);padding:24px 0;font-size:16px}.status-pill{white-space:nowrap;align-items:center;gap:7px;font-size:13px;font-weight:600;display:inline-flex}.status-pill:before{content:"";background:currentColor;border-radius:2px;flex:none;width:7px;height:7px}.status-pill--overdue,.status-pill--reject{color:var(--danger)}.status-pill--soon{color:var(--pending)}.status-pill--future,.status-pill--ontime,.status-pill--insert{color:var(--accent)}.status-pill--update{color:var(--text)}.status-pill--neutral{color:var(--text-soft)}.inline-payment{flex-wrap:nowrap;align-items:center;gap:6px;display:flex}.inline-payment input,.inline-payment__ref,.inline-payment__bank{font-family:var(--mono);font-variant-numeric:tabular-nums;border:1px solid var(--input-border);background:var(--surface);border-radius:3px;outline:none;padding:5px 6px;font-size:12px}.inline-payment input[type=date]{width:128px}.inline-payment__ref{width:100%;max-width:150px}.inline-payment__bank{width:100%;max-width:150px;font-family:var(--sans)}.inline-payment--placeholder{color:var(--text-soft);font-family:var(--mono);font-size:12px}.remarks-cell input{border:1px solid var(--input-border);background:var(--surface);border-radius:3px;outline:none;width:160px;padding:6px 8px;font-size:13px}.remarks-cell--readonly{width:160px;color:var(--neutral-text);padding:6px 8px;font-size:13px}.remarks-cell__status{color:var(--text-muted);font-size:11px;display:block}.form-error{background:var(--danger-hover-bg);color:var(--danger);border-radius:4px;margin-bottom:12px;padding:8px 12px;font-size:13px}.form-error--sm{background:0 0;padding:2px 0;font-size:11px}.field{margin-bottom:12px;display:block}.field span{color:var(--text-muted);margin-bottom:4px;font-size:12px;display:block}.field input,.field select{border:1px solid var(--input-border);background:var(--surface);border-radius:3px;outline:none;width:100%;padding:8px 11px;font-size:13px}.field input:focus,.field select:focus{border-color:var(--accent)}.modal-overlay{z-index:200;background:#14202b52;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:4px;width:440px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);padding:22px 24px;overflow-y:auto}.modal__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:14px;display:flex}.modal__header h2{font-family:var(--sans);font-size:19px;font-weight:700}.modal__footer{justify-content:flex-end;gap:10px;margin-top:16px;display:flex}.summary-row{flex-wrap:wrap;gap:12px;margin-bottom:20px;display:flex}.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:4px;min-width:130px;padding:12px 16px}.summary-card__label{color:var(--text-soft);font-size:12px}.summary-card__value{font-family:var(--mono);font-variant-numeric:tabular-nums;margin-top:4px;font-size:18px;font-weight:700}.drop-zone{border:2px dashed var(--input-border);text-align:center;color:var(--text-muted);cursor:pointer;background:var(--surface);border-radius:4px;margin-bottom:16px;padding:32px}.drop-zone--active{border-color:var(--accent);background:var(--accent-tint)}.import-actions{margin:16px 0}.warning-banner{background:var(--pending-tint);color:var(--pending);border-radius:4px;margin-bottom:12px;padding:10px 14px;font-size:13px}.warning-banner ul{margin:6px 0 0;padding-left:20px}.preview-summary{color:var(--text-muted);margin-bottom:10px;font-size:13px}.busy-state{color:var(--text-muted);flex-direction:column;align-items:center;gap:16px;padding:60px 0;display:flex}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.done-summary h2{font-family:var(--sans);font-size:21px;font-weight:700}.done-summary__actions{gap:10px;margin-top:16px;display:flex}.audit-log-table{table-layout:fixed}.audit-log-table th:first-child,.audit-log-table td:first-child{width:190px}.audit-log-table th:nth-child(2),.audit-log-table td:nth-child(2){width:130px}.audit-log-table th:nth-child(3),.audit-log-table td:nth-child(3){width:150px}.audit-log-table th:nth-child(4),.audit-log-table td:nth-child(4){width:160px}.audit-log-table td:nth-child(4){white-space:normal;word-break:break-word}.audit-log-table th:nth-child(5),.audit-log-table td:nth-child(5){width:auto}.audit-entry__changes ul{margin:0;padding-left:18px;font-size:13px}.audit-entry__changes li{padding:2px 0}.search-box{font:inherit;border:1px solid var(--input-border);background:var(--surface);height:38px;color:var(--text);border-radius:3px;min-width:240px;padding:0 12px}.export-button{align-items:center;height:38px;padding:0 15px;display:inline-flex}.search-box:focus{border-color:var(--accent);outline:none}.toast{background:var(--text);color:var(--surface);z-index:100;border-radius:4px;padding:10px 20px;font-size:13.5px;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:4px;margin-bottom:20px;padding:18px 20px}.panel h2{font-family:var(--sans);margin-bottom:12px;font-size:16px;font-weight:700}.panel__header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.panel__header h2{margin-bottom:0}.panel__subtitle{color:var(--text-soft);margin-top:-6px;margin-bottom:12px;font-size:12.5px}.text-soft{color:var(--text-soft)}.fund-position__grid{grid-template-columns:minmax(340px,1fr) minmax(0,1.6fr);align-items:start;gap:26px;display:grid}@media (width<=900px){.fund-position__grid{grid-template-columns:1fr}}.cash-position__ageing-grid{grid-template-columns:minmax(320px,1fr) minmax(0,1.6fr);align-items:start;gap:26px;display:grid}@media (width<=900px){.cash-position__ageing-grid{grid-template-columns:1fr}}.fund-position__summary{border:1px solid var(--border);border-radius:4px;overflow:hidden}.fund-position__table{border-collapse:collapse;width:100%}.fund-position__table td{color:var(--neutral-text);border-bottom:1px solid var(--border);padding:14px 18px;font-size:13px}.fund-position__table tr:last-child td{border-bottom:none}.fund-position__amount-cell{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:15px}.fund-position__amount-cell--danger{color:var(--danger)}.fund-position__amount-cell--big{letter-spacing:-.02em;font-size:30px;font-weight:700}.fund-position__row--highlight.is-surplus{background:var(--accent-tint);color:var(--accent)}.fund-position__row--highlight.is-shortfall{background:var(--danger-hover-bg);color:var(--danger)}.fund-position__tag-row{align-items:center;gap:9px;display:flex}.fund-position__dot{background:currentColor;border-radius:2px;flex:none;width:8px;height:8px}.fund-position__tag-label{color:currentColor;font-size:12px;font-weight:600}.fund-position__note{color:var(--text-muted);margin-top:7px;font-size:12px}.fund-position__banks{border:1px solid var(--border);border-radius:4px;overflow:hidden}.fund-position__banks-header{background:var(--surface-alt);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.fund-position__banks-title{color:var(--text-soft);font-size:12px}.fund-position__banks .data-table{table-layout:auto;font-size:11px}.fund-position__banks .data-table th{white-space:normal;word-break:break-word;padding:8px 12px}.fund-position__banks .data-table td{padding:11px 12px}.fund-position__banks .data-table td.cell-strong{white-space:nowrap;font-size:12px}.fund-position__banks .data-table td.cell-mono{white-space:nowrap;font-size:11px}.fund-position__banks .data-table th.col-remarks,.fund-position__banks .data-table td.col-remarks{min-width:0}.fund-position__banks .data-table .col-remarks__text{text-overflow:ellipsis;white-space:nowrap;cursor:default;width:80px;display:block;overflow:hidden}.fund-position__banks .data-table th.col-actions,.fund-position__banks .data-table td.col-actions{white-space:nowrap;min-width:0}.fund-position__banks .table-scroll{scrollbar-width:thin;max-height:420px;overflow:auto}.fund-position__banks .table-scroll::-webkit-scrollbar{height:8px}.fund-position__banks .table-scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}.fund-position__banks .data-table thead th{z-index:1;position:sticky;top:0}.fund-position__banks-total td{background:var(--surface-alt);white-space:nowrap;border-bottom:none;padding:11px 16px;font-size:12px;font-weight:600;position:sticky;bottom:0}.btn--outline-accent{border-color:var(--accent);color:var(--accent);background:var(--surface)}.btn--outline-accent:hover{background:var(--accent-tint)}.commitment-cards{border:1px solid var(--border);border-radius:4px;margin-bottom:22px;display:flex;overflow:hidden}.commitment-card{text-align:left;font:inherit;color:inherit;cursor:pointer;background:var(--surface);border:none;border-right:1px solid var(--border);flex:1;padding:16px 20px}.commitment-card:last-child{border-right:none}.commitment-card:hover,.commitment-card--overdue{background:var(--surface-alt)}.commitment-card__tag{color:var(--text-soft);align-items:center;gap:8px;margin-bottom:10px;font-size:12px;display:flex}.commitment-card__dot{border-radius:2px;flex:none;width:8px;height:8px}.commitment-card--overdue .commitment-card__dot{background:var(--danger)}.commitment-card--dueSoon .commitment-card__dot{background:var(--pending)}.commitment-card--due30 .commitment-card__dot{background:var(--accent)}.commitment-card__amount{font-family:var(--mono);font-variant-numeric:tabular-nums;margin-bottom:6px;font-size:26px;font-weight:700}.commitment-card--overdue .commitment-card__amount{color:var(--danger)}.commitment-card--dueSoon .commitment-card__amount{color:var(--pending)}.commitment-card--due30 .commitment-card__amount{color:var(--accent)}.commitment-card__note{color:var(--text-muted);font-size:12.5px}.commitment-outflow__label{color:var(--text-soft);margin-bottom:10px;font-size:12px}@media (width<=640px){.commitment-cards{flex-direction:column}.commitment-card{border-right:none;border-bottom:1px solid var(--border)}.commitment-card:last-child{border-bottom:none}}.outflow-chart-wrap{position:relative}.outflow-chart__axis-max{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text-soft);font-size:11px;position:absolute;top:0;left:0}.outflow-chart{border-bottom:1px solid var(--border);align-items:flex-end;gap:6px;height:140px;padding-top:22px;display:flex}.outflow-chart__bar-wrap{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;height:100%;display:flex}.outflow-chart__bar{border-radius:2px 2px 0 0;width:100%;min-height:2px}.outflow-chart__bar--soon{background:var(--pending)}.outflow-chart__bar--future{background:var(--accent)}.outflow-chart__bar--nil{background:var(--border-strong)}.outflow-chart__day{color:var(--text-soft);white-space:nowrap;margin-top:6px;font-size:10px}.row--total td{border-top:2px solid var(--border-strong);font-weight:700}.ageing-summary-table__tag{align-items:center;gap:9px;display:inline-flex}.ageing-summary-table__dot{border-radius:2px;flex:none;width:8px;height:8px}.ageing-summary-table__tag--overdue .ageing-summary-table__dot{background:var(--danger)}.ageing-summary-table__tag--soon .ageing-summary-table__dot{background:var(--pending)}.ageing-summary-table__tag--future .ageing-summary-table__dot{background:var(--accent)}.most-aged__vendor-code{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text-soft);margin-top:2px;font-size:11px;font-weight:400}.most-aged__scroll{height:420px;overflow:hidden auto}.most-aged .data-table thead th{z-index:1;position:sticky;top:0}
