:root{--green:#16443c;--green-60:#123932;--green-80:#0b221e;--green-50:#3d635d;--green-30:#8ba29e;--green-10:#d0dad8;--lime:#86bc45;--lime-60:#709d3a;--lime-30:#c3dea2;--lime-10:#e7f2da;--cream:#fff8e3;--cream-40:#fffaec;--cream-10:#fffef9;--cream-60:#d5cfbd;--cream-100:#33322d;--amber:#ffc743;--amber-10:#fff4d9;--amber-30:#ffe3a1;--amber-80:#806422;--ink:var(--green-80);--ink2:var(--green-50);--ink3:var(--green-30);--line:var(--green-10);--band:var(--lime-10);--canvas:var(--cream-40);--paper:#fff;--new:var(--green);--rpt:var(--lime);--sans:"Avenir Next","Avenir","Nunito Sans","Segoe UI",system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body,html{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--sans);font-size:13px;line-height:1.4;-webkit-font-smoothing:antialiased}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.wrap{max-width:1360px;margin:0 auto;padding:22px 24px 40px}.topbar{height:4px;background:linear-gradient(90deg,var(--green) 0,var(--green) 35%,var(--lime) 100%)}header.top{justify-content:space-between;gap:16px;padding:18px 0 14px;border-bottom:1px solid var(--line);margin-bottom:6px;flex-wrap:wrap}.brand,header.top{display:flex;align-items:center}.brand{gap:12px}.brand-logo{flex:none;display:block;height:26px;width:auto}.brand .ver{font-size:11.5px;font-weight:500;color:var(--ink3)}.status{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.status .asof{font-size:12px;color:var(--ink2);white-space:nowrap}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 12px;font-size:11px;font-weight:700;letter-spacing:.01em;white-space:nowrap}.pill.mock{background:var(--amber-10);color:var(--amber-80);border:1px solid var(--amber-30)}.pill.live{background:var(--lime-10);color:var(--green-60);border:1px solid var(--lime-30)}.user-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:4px 10px;font-size:12px;color:var(--ink2)}section{margin-top:22px}.eyebrow{display:flex;align-items:center;gap:12px;margin-bottom:10px}.eyebrow h2{margin:0;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--green);white-space:nowrap}.eyebrow .rule{flex:1 1;height:1px;background:var(--line)}.eyebrow .note{font-size:11.5px;color:var(--ink3);white-space:nowrap}a.note{text-decoration:none}a.note:hover{color:var(--green);text-decoration:underline}.legend{display:flex;align-items:center;gap:14px}.legend-item{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink2)}.legend-item i{display:inline-block;width:9px;height:9px;border-radius:2px}.chart{display:flex;gap:10px;margin-bottom:16px}.chart-axis{display:flex;flex-direction:column-reverse;justify-content:space-between;height:140px;padding-bottom:2px}.chart-axis .tick{font-size:10.5px;color:var(--ink3);transform:translateY(50%)}.chart-body{flex:1 1;display:flex;flex-direction:column}.chart-plot{position:relative;height:140px}.chart-plot .grid-line{position:absolute;left:0;right:0;height:1px;background:var(--line)}.chart-bars{position:relative;z-index:1;align-items:flex-end;gap:16px}.bar-col,.chart-bars{display:flex;height:100%}.bar-col{flex:1 1;text-align:center;flex-direction:column;align-items:center;justify-content:flex-end}.bar-stack{width:100%;display:flex;flex-direction:column-reverse;border-radius:3px;overflow:hidden}.bar-total{font-size:11.5px;margin-bottom:4px}.chart-labels{display:flex;gap:16px;margin-top:6px}.bar-label{flex:1 1;text-align:center;font-size:11.5px;color:var(--ink2)}.grid{display:grid;grid-template-columns:repeat(12,1fr);grid-gap:16px;gap:16px}.s12{grid-column:span 12}.s7{grid-column:span 7}.s5{grid-column:span 5}@media (max-width:900px){.s5,.s7{grid-column:span 12}}.card{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:14px 16px 12px;min-width:0}.card-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}.card-h h3{margin:0;font-size:14px;font-weight:700;color:var(--green)}.card-h .sub{font-size:11.5px;color:var(--ink2)}table{width:100%;border-collapse:collapse;font-size:12.5px}thead th{background:var(--band);color:var(--green);text-align:right;font-weight:700;padding:6px 10px;border-bottom:1px solid var(--line)}tbody td:first-child,thead th:first-child{text-align:left}tbody td{padding:6px 10px;text-align:right;border-bottom:1px solid var(--line)}tbody tr:last-child td{border-bottom:none}table a{color:var(--green);font-weight:600;text-decoration:none}table a:hover{text-decoration:underline}.hatched{background:repeating-linear-gradient(135deg,var(--green-10) 0 3px,#fafbfa 3px 7px)}.foot,.hatched{color:var(--ink3)}.foot{margin-top:8px;font-size:11px;line-height:1.45}.portal-nav{display:flex;align-items:center;gap:4px}.portal-nav a{display:inline-flex;align-items:center;padding:6px 12px;border-radius:6px;font-size:12.5px;font-weight:600;color:var(--ink2);text-decoration:none}.portal-nav a:hover{background:var(--lime-10);color:var(--green-60)}.portal-nav a.active{background:var(--green);color:var(--cream-10)}.logout-btn{border:1px solid var(--line);background:var(--paper);color:var(--ink2);border-radius:999px;padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer}.logout-btn:hover{border-color:var(--green-30);color:var(--green)}.login-wrap{display:flex;justify-content:center;padding:60px 16px}.login-card{width:100%;max-width:380px;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:28px 28px 22px}.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px}.login-logo{height:24px;width:auto}.login-card h1{margin:0 0 4px;font-size:19px;color:var(--green)}.login-card .sub{margin:0 0 20px;font-size:12.5px;color:var(--ink2)}.login-card form{display:flex;flex-direction:column;gap:14px}.admin-form button,.login-card button{margin-top:4px;background:var(--green);color:var(--cream-10);border:none;border-radius:6px;padding:10px 16px;font-size:13px;font-weight:700;cursor:pointer}.admin-form button:hover,.login-card button:hover{background:var(--green-60)}.admin-form button:disabled,.login-card button:disabled{opacity:.6;cursor:not-allowed}.login-error{font-size:12px;color:#a3372b;background:#fdece9;border:1px solid #f4c3ba;border-radius:6px;padding:8px 10px}.login-foot{margin-top:20px;font-size:11px;color:var(--ink3);text-align:center;line-height:1.5}.field{display:flex;flex-direction:column;gap:5px}.field span{font-size:11.5px;font-weight:700;color:var(--ink2)}.field input,.field select{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--cream-10);color:var(--ink)}.field input:focus,.field select:focus{outline:none;border-color:var(--lime-60)}.admin-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:14px;gap:14px;align-items:end}.admin-form .login-error{grid-column:1/-1}.loan-search{width:100%;font:inherit;padding:8px 10px;margin-bottom:10px;border:1px solid var(--line);border-radius:6px;background:var(--cream-10);color:var(--ink)}.loan-search:focus{outline:none;border-color:var(--lime-60)}.fpd-badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:700;white-space:nowrap}.fpd-badge-pending{background:var(--green-10);color:var(--ink2)}.fpd-badge-good{background:var(--lime-10);color:var(--green-60);border:1px solid var(--lime-30)}.fpd-badge-warn{background:var(--amber-10);color:var(--amber-80);border:1px solid var(--amber-30)}.fpd-badge-bad{background:#fdece9;color:#a3372b;border:1px solid #f4c3ba}.loan-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:14px;gap:14px;margin-top:8px}.loan-fact{display:flex;flex-direction:column;gap:3px}.loan-fact-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink3)}.loan-fact-value{font-size:13.5px;color:var(--ink)}