:root{--text:#475569;--text-h:#0f172a;--bg:#f1f5f9;--border:#e2e8f0;--card-bg:#fff;--accent:#2563eb;--accent-soft:#eff6ff;--stage1:#15803d;--stage1-bg:#ecfdf3;--stage2:#b45309;--stage2-bg:#fffbeb;--stage3:#b91c1c;--stage3-bg:#fef2f2;--shadow:0 1px 2px #0f172a0a, 0 1px 8px #0f172a0a;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/145% var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0}#root{max-width:1240px;margin:0 auto;padding:32px 24px 48px}h1,h2,h3{color:var(--text-h);letter-spacing:-.01em;font-weight:600}.app-header{margin-bottom:28px}.app-header h1{margin:0 0 12px;font-size:32px}.app-header p{color:var(--text);margin:0;font-size:15px;line-height:1.7}.toolbar{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;padding:14px 18px;display:flex}.upload-portfolio{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.upload-button,.link-button{border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);cursor:pointer;border-radius:6px;align-items:center;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:border-color .15s,color .15s;display:inline-flex}.upload-button:hover,.link-button:hover{border-color:var(--accent);color:var(--accent)}.upload-error{color:var(--stage3);width:100%;font-size:14px}.discount-method-control{flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;display:flex}.discount-method-control label{color:var(--text-h);white-space:nowrap;font-weight:600}.discount-method-control select{border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);border-radius:6px;padding:6px 10px;font-size:13px}.discount-method-hint{color:var(--text);white-space:nowrap}.staging-controls{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.staging-field{letter-spacing:.03em;text-transform:uppercase;color:var(--text);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.staging-field input{border:1px solid var(--border);background:var(--card-bg);text-transform:none;color:var(--text-h);border-radius:6px;width:100px;padding:6px 10px;font-size:13px;font-weight:400}.staging-basis-toggle{border:1px solid var(--border);border-radius:6px;display:inline-flex;overflow:hidden}.staging-basis-option{text-transform:none;letter-spacing:normal;color:var(--text-h);background:var(--card-bg);cursor:pointer;white-space:nowrap;align-items:center;padding:6px 12px;font-size:13px;font-weight:400;transition:background-color .15s,color .15s;display:flex}.staging-basis-option:not(:last-child){border-right:1px solid var(--border)}.staging-basis-option input{opacity:0;pointer-events:none;position:absolute}.staging-basis-option.active{background:var(--accent);color:#fff}.staging-basis-option:hover:not(.active){background:color-mix(in srgb, var(--accent) 12%, var(--card-bg))}.staging-error{color:var(--stage3);width:100%;font-size:13px}.scenario-controls{flex-direction:column;align-items:flex-start;gap:14px;width:100%;display:flex}.scenario-toggle{color:var(--text-h);cursor:pointer;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.scenario-controls-body{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.scenario-controls-body.disabled{opacity:.45}.scenario-controls-body.disabled .scenario-field-group,.scenario-controls-body.disabled .staging-basis-toggle{pointer-events:none}.scenario-field-group{border:1px solid var(--border);border-radius:8px;align-items:flex-end;gap:12px;padding:8px 12px;display:flex}.scenario-field-group-label{letter-spacing:.03em;text-transform:uppercase;color:var(--text-h);white-space:nowrap;align-self:center;font-size:12px;font-weight:600}.summary-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px;display:grid}.summary-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-top:3px solid var(--accent);border-radius:10px;padding:16px 18px}.summary-card-label{letter-spacing:.04em;text-transform:uppercase;color:var(--text);margin-bottom:10px;font-size:12px;font-weight:600}.summary-card-value{color:var(--text-h);font-size:26px;font-weight:700;line-height:1.2}.summary-card-subvalue{color:var(--text);margin-top:6px;font-size:13px}.charts-row{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:24px;display:grid}.chart-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:18px}.chart-card h3{margin:0 0 12px;font-size:15px;font-weight:600}.loan-table-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:18px}.loan-table-card h3{margin:0 0 12px;font-size:15px;font-weight:600}.loan-table-controls{flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:14px;display:flex}.loan-table-controls label{letter-spacing:.03em;text-transform:uppercase;color:var(--text);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.loan-table-controls select{border:1px solid var(--border);background:var(--card-bg);text-transform:none;color:var(--text-h);border-radius:6px;padding:6px 10px;font-size:13px;font-weight:400}.loan-table-count{color:var(--text);margin-left:auto;font-size:13px}.loan-table-scroll{border:1px solid var(--border);border-radius:8px;max-height:480px;overflow:auto}.loan-table{border-collapse:collapse;width:100%;font-size:13.5px}.loan-table th{text-align:right;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;color:var(--text-h);border-bottom:1px solid var(--border);background:#f8fafc;padding:10px 14px;font-weight:600;position:sticky;top:0}.loan-table th:first-child,.loan-table th:nth-child(2){text-align:left}.loan-table th.not-sortable{cursor:default}.loan-table th:hover:not(.not-sortable){color:var(--accent)}.loan-table td{border-top:1px solid var(--border);white-space:nowrap;text-align:right;padding:8px 14px}.loan-table td:first-child,.loan-table td:nth-child(2){text-align:left}.loan-table tbody tr:nth-child(2n){background:#f8fafc}.loan-table tbody tr:hover{background:var(--accent-soft)}.stage-badge{border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.stage-badge.stage_1{background:var(--stage1-bg);color:var(--stage1)}.stage-badge.stage_2{background:var(--stage2-bg);color:var(--stage2)}.stage-badge.stage_3{background:var(--stage3-bg);color:var(--stage3)}.status-message{text-align:center;color:var(--text);padding:40px 16px}.status-message.error{color:var(--stage3)}
