
:root{--nav:#10263d;--blue:#2374e1;--bg:#f4f7fb;--card:#fff;--ink:#17212b;--muted:#6b7785;--line:#dfe6ee;--good:#087b50;--bad:#b93636;--shadow:0 10px 28px rgba(22,45,70,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}.app{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.side{background:var(--nav);color:#fff;padding:24px 16px;position:sticky;top:0;height:100vh}.brand{font-size:23px;font-weight:800;margin:2px 10px 28px}.brand span{color:#7ab7ff}.nav button{width:100%;border:0;background:transparent;color:#c8d5e3;text-align:left;padding:12px 13px;border-radius:9px;margin:3px 0;cursor:pointer}.nav button.active,.nav button:hover{background:#1d3b59;color:#fff}.note{position:absolute;bottom:18px;left:18px;right:18px;color:#9db0c3;font-size:12px;line-height:1.45}.main{padding:26px;min-width:0}.view{display:none}.view.active{display:block}.top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.top h1{margin:0;font-size:28px}.top p{margin:5px 0 0;color:var(--muted)}.actions{display:flex;gap:9px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;padding:10px 13px;border-radius:9px;font-weight:700;cursor:pointer}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.danger{color:var(--bad)}.grid{display:grid;gap:15px}.kpis{margin-bottom:15px}.portfolio-kpi-layout{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:15px;margin-bottom:15px}.portfolio-kpi-layout>.card{min-width:0}.share-kpi-group{grid-column:span 3;border:1px solid #b9d4fb;background:#eef5ff;border-radius:16px;padding:12px;box-shadow:var(--shadow)}.share-kpi-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 3px 10px}.share-kpi-heading h3{font-size:14px;margin:0;color:#214a78}.share-kpi-heading .sub{margin:0}.share-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.share-kpi-card{background:#fff;border:1px solid #d4e4fa;border-radius:12px;padding:14px;min-width:0}.share-kpi-card .value{font-size:24px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:17px}@media(max-width:1100px){.portfolio-kpi-layout{grid-template-columns:repeat(2,minmax(0,1fr))}.share-kpi-group{grid-column:1/-1}}@media(max-width:650px){.portfolio-kpi-layout{grid-template-columns:1fr}.share-kpi-group{grid-column:auto}.share-kpi-grid{grid-template-columns:1fr}}.label{color:var(--muted);font-size:13px}.value{font-size:26px;font-weight:800;margin-top:7px}.sub{font-size:12px;color:var(--muted);margin-top:7px}.good{color:var(--good)}.bad{color:var(--bad)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}.table{border-collapse:collapse;width:100%;min-width:1080px}.table tr.holding-row{cursor:pointer}.table tr.holding-row:hover{background:#f5f9ff}.table th.sortable{cursor:pointer;user-select:none;white-space:nowrap}.table th.sortable:hover{background:#eef4ff}.sort-indicator{font-size:11px;opacity:.65;margin-left:4px}.code-filter{min-width:190px}
.table th{background:#f7f9fc;color:var(--muted);font-size:12px;text-align:left;padding:11px;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:11px;border-bottom:1px solid #edf1f5;font-size:13px;white-space:nowrap}.table tr:last-child td{border-bottom:0}.pill{display:inline-block;padding:4px 8px;border-radius:99px;font-size:11px;font-weight:800}.buy{background:#e7f6ef;color:#08774c}.sell{background:#fdeaea;color:#ad3030}.income{background:#e9f1ff;color:#275eaf}.expense{background:#fff1dd;color:#9a5d00}.link{border:0;background:none;color:var(--blue);font-weight:700;cursor:pointer;padding:0}.empty{text-align:center;color:var(--muted);padding:34px}.modal-bg{display:none;position:fixed;inset:0;background:rgba(8,22,37,.57);z-index:20;align-items:center;justify-content:center;padding:18px}.modal-bg.open{display:flex}.modal{width:min(760px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:15px;box-shadow:0 24px 75px rgba(0,0,0,.28)}.mh{padding:17px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.mh h2{margin:0;font-size:19px}.mb{padding:20px}.mf{padding:15px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px}.form{display:grid;grid-template-columns:1fr 1fr;gap:13px}.field{display:grid;gap:5px}.field.full{grid-column:1/-1}.field label{font-size:12px;color:var(--muted);font-weight:750}.field input,.field select,.field textarea{border:1px solid #d7e0e9;border-radius:8px;padding:9px 10px;background:#fff;min-width:0}.date-entry{font-variant-numeric:tabular-nums}.date-entry.invalid{border-color:var(--bad)!important;background:#fff5f5!important}.field textarea{min-height:72px;resize:vertical}.banner{display:none;margin-bottom:14px;padding:11px 13px;border-radius:9px;background:#eaf3ff;color:#245991;font-size:13px}.cards{grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}.asset-card h3{margin:12px 0 6px}.property-card{width:100%}.property-card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap}.property-card-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:15px}.property-card-actions .btn{padding:8px 11px;font-size:12px}.property-card-actions .btn.danger{background:#fff;border-color:#efcaca;color:var(--bad)}.property-card-body{display:grid;grid-template-columns:minmax(330px,420px) minmax(0,1fr);gap:22px;align-items:stretch;margin-top:10px}.property-card-left{min-width:0}.property-card-left .metrics{grid-template-columns:repeat(3,minmax(105px,132px));justify-content:start;margin-top:12px}.property-card-left .metric{min-width:0}.property-card-chart-panel{border:1px solid #dbe5f1;background:#f9fbfe;border-radius:12px;padding:12px;min-height:245px;min-width:0}.property-card-chart-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:4px}.property-card-chart-head h4{margin:0;font-size:13px}.property-card-chart-status{font-size:11px;color:var(--muted);text-align:right}.property-card-loan-chart{width:100%;height:205px;display:block}.property-card-chart-empty{min-height:205px;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:12px}.property-card-chart-legend{display:flex;gap:15px;align-items:center;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-top:4px}.property-card-chart-legend span{display:flex;gap:6px;align-items:center}.property-card-chart-legend i{display:inline-block;width:21px;border-top:3px solid #2474e5}.property-card-chart-legend i.base{border-top-color:#8995a6;border-top-style:dashed}#propertyCards.cards{grid-template-columns:1fr}.other-value-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.other-value-summary .metric{background:#f4f7fb}.other-value-form{display:grid;grid-template-columns:170px 190px minmax(220px,1fr) auto;gap:10px;align-items:end;margin:14px 0}.other-value-form .field{min-width:0}.other-value-chart{width:100%;height:245px;display:block}.other-value-grid{stroke:#dbe3ee;stroke-width:1}.other-value-axis{fill:#607086;font-size:11px}.other-value-line{fill:none;stroke:#2474e5;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.other-value-area{fill:rgba(36,116,229,.09)}@media(max-width:1000px){.property-card-body{grid-template-columns:1fr}.property-card-left .metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.other-value-form{grid-template-columns:1fr 1fr}.other-value-form .field:last-of-type{grid-column:1/-1}.other-value-form button{grid-column:1/-1}}@media(max-width:560px){.property-card-left .metrics,.other-value-summary,.other-value-form{grid-template-columns:1fr}.other-value-form .field:last-of-type,.other-value-form button{grid-column:auto}}.asset-card .metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:13px}.loan-history-chart{width:100%;height:245px;display:block}.loan-chart-grid{stroke:#dbe3ee;stroke-width:1}.loan-chart-axis{fill:#607086;font-size:11px}.loan-chart-line{fill:none;stroke:#2474e5;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.loan-chart-area{fill:rgba(36,116,229,.09)}.loan-history-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.loan-history-summary .metric{background:#f4f7fb;border-radius:9px;padding:11px}.loan-entry-form{display:grid;grid-template-columns:160px 180px minmax(200px,1fr) auto;gap:10px;align-items:end;margin:14px 0}.loan-entry-form .field{min-width:0}.loan-plan-note{background:#fff7db;border:1px solid #f1d571;color:#705200;padding:11px 12px;border-radius:9px;font-size:12px;line-height:1.45;margin-bottom:14px}.loan-plan-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;align-items:end}