@keyframes ldPulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(34,197,94,.4);}50%{transform:scale(1.08);box-shadow:0 0 0 10px rgba(34,197,94,0);}}
@keyframes ldDot{0%,100%{opacity:.3;transform:translateY(0);}50%{opacity:1;transform:translateY(-5px);}}

/* ── Finance Module ─────────────────────────────────────────── */
.fin-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px;}
.fin-kpi{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px 16px;display:flex;align-items:center;gap:12px;}
.fin-kpi-ico{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
.fin-kpi-val{font-size:18px;font-weight:700;color:#111827;line-height:1.1;}
.fin-kpi-lbl{font-size:10.5px;color:#9ca3af;margin-top:2px;}
.fin-toolbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:10px 14px;}
.fin-tbl-wrap{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow-x:auto;}
.fin-tbl{width:100%;border-collapse:collapse;min-width:900px;}
.fin-tbl thead th{position:sticky;top:0;z-index:4;background:#f8fafc;border-bottom:2px solid #e5e7eb;text-align:right;padding:9px 12px;font-size:11.5px;color:#6b7280;font-weight:700;white-space:nowrap;}
.fin-tbl tbody tr{transition:background .08s;cursor:pointer;}
.fin-tbl tbody tr:hover td{background:#f0fdf4;}
.fin-tbl tbody tr.tr-bounced td{background:#fff7ed;}
.fin-tbl tbody tr.tr-bounced:hover td{background:#ffedd5;}
.fin-tbl td{padding:9px 12px;border-top:1px solid #f3f4f6;font-size:12.5px;color:#374151;vertical-align:middle;}
/* expandable sub-row */
.fin-sub-row{display:none;background:#fffbeb;}
.fin-sub-row.open{display:table-row;}
.fin-sub-cell{padding:12px 16px 14px 16px;border-top:1px dashed #fed7aa;}
.fin-sub-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:10px;}
.fin-sub-inp{padding:6px 10px;border:1px solid #e5e7eb;border-radius:7px;font-size:12px;width:100%;outline:none;}
.fin-sub-inp:focus{border-color:#f97316;}
.fin-sub-save{padding:6px 16px;background:#f97316;color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;}
.fin-sub-save:hover{background:#ea6c00;}
/* payType badge */
.ptbadge-cash{background:#dcfce7;color:#15803d;border-radius:5px;padding:2px 8px;font-size:11px;font-weight:600;}
.ptbadge-chq{background:#dbeafe;color:#1e40af;border-radius:5px;padding:2px 8px;font-size:11px;font-weight:600;}
/* status badge */
.stbadge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600;}
.stbadge-reg{background:#f3f4f6;color:#374151;}
.stbadge-flow{background:#dbeafe;color:#1d4ed8;}
.stbadge-coll{background:#dcfce7;color:#15803d;}
.stbadge-bnc{background:#fee2e2;color:#b91c1c;}
.stbadge-ret{background:#fef9c3;color:#92400e;}
/* modal rep search */
.rep-srch-wrap{position:relative;}
.rep-srch-drop{position:absolute;top:100%;right:0;left:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 8px 20px rgba(0,0,0,.1);z-index:500;max-height:180px;overflow-y:auto;display:none;}
.rep-srch-drop.open{display:block;}
.rep-srch-item{padding:8px 12px;font-size:12.5px;cursor:pointer;transition:background .1s;}
.rep-srch-item:hover{background:#f0fdf4;}
/* bounced sub-section in modal */
.bnc-section{background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;padding:14px;margin-top:10px;display:none;}
.bnc-section.open{display:block;}
