.add-btn{background:#6c63ff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;transition:background .2s}.add-btn:hover{background:#5a52d9}.modal-overlay{align-items:center;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:#1a1a2e;border:1px solid #3d3d5c;border-radius:8px;box-shadow:0 4px 20px #00000080;max-width:500px;padding:24px;width:100%}.modal-content h3{color:#e0e0e0;font-size:18px;font-weight:600;margin:0 0 20px}.form-row{display:flex;gap:16px;margin-bottom:16px}.form-row .form-group{flex:1 1;margin-bottom:0}.form-group.full-width{width:100%}.form-group input,.form-group select,.form-group textarea{background:#252540;border:1px solid #3d3d5c;border-radius:4px;box-sizing:border-box;color:#e0e0e0;font-family:inherit;font-size:14px;padding:10px 12px;width:100%}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#6c63ff;outline:none}.calculated-field{background:#1a1a2e;border:1px solid #3d3d5c;border-radius:4px;color:#a0a0b0;font-family:var(--font-mono);font-size:14px;padding:10px 12px}.portfolio-selector{background:#1a1a2e;border-bottom:1px solid #2d2d44;margin-bottom:24px;padding:12px 20px}.portfolio-selector-row{align-items:center;display:flex;gap:12px}.portfolio-selector label{color:#a0a0b0;font-size:14px;font-weight:500}.portfolio-selector select{background:#252540;border:1px solid #3d3d5c;border-radius:4px;color:#e0e0e0;cursor:pointer;font-size:14px;min-width:200px;padding:8px 12px}.portfolio-selector select:hover{border-color:#5d5d7c}.portfolio-selector select:focus{border-color:#6c63ff;outline:none}.portfolio-description{color:#808090;font-size:13px;font-style:italic}.create-portfolio-modal{align-items:center;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.create-portfolio-form{background:#1a1a2e;border:1px solid #3d3d5c;border-radius:8px;box-shadow:0 4px 20px #00000080;max-width:400px;padding:24px;width:100%}.create-portfolio-form h3{color:#e0e0e0;font-size:18px;font-weight:600;margin:0 0 20px}.form-group{margin-bottom:16px}.form-group label{color:#a0a0b0;display:block;font-size:13px;margin-bottom:6px}.form-group input,.form-group textarea{background:#252540;border:1px solid #3d3d5c;border-radius:4px;box-sizing:border-box;color:#e0e0e0;font-family:inherit;font-size:14px;padding:10px 12px;width:100%}.form-group input:focus,.form-group textarea:focus{border-color:#6c63ff;outline:none}.form-group input::placeholder,.form-group textarea::placeholder{color:#606070}.form-error{background:#ff6b6b1a;border-radius:4px;color:#ff6b6b;font-size:13px;margin-bottom:16px;padding:8px 12px}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}.form-actions button{border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:background .2s}.form-actions button[type=button]{background:#0000;border:1px solid #3d3d5c;color:#a0a0b0}.form-actions button[type=button]:hover{background:#252540}.form-actions button[type=submit]{background:#6c63ff;border:none;color:#fff}.form-actions button[type=submit]:hover{background:#5a52d9}.form-actions button:disabled{cursor:not-allowed;opacity:.6}*{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#0a0a0f;--color-bg-elevated:#12121a;--color-bg-hover:#1a1a24;--color-border:#2a2a3a;--color-border-light:#3a3a4a;--color-text-primary:#f0f0f5;--color-text-secondary:#8888a0;--color-text-muted:#5a5a70;--color-accent:#6366f1;--color-accent-hover:#818cf8;--color-positive:#10b981;--color-negative:#ef4444;--color-warning:#f59e0b;--font-mono:"SF Mono","Fira Code","Monaco","Consolas",monospace;--font-sans:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",sans-serif;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 24px #00000080;--radius-sm:4px;--radius-md:8px;--radius-lg:12px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#0a0a0f;background-color:var(--color-bg);color:#f0f0f5;color:var(--color-text-primary);font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,sans-serif;font-family:var(--font-sans);line-height:1.5}.app{margin:0 auto;max-width:1400px;min-height:100vh;padding:32px}.header{align-items:center;border-bottom:1px solid #2a2a3a;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;margin-bottom:32px;padding-bottom:24px}.header-content h1{font-size:24px;font-weight:600;letter-spacing:-.02em;margin-bottom:4px}.header-content p{color:#8888a0;color:var(--color-text-secondary);font-size:14px}.header-logo{height:55px;object-fit:contain;width:auto}.card{background:#12121a;background:var(--color-bg-elevated);border:1px solid #2a2a3a;border:1px solid var(--color-border);border-radius:12px;border-radius:var(--radius-lg);overflow:hidden}.card-header{align-items:center;border-bottom:1px solid #2a2a3a;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;padding:20px 24px}.card-header h2{font-size:16px;font-weight:600;letter-spacing:-.01em}.header-actions{align-items:center;display:flex;gap:12px}.card-body{padding:0}.table-container{overflow-x:auto}table{border-collapse:collapse;font-size:14px;width:100%}thead{background:#0a0a0f;background:var(--color-bg)}th{border-bottom:1px solid #2a2a3a;border-bottom:1px solid var(--color-border);color:#8888a0;color:var(--color-text-secondary);font-size:12px;font-weight:500;letter-spacing:.05em;padding:12px 24px;text-align:left;text-transform:uppercase}td.numeric,th.numeric{font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono);text-align:right}td{border-bottom:1px solid #2a2a3a;border-bottom:1px solid var(--color-border);padding:14px 24px}tbody tr:hover{background:#1a1a24;background:var(--color-bg-hover)}tbody tr:last-child td{border-bottom:none}.value-positive{color:#10b981;color:var(--color-positive)}.value-negative{color:#ef4444;color:var(--color-negative)}.metrics-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:24px}.metric-card{background:#12121a;background:var(--color-bg-elevated);border:1px solid #2a2a3a;border:1px solid var(--color-border);border-radius:8px;border-radius:var(--radius-md);padding:20px 24px}.metric-label{color:#8888a0;color:var(--color-text-secondary);font-size:12px;letter-spacing:.05em;margin-bottom:8px;text-transform:uppercase}.metric-value{font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono);font-size:28px;font-weight:600;letter-spacing:-.02em}.metric-value.positive{color:#10b981;color:var(--color-positive)}.metric-value.negative{color:#ef4444;color:var(--color-negative)}.metric-subtitle{color:#5a5a70;color:var(--color-text-muted);font-size:12px;margin-top:4px}.period-badge{background:#0a0a0f;background:var(--color-bg);color:#8888a0;color:var(--color-text-secondary);font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono);font-size:12px}.period-badge,.type-badge{align-items:center;border-radius:4px;border-radius:var(--radius-sm);display:inline-flex;padding:4px 10px}.type-badge{font-size:11px;font-weight:600;text-transform:uppercase}.type-badge.type-buy{background:#6366f133;color:#818cf8}.type-badge.type-sell{background:#10b98133;color:#10b981;color:var(--color-positive)}.type-badge.type-dividend{background:#f59e0b33;color:#f59e0b;color:var(--color-warning)}.type-badge.type-reinvest{background:#8b5cf633;color:#a78bfa}.type-badge.type-capgain{background:#06b6d433;color:#22d3ee}.type-badge.type-unknown{background:#ef444433;color:#ef4444;color:var(--color-negative)}.type-badge.type-cash_in_lieu{background:#fbbf2433;color:#fbbf24}.type-badge.type-split{background:#22c55e33;color:#22c55e}.type-badge.type-expense{background:#f43f5e33;color:#f43f5e}.type-badge.type-manual{background:#6b728033;color:#9ca3af}.ticker-badge{align-items:center;background:#6366f1;background:var(--color-accent);border-radius:4px;border-radius:var(--radius-sm);color:#f0f0f5;color:var(--color-text-primary);display:inline-flex;font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono);font-size:12px;font-weight:600;padding:4px 10px}.date-picker-inline{align-items:center;display:flex;gap:8px}.date-picker-inline label{color:#8888a0;color:var(--color-text-secondary);font-size:13px}.date-picker-inline input[type=date]{background:#252540;border:1px solid #3d3d5c;border-radius:4px;color:#e0e0e0;font-family:inherit;font-size:14px;padding:8px 12px}.date-picker-inline input[type=date]:focus{border-color:#6c63ff;outline:none}.tabs-container{margin-bottom:24px}.tabs-header{border-bottom:1px solid #2a2a3a;border-bottom:1px solid var(--color-border);display:flex;gap:4px;margin-bottom:16px;padding-bottom:0}.tab-button{background:#0000;border:none;border-bottom:2px solid #0000;color:#8888a0;color:var(--color-text-secondary);cursor:pointer;font-size:14px;font-weight:500;margin-bottom:-1px;padding:12px 20px;transition:all .2s ease}.tab-button:hover{background:#1a1a24;background:var(--color-bg-hover);color:#f0f0f5;color:var(--color-text-primary)}.tab-button.active{border-bottom-color:#6366f1;border-bottom-color:var(--color-accent);color:#6366f1;color:var(--color-accent)}.tabs-content{min-height:200px}.table-footer{align-items:center;background:#0a0a0f;background:var(--color-bg);border-top:1px solid #2a2a3a;border-top:1px solid var(--color-border);color:#8888a0;color:var(--color-text-secondary);display:flex;flex-wrap:wrap;font-size:13px;justify-content:space-between;padding:16px 24px;row-gap:8px}.table-footer strong{color:#f0f0f5;color:var(--color-text-primary);font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono)}.table-footer strong.value-positive{color:#10b981;color:var(--color-positive)}.table-footer strong.value-negative{color:#ef4444;color:var(--color-negative)}.table-footer-divider{border-left:1px solid #808090;padding-left:16px}@media (max-width:768px){.table-footer-divider{border-left:none;padding-left:0}}.table-footer-row{background:#0a0a0f;background:var(--color-bg)}.table-footer-row td{border-bottom:none;border-top:1px solid #2a2a3a;border-top:1px solid var(--color-border)}.table-footer-row strong{color:#f0f0f5;color:var(--color-text-primary);font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono)}.chart-card{margin-bottom:24px}.chart-body{padding:24px}.chart-tooltip{background:#12121a;background:var(--color-bg-elevated);border:1px solid #2a2a3a;border:1px solid var(--color-border);border-radius:8px;border-radius:var(--radius-md);box-shadow:0 4px 12px #0006;box-shadow:var(--shadow-md);padding:12px 16px}.tooltip-date{color:#8888a0;color:var(--color-text-secondary);font-size:12px;margin-bottom:4px}.tooltip-irr{font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono);font-size:16px;font-weight:600;margin-bottom:4px}.tooltip-cashflows{border-top:1px solid #2a2a3a;border-top:1px solid var(--color-border);margin-top:8px;padding-top:8px}.tooltip-cashflows-header{color:#8888a0;color:var(--color-text-secondary);font-size:11px;letter-spacing:.5px;margin-bottom:4px;text-transform:uppercase}.tooltip-cashflow-item{display:flex;font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono);font-size:12px;gap:16px;justify-content:space-between;padding:2px 0}.tooltip-cf-hidden{color:#5a5a70;color:var(--color-text-muted);font-style:italic}.tooltip-cf-date{color:#8888a0;color:var(--color-text-secondary)}.tooltip-cf-amount{font-weight:500}.tooltip-moic-details{border-top:1px solid #2a2a3a;border-top:1px solid var(--color-border);margin-top:8px;padding-top:8px}.tooltip-moic-row{display:flex;font-size:12px;gap:16px;justify-content:space-between;padding:2px 0}.tooltip-moic-label{color:#8888a0;color:var(--color-text-secondary)}.tooltip-moic-value{font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono);font-weight:500}.chart-footer{align-items:center;border-top:1px solid #2a2a3a;border-top:1px solid var(--color-border);display:flex;gap:16px;justify-content:flex-end;margin-top:16px;padding-top:16px}.benchmark-irr-display{color:#8888a0;color:var(--color-text-secondary);font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-family:var(--font-mono);font-size:13px}.benchmark-selector{align-items:center;display:flex;gap:8px}.benchmark-selector label{color:#8888a0;color:var(--color-text-secondary);font-size:13px}.benchmark-selector select{background:#0a0a0f;background:var(--color-bg);border:1px solid #2a2a3a;border:1px solid var(--color-border);border-radius:4px;border-radius:var(--radius-sm);color:#f0f0f5;color:var(--color-text-primary);cursor:pointer;font-family:inherit;font-size:13px;padding:6px 12px}.benchmark-selector select:focus{border-color:#6366f1;border-color:var(--color-accent);outline:none}.benchmark-selector select:hover{border-color:#3a3a4a;border-color:var(--color-border-light)}.chart-type-selector select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:#0000;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath fill='%238888a0' d='m3 4.5 3 3 3-3'/%3E%3C/svg%3E");background-position:100%;background-repeat:no-repeat;border:none;color:#f0f0f5;color:var(--color-text-primary);cursor:pointer;font-size:16px;font-weight:600;letter-spacing:-.01em;padding:0 20px 0 0}.chart-type-selector select:focus{outline:none}.chart-type-selector select option{background:#12121a;background:var(--color-bg-elevated);color:#f0f0f5;color:var(--color-text-primary)}.info-tooltip{color:#8888a0;color:var(--color-text-secondary);cursor:help;font-size:10px;margin-left:0;position:relative;text-transform:none;vertical-align:super}.info-tooltip:after{background:#12121a;background:var(--color-bg-elevated);border:1px solid #2a2a3a;border:1px solid var(--color-border);border-radius:4px;border-radius:var(--radius-sm);color:#f0f0f5;color:var(--color-text-primary);content:attr(data-tooltip);font-size:12px;font-weight:400;left:50%;opacity:0;padding:6px 10px;pointer-events:none;position:absolute;top:125%;transform:translateX(-50%);transition:opacity .15s;white-space:nowrap;z-index:100}.info-tooltip:hover:after{opacity:1}.error,.loading{color:#8888a0;color:var(--color-text-secondary);font-size:14px;padding:48px 24px;text-align:center}.error{color:#ef4444;color:var(--color-negative)}@media (max-width:768px){.app{padding:16px}td,th{padding:12px 16px}.metrics-row{grid-template-columns:1fr}}
/*# sourceMappingURL=main.67ef4aeb.css.map*/