:root{--bg:#f4f6fb;--surface:#fff;--surface-2:#f8fafc;--border:#e4e8f0;--text:#1b2436;--muted:#6b7690;--primary:#2f6bff;--primary-ink:#fff;--primary-soft:#eaf1ff;--success:#12a150;--danger:#e5484d;--warning:#d9840a;--radius:12px;--shadow:0 1px 2px #141e3c0f, 0 8px 24px #141e3c0f;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#0e1220;--surface:#161c2d;--surface-2:#1c2438;--border:#273049;--text:#eaeef7;--muted:#93a0bd;--primary:#4b82ff;--primary-soft:#1a2540;--shadow:0 1px 2px #0006, 0 8px 24px #0000004d}}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:700}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--muted);font-size:13px;font-weight:600}.input{width:100%;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;outline:none;padding:12px 14px;font-size:15px;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.btn{width:100%;color:var(--primary-ink);background:var(--primary);cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:12px 16px;font-size:15px;font-weight:600;transition:filter .15s,opacity .15s;display:inline-flex}.btn:hover{filter:brightness(1.05)}.btn:disabled{opacity:.6;cursor:default}.btn.ghost{color:var(--primary);border:1px solid var(--border);background:0 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.auth-screen{place-items:center;min-height:100%;padding:24px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:400px;box-shadow:var(--shadow);border-radius:16px;padding:28px 26px}.auth-brand{align-items:center;gap:10px;margin-bottom:20px;display:flex}.auth-logo{background:var(--primary);color:#fff;border-radius:11px;place-items:center;width:40px;height:40px;font-weight:800;display:grid}.auth-title{font-size:20px}.auth-sub{color:var(--muted);margin-top:2px;font-size:13px}.auth-foot{text-align:center;color:var(--muted);margin-top:18px;font-size:14px}.alert{border-radius:10px;margin-bottom:14px;padding:10px 12px;font-size:14px}.alert.error{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 30%, transparent)}.row-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=380px){.row-2{grid-template-columns:1fr}}.center-loader{min-height:100%;color:var(--muted);place-items:center;display:grid}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:26px;height:26px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.pill{background:var(--primary-soft);color:var(--primary);border-radius:999px;padding:3px 9px;font-size:12px;font-weight:600}.app{min-height:100%;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:240px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0}.brand-row{align-items:center;gap:10px;padding:4px 8px 16px;display:flex}.tenant-brand{flex-direction:column;min-width:0;display:flex}.tenant-brand b{font-size:14px}.tenant-brand small{color:var(--muted);font-size:11px}.nav-link{color:var(--muted);border-radius:10px;align-items:center;gap:12px;margin-bottom:2px;padding:10px 12px;font-size:14px;font-weight:600;display:flex}.nav-link:hover{background:var(--surface-2);text-decoration:none}.nav-link.active{background:var(--primary-soft);color:var(--primary)}.nav-ico{text-align:center;width:20px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 18px;display:flex;position:sticky;top:0}.search{flex:1;max-width:460px;margin:0}.search .input{padding:9px 12px;font-size:14px}.top-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.icon-btn{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:10px;place-items:center;width:40px;height:40px;font-size:17px;display:grid;position:relative}.badge{background:var(--danger);color:#fff;border-radius:9px;place-items:center;min-width:17px;height:17px;padding:0 4px;font-size:10px;font-weight:700;display:grid;position:absolute;top:-5px;right:-5px}.chip{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:600}.chip.warn{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 35%, transparent);background:color-mix(in srgb, var(--warning) 12%, transparent)}.quick-actions{background:var(--surface);border-bottom:1px solid var(--border);gap:10px;padding:12px 18px;display:flex;overflow-x:auto}.qa-btn{white-space:nowrap;border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:9px 14px;font-size:13px;font-weight:600;display:inline-flex}.qa-btn.primary{background:var(--primary);color:#fff;border-color:#0000}.content{width:100%;max-width:1100px;margin:0 auto;padding:18px}.page-ph{padding:8px}.page-ph h1{margin-bottom:6px;font-size:22px}.page-ph p{color:var(--muted)}.dash-title{margin-bottom:16px;font-size:22px}.stat-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px;display:grid}@media (width>=720px){.stat-grid{grid-template-columns:repeat(4,1fr)}}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);text-align:left;padding:14px 16px}.stat-card.clickable{cursor:pointer;transition:transform .1s,box-shadow .1s}.stat-card.clickable:hover{transform:translateY(-1px);box-shadow:0 8px 24px #141e3c1a}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:700}.stat-value{letter-spacing:-.02em;margin-top:6px;font-size:24px;font-weight:800}.tone-primary{color:var(--primary)}.tone-success{color:var(--success)}.tone-warning{color:var(--warning)}.stat-sub{color:var(--muted);margin-top:2px;font-size:12px}.stat-error{color:var(--danger);margin-top:8px;font-size:14px;font-weight:600}.dash-sections{grid-template-columns:1fr;gap:12px;margin-bottom:16px;display:grid}@media (width>=720px){.dash-sections{grid-template-columns:repeat(2,1fr)}}@media (width>=980px){.dash-sections.cols-3{grid-template-columns:repeat(3,1fr)}}.section-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);text-align:left;color:var(--text);padding:16px;font-family:inherit}.section-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.section-head h2{font-size:15px}.muted-sm{color:var(--muted);font-size:12px}.buckets{gap:10px;display:grid}.bucket{text-align:left;cursor:pointer;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-family:inherit}.bucket:hover{border-color:var(--primary)}.bucket-top{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.bucket-lbl{font-size:13px;font-weight:600}.bar{background:var(--border);border-radius:99px;height:7px;margin-bottom:5px;overflow:hidden}.bar-fill{background:var(--primary);border-radius:99px;height:100%;transition:width .3s}.risk-row{gap:10px;display:flex}.risk-pill{text-align:center;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;flex:1;padding:12px 8px;font-family:inherit}button.risk-pill{cursor:pointer}.risk-pill b{font-size:22px;font-weight:800;display:block}.risk-pill span{color:var(--muted);font-size:11px;font-weight:600}.risk-pill.high b{color:var(--warning)}.risk-pill.critical b{color:var(--danger)}.collector-list{gap:8px;display:grid}.collector-row{text-align:left;cursor:pointer;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;display:flex}.collector-row:hover{border-color:var(--primary)}.collector-row .amount{color:var(--success);white-space:nowrap;font-weight:800}.quick-collect{cursor:pointer;align-items:center;gap:14px;display:flex}.qc-icon{background:var(--primary);color:#fff;border-radius:12px;flex-shrink:0;place-items:center;width:44px;height:44px;font-size:22px;font-weight:800;display:grid}.skeleton{background:linear-gradient(90deg, var(--surface-2) 25%, var(--border) 37%, var(--surface-2) 63%);background-size:400% 100%;border-radius:8px;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.skeleton-value{width:70%;height:28px;margin-top:8px}.widget-error{color:var(--danger);padding:8px 0;font-size:13px;font-weight:600}.bottom-nav{display:none}@media (width<=900px){.sidebar,.search{display:none}.content{padding-bottom:84px}.bottom-nav{z-index:20;background:var(--surface);border-top:1px solid var(--border);justify-content:space-around;padding:6px 4px;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-link{color:var(--muted);border-radius:8px;flex-direction:column;align-items:center;gap:2px;padding:4px 8px;font-size:10px;font-weight:600;display:flex}.bottom-link:hover{text-decoration:none}.bottom-link.active{color:var(--primary)}.more-btn{cursor:pointer;font:inherit;background:0 0;border:none;font-weight:600}}.more-sheet-backdrop{z-index:25;background:#00000059;position:fixed;inset:0}.more-sheet{z-index:26;background:var(--surface);border-top:1px solid var(--border);border-radius:16px 16px 0 0;padding:8px;position:fixed;bottom:62px;left:0;right:0;box-shadow:0 -10px 28px #00000038}.more-item{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:12px;padding:14px 16px;font-size:15px;font-weight:600;display:flex}.more-item:hover{background:var(--bg);text-decoration:none}.more-item.active{color:var(--primary)}.more-signout,.tone-danger{color:var(--danger)}.cust-page{flex-direction:column;gap:16px;display:flex}.page-head{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.page-head .muted-sm{margin-top:2px;display:block}.btn-inline{width:auto;padding:9px 14px;font-size:14px}.cust-toolbar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.search-wrap{flex:1;min-width:220px;position:relative}.search-icon{color:var(--muted);pointer-events:none;font-size:18px;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search-input{padding-left:36px}.search-spin{border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.active-toggle{color:var(--muted);cursor:pointer;align-items:center;gap:6px;font-size:14px;display:flex}.cust-list{flex-direction:column;gap:8px;display:flex}.cust-row{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;grid-template-columns:1fr auto auto;align-items:center;gap:14px;width:100%;padding:12px 14px;transition:border-color .15s,transform 50ms;display:grid}.cust-row:hover{border-color:var(--primary)}.cust-row:active{transform:scale(.997)}.cust-row.is-optimistic{opacity:.55}.cust-name{align-items:center;gap:8px;font-weight:700;display:flex}.cust-sub{color:var(--muted);margin-top:2px;font-size:13px}.cust-meta{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.cust-loans{color:var(--muted);font-size:12px}.cust-money{text-align:right;min-width:110px}.cust-out{font-weight:700}.cust-paid{color:var(--muted);margin-top:2px;font-size:12px}@media (width<=560px){.cust-row{grid-template-columns:1fr auto}.cust-money{border-top:1px dashed var(--border);grid-column:1/-1;justify-content:space-between;margin-top:2px;padding-top:8px;display:flex}.cust-paid{margin-top:0}}.risk-badge{white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.risk-low{background:color-mix(in srgb, var(--success) 15%, transparent);color:var(--success)}.risk-medium{background:color-mix(in srgb, var(--warning) 16%, transparent);color:var(--warning)}.risk-high{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger)}.risk-critical{background:var(--danger);color:#fff}.tag{background:var(--surface-2);color:var(--muted);border-radius:6px;padding:2px 8px;font-size:11px;font-weight:700}.tag-muted{background:var(--surface-2);color:var(--muted)}.empty-state{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:12px;padding:40px 20px;display:flex}.field-error{color:var(--danger);font-size:12px;font-weight:600}.modal-backdrop{z-index:40;background:#0a101e80;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{width:100%;max-width:460px;max-height:92vh;padding:22px;overflow-y:auto}.modal-head{margin-bottom:14px}.form-section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:6px 0 10px;font-size:12px;font-weight:700}.form-actions{gap:10px;margin-top:8px;display:flex}.form-actions .btn{flex:1}.switch-row{align-items:center;gap:8px;padding-top:4px;font-weight:600;display:flex}.detail-top .back-link{color:var(--muted);font-size:14px}.detail-header{justify-content:space-between;align-items:flex-start;gap:14px;padding:18px;display:flex}.dh-name{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.dh-name h1{font-size:22px}.dh-actions{flex-shrink:0;gap:8px;display:flex}.danger-ghost{color:var(--danger)}.quick-row{flex-wrap:wrap;gap:8px;display:flex}.quick-chip{background:var(--primary-soft);color:var(--primary);cursor:pointer;border:1px solid #0000;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600}.quick-chip:hover{border-color:var(--primary)}.tabs{border-bottom:1px solid var(--border);gap:4px;display:flex;overflow-x:auto}.tab{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 16px;font-size:14px;font-weight:600}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.detail-grid{grid-template-columns:1fr;gap:14px;display:grid}@media (width>=760px){.detail-grid{grid-template-columns:1fr 1fr}}.kv{grid-template-columns:auto 1fr;gap:8px 16px;margin:8px 0 0;display:grid}.kv dt{color:var(--muted);font-size:13px}.kv dd{margin:0;font-size:14px;font-weight:600}.mini-stats{grid-template-columns:1fr 1fr;gap:12px;margin-top:10px;display:grid}.mini-stat-val{margin-top:2px;font-size:18px;font-weight:700}.kyc-line{margin-top:12px}.loan-list{flex-direction:column;gap:10px;display:flex}.loan-card{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;width:100%;padding:14px}.loan-card:hover{border-color:var(--primary)}.loan-top{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.loan-figures{justify-content:space-between;margin-top:8px;font-size:14px;font-weight:600;display:flex}.timeline{margin:8px 0 0;padding:0 0 0 6px;list-style:none}.tl-item{border-left:2px solid var(--border);padding:0 0 18px 22px;position:relative}.tl-item:last-child{border-left-color:#0000}.tl-dot{background:var(--muted);border:2px solid var(--surface);border-radius:50%;width:12px;height:12px;position:absolute;top:2px;left:-7px}.tl-paid .tl-dot{background:var(--success)}.tl-missed .tl-dot{background:var(--danger)}.tl-opened .tl-dot{background:var(--primary)}.tl-settled .tl-dot,.tl-closed .tl-dot{background:var(--success)}.tl-defaulted .tl-dot{background:var(--danger)}.tl-text{font-size:14px;font-weight:600}.receipt-list{flex-direction:column;gap:8px;display:flex}.receipt-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.receipt-row b{margin-right:8px}.receipt-row .tag{vertical-align:middle}.receipt-amt{font-weight:700}.filter-bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.sel{width:auto;min-width:130px;padding:9px 12px}.table-scroll{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:640px;font-size:14px}.data-table th,.data-table td{text-align:left;white-space:nowrap;padding:10px 12px}.data-table thead th{color:var(--muted);border-bottom:1px solid var(--border);background:var(--surface-2);font-size:12px;font-weight:700}.data-table tbody tr{border-bottom:1px solid var(--border)}.data-table tbody tr:last-child{border-bottom:none}.data-table td.num,.data-table th.num{text-align:right;font-variant-numeric:tabular-nums}.data-table .cell-strong{font-weight:700}.row-click{cursor:pointer}.row-click:hover{background:var(--surface-2)}.data-table .tag+.tag{margin-left:6px}.preview-panel{background:var(--primary-soft);border:1px solid var(--border);border-radius:10px;margin:4px 0 14px;padding:12px 14px}.preview-grid{grid-template-columns:1fr 1fr;gap:10px 16px;margin-bottom:6px;display:grid}.preview-grid>div{flex-direction:column;display:flex}.preview-grid span{color:var(--muted);font-size:12px}.preview-grid b{font-size:16px}.mini-stats-4{grid-template-columns:repeat(2,1fr)}@media (width>=640px){.mini-stats-4{grid-template-columns:repeat(4,1fr)}}.sched-legend{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:10px;display:flex}.sc-dot{vertical-align:middle;border-radius:3px;width:10px;height:10px;margin:0 4px 0 8px;display:inline-block}.sched-grid{flex-wrap:wrap;gap:4px;display:flex}.sched-cell{border:1px solid var(--border);border-radius:6px;place-items:center;width:30px;height:30px;font-size:11px;font-weight:600;display:grid}.sc-paid{background:color-mix(in srgb, var(--success) 22%, transparent);color:var(--success);border-color:#0000}.sc-late{background:color-mix(in srgb, var(--danger) 18%, transparent);color:var(--danger);border-color:#0000}.sc-upcoming{background:var(--surface-2);color:var(--muted)}.receipt-print{text-align:center;padding:8px 0 4px}.rp-no{letter-spacing:.02em;font-size:20px;font-weight:800}.rp-type{margin:6px 0 12px;display:inline-block}.receipt-print .kv{text-align:left;grid-template-columns:1fr 1fr;max-width:240px;margin:0 auto}.alert.ok{background:color-mix(in srgb, var(--success) 12%, transparent);color:var(--success);border:1px solid color-mix(in srgb, var(--success) 30%, transparent)}.collect-input{text-align:right;width:96px;padding:8px 10px}.link-cell{cursor:pointer;color:var(--primary)}.link-cell:hover{text-decoration:underline}.collect-bar{z-index:10;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:12px;margin-top:4px;padding:12px 16px;display:flex;position:sticky;bottom:0}.collect-bar .btn-inline{min-width:140px}@media (width<=640px){.content{padding-bottom:140px}}.report-actions{justify-content:flex-end;margin-bottom:8px;display:flex}.date-lbl{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:flex}.row-actions{white-space:nowrap;justify-content:flex-end;gap:6px;display:flex}.msg-cell{white-space:normal;max-width:320px;color:var(--muted);font-size:13px}.settings-sections{grid-template-columns:1fr;gap:14px;display:grid}@media (width>=820px){.settings-sections{grid-template-columns:1fr 1fr}}.settings-grid{grid-template-columns:1fr;gap:4px 14px;margin-top:8px;display:grid}@media (width>=480px){.settings-grid{grid-template-columns:1fr 1fr}}.lang-switch{justify-content:center;gap:8px;margin-top:16px;display:flex}.lang-chip{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:999px;padding:6px 16px;font-size:14px;transition:background .15s,border-color .15s,color .15s}.lang-chip:hover{border-color:var(--primary)}.lang-chip.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
