.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--color-overlay);animation:modal-overlay-in .15s ease}.modal-dialog{display:flex;flex-direction:column;width:100%;max-width:440px;max-height:calc(100vh - 40px);overflow:hidden;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);animation:modal-dialog-in .18s ease}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;border-bottom:1px solid var(--color-border-soft)}.modal-title{margin:0;font-size:17px;font-weight:700;letter-spacing:-.01em}.modal-close{flex-shrink:0;padding:4px 6px;border:none;border-radius:6px;background:transparent;color:var(--color-text-faint);font-size:16px;line-height:1;cursor:pointer}.modal-close:hover{background:var(--color-surface-sunken);color:var(--color-text)}.modal-body{padding:20px;overflow-y:auto}.modal-form{display:flex;flex-direction:column;gap:14px}.modal-form .primary-button{width:100%;margin-top:4px;padding:10px}@keyframes modal-overlay-in{0%{opacity:0}}@keyframes modal-dialog-in{0%{opacity:0;transform:translateY(10px) scale(.98)}}:root{--color-bg: oklch(98% .006 80);--color-surface: #ffffff;--color-border: oklch(90% .005 80);--color-border-soft: oklch(94% .004 80);--color-text: oklch(22% .01 80);--color-text-muted: oklch(52% .02 80);--color-text-faint: oklch(60% .01 80);--color-accent: oklch(58% .13 150);--color-accent-soft-bg: oklch(93% .05 150);--color-accent-soft-text: oklch(38% .1 150);--color-danger: oklch(55% .15 35);--color-danger-soft-bg: oklch(93% .06 40);--color-danger-soft-text: oklch(45% .15 35);--color-warning-bg: oklch(96% .03 70);--color-warning-border: oklch(80% .08 70);--color-warning-text: oklch(38% .1 50);--color-interest: oklch(50% .1 230);--color-accent-hover: oklch(48% .13 150);--color-positive: oklch(45% .13 150);--color-status-active: var(--color-accent);--color-status-overdue: var(--color-danger);--color-status-paid: var(--color-border);--color-surface-sunken: oklch(98% .004 80);--color-surface-muted: oklch(97% .004 80);--color-row-alt: oklch(98.5% .003 80);--color-overlay: oklch(22% .01 80 / .5);--shadow-modal: 0 24px 60px -20px oklch(22% .01 80 / .45);--radius-md: 10px;--radius-lg: 14px}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:-apple-system,Helvetica Neue,Helvetica,Arial,sans-serif}a{color:var(--color-accent)}a:hover{color:var(--color-accent-hover)}.app-shell{min-height:100vh;padding:40px 48px 80px}.content-width{max-width:1180px;margin:0 auto}.app-header{position:sticky;top:0;z-index:20;background:var(--color-bg);padding:12px 0;border-bottom:1px solid var(--color-border-soft)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.kpi-card{padding:20px}.kpi-label{font-size:13px;color:var(--color-text-muted);font-weight:600}.kpi-value{font-size:28px;font-weight:700;margin-top:8px;font-variant-numeric:tabular-nums}.kpi-card--accent{background:var(--color-accent)}.kpi-card--accent .kpi-label{color:#ffffffd9}.kpi-card--accent .kpi-value{color:#fff}.kpi-card--danger{background:var(--color-danger);border-color:var(--color-danger)}.kpi-card--danger .kpi-label{color:#ffffffd9}.kpi-card--danger .kpi-value{color:#fff}.section-title{font-size:18px;font-weight:700;margin:0 0 14px}table.loans-table{width:100%;border-collapse:collapse;font-size:14px}table.loans-table th{text-align:left;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);padding:12px 20px;border-bottom:1px solid var(--color-border)}table.loans-table td{padding:14px 20px;border-bottom:1px solid var(--color-border-soft);vertical-align:middle}.status-badge{padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;display:inline-block;white-space:nowrap}.status-active{background:var(--color-accent-soft-bg);color:var(--color-accent-soft-text)}.status-paid{background:var(--color-border-soft);color:var(--color-text-muted)}.status-overdue{background:var(--color-danger-soft-bg);color:var(--color-danger-soft-text)}.text-input,.number-input,.date-display-input{border:1px solid var(--color-border);border-radius:6px;padding:6px 8px;font-size:13px;width:100%}.borrower-input{font-weight:600;border:1px solid transparent;background:transparent}.borrower-input:hover,.borrower-input:focus{border-color:var(--color-border)}.icon-button{background:transparent;border:none;color:var(--color-text-faint);cursor:pointer;font-size:15px}.primary-button{background:var(--color-accent);color:#fff;border:none;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:700;cursor:pointer}.lang-toggle{display:flex;gap:8px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:4px}.lang-toggle button{border:none;border-radius:7px;padding:6px 14px;font-size:13px;font-weight:600;cursor:pointer;background:transparent;color:var(--color-text-muted)}.lang-toggle button.active{background:var(--color-accent);color:#fff;font-weight:700}.date-picker-field{position:relative;cursor:pointer}.date-picker-field .date-display-input{cursor:pointer;background:var(--color-surface);pointer-events:none}.date-picker-field .native-date-overlay{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%;height:100%;border:none;margin:0;padding:0;pointer-events:none}.overdue-widget{padding:16px 20px;border-left:4px solid var(--color-danger)}.overdue-widget-title{font-weight:700;font-size:14px;color:var(--color-danger-soft-text);margin-bottom:8px}.overdue-widget-empty{font-size:13px;color:var(--color-text-muted)}.overdue-widget-row{font-size:14px;color:var(--color-text);padding:3px 0}.charts-row{display:grid;grid-template-columns:1.3fr 1fr;gap:16px}.charts-row>*{min-width:0}.chart-card{padding:20px 22px;min-width:0}.bar-chart{display:flex;align-items:flex-end;gap:10px;height:110px;min-width:0}.bar-column{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.bar-value{font-size:11px;color:var(--color-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.bar-fill{width:100%;background:var(--color-accent);border-radius:4px 4px 0 0;min-height:3px}.bar-month{font-size:11px;color:var(--color-text-faint)}.donut-legend{display:flex;align-items:center;gap:20px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.legend-swatch{width:10px;height:10px;border-radius:3px;display:inline-block}.payment-history{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.payment-history-header{display:grid;grid-template-columns:110px 1fr 1fr 1fr 140px 32px;gap:8px;padding:9px 14px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-faint);background:var(--color-surface-muted);border-bottom:1px solid var(--color-border)}.payment-history-row{display:grid;grid-template-columns:110px 1fr 1fr 1fr 140px 32px;gap:8px;padding:8px 14px;font-size:13px;align-items:center;border-bottom:1px solid var(--color-border-soft)}.payment-history-empty{font-size:13px;color:var(--color-text-muted);background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-md);padding:14px;text-align:center}.confirmation-cell{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.confirmation-badge{padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap;background:var(--color-warning-bg);color:var(--color-warning-text);border:1px solid var(--color-warning-border)}.confirmation-confirm-button{padding:4px 10px;font-size:11px}.payment-amount-group{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:10px 12px}.payment-amount-fields{display:flex;gap:10px}.payment-amount-fields>div{flex:1 1 0;min-width:0}.payment-amount-fields .number-input{width:100%}.field-label{font-size:11px;color:var(--color-text-muted);margin-bottom:4px}.field-sublabel{font-size:10px;color:var(--color-text-faint);margin-bottom:3px;text-transform:uppercase;letter-spacing:.03em}.borrower-list{display:flex;flex-direction:column;gap:10px}.borrower-card{overflow:hidden}.borrower-card-header{display:flex;align-items:center;gap:12px;padding:14px 18px;cursor:pointer}.borrower-card-header:hover{background:var(--color-surface-sunken)}.borrower-card-info{display:flex;align-items:center;gap:12px;flex:1 1 auto;min-width:0}.borrower-card-title{display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:0}.borrower-card-meta{display:flex;align-items:center;gap:12px;margin-left:auto}.borrower-card-header .borrower-input{flex:1 1 auto;width:auto;min-width:0;max-width:320px;font-size:15px;text-overflow:ellipsis}.borrower-card-header .icon-button{flex-shrink:0}.expand-caret{color:var(--color-text-faint);font-size:11px;width:12px;flex-shrink:0;display:inline-block;transition:transform .15s ease}.borrower-meta{font-size:13px;color:var(--color-text-muted);white-space:nowrap;flex-shrink:0}.balance-active{color:var(--color-accent-soft-text)}.balance-paid{color:var(--color-text-muted)}.balance-overdue{color:var(--color-danger)}.loans-table--nested{border-top:1px solid var(--color-border)}.loans-table--nested th{padding:9px 20px}.loans-table--nested td{padding:9px 20px;font-size:13px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.loans-table--nested{min-width:600px}@media (max-width: 900px){.app-shell{padding:28px 24px 60px}.kpi-grid{grid-template-columns:repeat(2,1fr)}.charts-row{grid-template-columns:1fr}}@media (max-width: 560px){.app-shell{padding:20px 14px 44px}.borrower-card-header .borrower-input{max-width:none}.payment-amount-group{flex-basis:100%}}@media (max-width: 480px){.borrower-card-info{flex-direction:column;align-items:stretch;gap:4px}.borrower-card-title{flex:none}.borrower-card-meta{margin-left:0;gap:10px}}@media (max-width: 420px){.kpi-grid{grid-template-columns:1fr}}.notification-bell-button{position:relative;font-size:20px;padding:4px 8px}.notification-unread-badge{position:absolute;top:-2px;right:-2px;background:var(--color-danger);color:#fff;border-radius:999px;font-size:10px;font-weight:700;min-width:16px;height:16px;display:flex;align-items:center;justify-content:center;padding:0 3px}.notification-dropdown{position:absolute;right:0;top:calc(100% + 8px);width:320px;max-height:360px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 8px 24px var(--color-overlay);z-index:10}.notification-dropdown-title{padding:12px 14px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-faint);border-bottom:1px solid var(--color-border-soft)}.notification-dropdown-empty{padding:20px 14px;font-size:13px;color:var(--color-text-muted);text-align:center}.notification-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:transparent;border:none;border-bottom:1px solid var(--color-border-soft);padding:10px 14px;font-size:13px;cursor:pointer}.notification-item:hover{background:var(--color-surface-muted)}.notification-item-time{font-size:11px;color:var(--color-text-faint)}.highlight-pulse{animation:highlight-pulse-animation 1.5s ease-out}@keyframes highlight-pulse-animation{0%{background-color:var(--color-accent-soft-bg)}to{background-color:transparent}}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--color-accent) 0%,var(--color-accent-hover) 100%);padding:24px}.login-card{width:100%;max-width:400px;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);padding:40px 36px}.login-title{font-size:28px;font-weight:800;margin:0 0 28px;text-align:center;color:var(--color-text)}.loading-screen{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.loading-spinner{width:40px;height:40px;border-radius:50%;border:4px solid var(--color-border-soft);border-top-color:var(--color-accent);animation:loading-spin .8s linear infinite}.loading-text{font-size:14px;color:var(--color-text-muted)}@keyframes loading-spin{to{transform:rotate(360deg)}}.filter-sort-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.filter-pills{display:flex;gap:8px;flex-wrap:wrap}.filter-pill{border:1px solid var(--color-border);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.filter-pill.active{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.sort-controls{display:flex;align-items:center;gap:8px}.sort-select{width:auto}.sort-direction-button{font-size:16px;padding:4px 8px;border:1px solid var(--color-border);border-radius:6px}.pagination-controls{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:20px}.pagination-label{font-size:13px;color:var(--color-text-muted)}.results-count{font-size:13px;color:var(--color-text-muted);margin-bottom:8px}
