:root{--accent-primary:#0891b2;--accent-hover:#0e7490;--accent-light:#0891b21a;--accent-text:#155e75;--bg-page:#f8fafc;--bg-card:#fff;--bg-section:#f1f5f9;--bg-tab-bar:#e2e8f0;--text-primary:#0f172a;--text-secondary:#475569;--text-tertiary:#94a3b8;--color-positive:#16a34a;--color-positive-bg:#f0fdf4;--color-negative:#dc2626;--color-negative-bg:#fef2f2;--color-warning:#d97706;--color-warning-bg:#fffbeb;--color-warning-text:#92400e;--border-primary:#e2e8f0;--border-input:#cbd5e1;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 12px #0000001a;--shadow-lg:0 10px 40px #00000026;--shadow-card:0 2px 8px #00000014}body{margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.modal-content{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-lg);max-width:400px;padding:30px;width:90%}.modal-content h2{color:var(--text-primary);margin:0 0 20px}.modal-content .form-group{margin-bottom:20px}.modal-content label{color:var(--text-primary);display:block;font-weight:500;margin-bottom:8px}.modal-content input[type=text]{border:2px solid var(--border-input);border-radius:8px;box-sizing:border-box;font-size:1rem;padding:12px;width:100%}.modal-content input[type=text]:focus{border-color:var(--accent-primary);outline:none}.modal-content textarea{border:2px solid var(--border-input);border-radius:8px;box-sizing:border-box;font-family:inherit;font-size:1rem;min-height:80px;padding:12px;resize:vertical;width:100%}.modal-content textarea:focus{border-color:var(--accent-primary);outline:none}.optional-label{color:var(--text-tertiary);font-size:.9em;font-weight:400}.modal-buttons{display:flex;gap:12px;justify-content:flex-end}.cancel-button:hover:not(:disabled){background:var(--bg-page);border-color:var(--border-input)}.create-button{background:var(--accent-primary);border:2px solid var(--accent-primary);border-radius:6px;color:#fff;cursor:pointer;font-family:inherit;font-size:1rem;padding:10px 20px;transition:background .2s,border-color .2s}.create-button:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.cancel-button:disabled,.create-button:disabled{cursor:not-allowed;opacity:.6}.date-select{background:#fff;border:2px solid var(--border-input);border-radius:8px;box-sizing:border-box;cursor:pointer;font-size:1rem;padding:12px;width:100%}.date-select:focus{border-color:var(--accent-primary);outline:none}.date-select:disabled{background:var(--bg-page);cursor:not-allowed}.field-hint{font-size:.85rem;margin:8px 0 0}.field-hint,.loading-text{color:var(--text-secondary)}.loading-text{font-size:.9rem;margin:0;padding:12px 0}.app-header{background:var(--bg-card);box-shadow:var(--shadow-sm);justify-content:space-between;padding:20px 40px;position:relative}.app-header,.nav-brand{align-items:center;display:flex}.nav-brand{color:var(--accent-primary);font-size:1.5rem;font-weight:600;gap:8px;min-width:150px;text-decoration:none}.nav-brand:hover{color:var(--accent-hover)}.nav-tabs{align-items:center;display:flex;gap:8px}.nav-tab{border-radius:6px;color:var(--text-secondary);font-size:.95rem;font-weight:500;padding:8px 16px;text-decoration:none;transition:background .15s,color .15s}.nav-tab:hover{background:var(--accent-light);color:var(--accent-primary)}.nav-tab.active{background:var(--accent-primary);color:#fff}.nav-buttons{gap:15px;justify-content:flex-end;min-width:150px}.nav-buttons,.nav-icon-button{align-items:center;display:flex}.nav-icon-button{background:#0000;border:none;border-radius:8px;color:var(--accent-primary);cursor:pointer;height:40px;justify-content:center;text-decoration:none;transition:background .15s,color .15s,transform .1s;width:40px}.nav-icon-button:hover{background:var(--accent-light);color:var(--accent-hover)}.nav-icon-button:active{background:#0891b233;transform:scale(.95)}.nav-icon-button.active{background:var(--accent-light);color:var(--accent-primary)}.landing-page{background:#0891b2;display:flex;flex-direction:column;min-height:100vh}.landing-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-bottom:1px solid #ffffff26;justify-content:space-between;padding:16px 40px}.landing-brand,.landing-header{align-items:center;display:flex}.landing-brand{gap:12px}.landing-brand-text{display:flex;flex-direction:column}.landing-brand-name{color:#fff;font-size:1.3rem;font-weight:700;line-height:1.2}.landing-brand-slogan{color:#ffffffbf;font-size:.75rem;line-height:1.2}.auth-buttons{align-items:center;display:flex;gap:12px}.auth-button{border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 24px;transition:background .2s,box-shadow .2s}.auth-button:hover{box-shadow:0 2px 8px #00000026}.login-button{background:#fff;color:#0e7490}.login-button:hover{background:#f0fdfa}.register-button{background:#ffffff26;border:1px solid #fff6;color:#fff}.register-button:hover{background:#ffffff40}.landing-hero{background:linear-gradient(160deg,#0891b2,#0e7490);color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:calc(100vh - 61px);padding:80px 40px 90px;text-align:center}.wave-divider{line-height:0;margin-top:-1px}.wave-divider svg{display:block;height:60px;width:100%}.landing-hero h1{font-size:2.4rem;font-style:italic;line-height:1.3;margin:0 auto 48px;max-width:700px}.landing-hero-image{margin:0 auto;max-width:900px}.landing-hero-image img{aspect-ratio:3416/1870;background:#ffffff14;border-radius:10px;box-shadow:0 8px 32px #00000040;height:auto;width:100%}.how-it-works{background:linear-gradient(160deg,#0c7d9e,#0e7490);color:#fff;padding:80px 40px 200px;text-align:center}.how-it-works h2{font-size:1.8rem;font-weight:700;margin-bottom:48px}.how-it-works-steps{grid-gap:32px;display:grid;gap:32px;grid-template-columns:repeat(4,1fr);margin:0 auto;max-width:1000px}.how-it-works-step{text-align:left}.step-number{align-items:center;background:#fff3;border:2px solid #fff6;border-radius:50%;display:inline-flex;font-size:1rem;font-weight:700;height:36px;justify-content:center;margin-bottom:16px;width:36px}.how-it-works-step h4{font-size:1.05rem;font-weight:600;margin-bottom:10px}.how-it-works-step p{color:#fffc;font-size:.9rem;line-height:1.7;margin:0}.landing-footer{background:#073d58;color:#ffffffb3;padding:60px 40px;text-align:center}.landing-footer h3{color:#ffffffe6;font-size:1.1rem;font-weight:600;margin-bottom:20px}.landing-footer p{font-size:.9rem;line-height:1.7;margin:0 auto;max-width:700px}@media (max-width:768px){.landing-header{flex-direction:column;gap:16px;padding:16px 20px;text-align:center}.landing-brand{justify-content:center}.landing-hero{min-height:auto;padding:50px 20px 60px}.landing-hero h1{font-size:1.8rem}.how-it-works{padding:50px 20px}.how-it-works-steps{gap:28px;grid-template-columns:1fr}.how-it-works-step{text-align:center}.landing-footer{padding:40px 20px}}.popup-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.popup-content{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-lg);max-width:400px;padding:40px;text-align:center;width:90%}.popup-content h2{color:var(--text-primary);margin-bottom:10px}.popup-content p{color:var(--text-secondary)}.currency-select,.popup-content p{margin-bottom:20px}.save-button{border:none;border-radius:8px;padding:12px;transition:background .2s;width:100%}.save-button:disabled{background:#aaa}.dashboard{background:var(--bg-page);min-height:100vh}.dashboard-content{padding:40px}.dashboard-content>p{color:var(--text-secondary);font-size:1.1rem;text-align:center}.empty-state{padding:60px 20px;text-align:center}.empty-state h2{color:var(--text-primary);margin-bottom:15px}.empty-state p{color:var(--text-secondary);font-size:1.1rem;margin-bottom:30px;margin-left:auto;margin-right:auto;max-width:400px}.create-portfolio-button{background:var(--accent-primary);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.1rem;padding:15px 30px;transition:background .2s}.create-portfolio-button:hover{background:var(--accent-hover)}.dashboard-card-wrapper{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-card);overflow:hidden}.dashboard-card-header{align-items:center;background:linear-gradient(135deg,#0891b2,#0e7490);display:flex;justify-content:space-between;padding:25px 30px}.dashboard-card-info h2{color:#fff;font-size:1.5rem;margin:0 0 6px}.dashboard-meta{color:#fffc;font-size:.9rem;margin:0 0 4px}.dashboard-meta:last-child{margin-bottom:0}.dashboard-tabs{background:var(--bg-tab-bar);border-bottom:1px solid var(--border-primary);display:flex}.tab-button{transition:background .15s,color .15s,border-color .15s}.tab-section-header{align-items:center;background:var(--bg-card);box-sizing:border-box;display:flex;justify-content:space-between;min-height:60px;padding:18px 30px}.tab-section-header h3{font-size:1.1rem}.missing-snapshots-section{border-bottom:1px solid var(--border-primary)}.missing-portfolio{color:var(--text-primary);font-weight:500;min-width:150px}.missing-date{flex:1 1;text-align:center}.coming-soon-section{color:var(--text-tertiary);padding:60px 30px;text-align:center}.coming-soon-section p{font-size:1rem;margin:0}.stacked-chart-wrapper{position:relative}.stacked-chart-legend{display:flex;flex-wrap:wrap;gap:16px;margin-top:15px;padding:10px 0}.stacked-legend-item{align-items:center;display:flex;gap:6px}.stacked-legend-item .legend-color{border-radius:3px;height:12px;width:12px}.stacked-legend-item .legend-label{color:var(--text-secondary);font-size:.85rem}.stacked-tooltip{min-width:180px}.tooltip-date{border-bottom:1px solid var(--border-primary);font-weight:600;margin-bottom:10px;padding-bottom:8px}.tooltip-portfolio-row{align-items:center;display:flex;gap:8px;margin-bottom:6px}.tooltip-color{border-radius:2px;flex-shrink:0;height:10px;width:10px}.tooltip-portfolio-name{color:var(--text-secondary);flex:1 1;font-size:.85rem}.tooltip-portfolio-value{font-size:.85rem;font-weight:500}.tooltip-total-row{border-top:1px solid var(--border-primary);display:flex;font-weight:600;justify-content:space-between;margin-top:10px;padding-top:8px}.tooltip-total-value{color:var(--accent-primary)}.performance-chart,.returns-chart{min-height:200px;width:100%}.performance-chart{min-height:300px}.chart-container{min-height:300px;position:relative;width:100%}.chart-empty{align-items:center;background:#fafafa;border-radius:8px;color:var(--text-tertiary);display:flex;font-size:14px;justify-content:center;min-height:200px}.histogram-chart{width:100%}.histogram-chart svg{height:auto;width:100%}.histogram-stats{border-top:1px solid #f0f0f0;display:flex;gap:24px;justify-content:center;margin-top:12px;padding-top:12px}.stat-item{align-items:center;display:flex;gap:6px}.stat-label{color:var(--text-tertiary);font-size:12px}.stat-value{color:var(--text-primary);font-size:14px;font-weight:600}.stat-value.positive{color:var(--accent-primary)}.stat-value.negative{color:#ef5350}.cash-vs-securities-chart-container{width:100%}.cash-vs-securities-chart{min-height:200px;width:100%}.chart-legend{border-top:1px solid #f0f0f0;display:flex;gap:20px;justify-content:center;margin-top:12px;padding-top:12px}.legend-item{align-items:center;color:var(--text-secondary);display:flex;font-size:13px;gap:6px}.legend-color{border-radius:2px;height:12px;width:12px}.holdings-breakdown-chart-container{position:relative;width:100%}.holdings-breakdown-chart{min-height:250px;width:100%}.chart-tooltip{background:#fffffff2;border:1px solid #e0e0e0;border-radius:6px;box-shadow:var(--shadow-card);color:var(--text-primary);font-size:13px;padding:8px 12px;pointer-events:none;position:absolute;white-space:nowrap;z-index:100}.pie-chart-container{align-items:center;display:flex;flex-direction:row;gap:24px;justify-content:center;padding:20px 0;position:relative}.pie-chart-container svg{flex-shrink:0}.pie-chart-legend{display:flex;flex-direction:column;gap:8px;min-width:120px}.pie-chart-legend-scrollable{max-height:400px;overflow-y:auto}.pie-legend-item{align-items:center;display:flex;font-size:13px;gap:8px}.pie-legend-item .legend-color{flex-shrink:0}.pie-legend-label{color:var(--text-secondary);flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pie-legend-value{font-weight:600}.pie-chart-tooltip,.pie-legend-value{color:var(--text-primary);white-space:nowrap}.pie-chart-tooltip{background:#fffffff2;border:1px solid #e0e0e0;border-radius:6px;box-shadow:var(--shadow-card);font-size:13px;padding:8px 12px;pointer-events:none;position:absolute;z-index:100}.pie-tooltip-header{align-items:center;display:flex;gap:8px}.pie-tooltip-color{border-radius:2px;height:10px;width:10px}.pie-tooltip-value{color:var(--text-secondary);margin-top:4px}.industry-heatmap{padding:10px 0;position:relative;width:100%}.treemap-container{background:var(--bg-section);border-radius:8px;height:400px;overflow:hidden;position:relative;width:100%}.treemap-group{padding:2px}.treemap-group,.treemap-item{box-sizing:border-box;position:absolute}.treemap-item{border:1px solid #ffffff4d;cursor:pointer;overflow:hidden;transition:filter .15s ease}.treemap-item:hover{filter:brightness(1.1);z-index:10}.treemap-item-content{align-items:center;color:#fff;display:flex;flex-direction:column;height:100%;justify-content:center;overflow:hidden;padding:8px;text-align:center}.treemap-item-name{font-size:12px;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px #0000004d;white-space:nowrap}.treemap-item-value{font-size:11px;margin-top:2px;opacity:.9;text-shadow:0 1px 2px #0000004d}.treemap-group-label{bottom:4px;color:#ffffffb3;font-size:10px;font-weight:600;left:6px;letter-spacing:.5px;pointer-events:none;position:absolute;text-shadow:0 1px 2px #00000080;text-transform:uppercase}.treemap-tooltip{background:#fffffffa;border:1px solid #e0e0e0;border-radius:6px;box-shadow:0 4px 12px #00000026;color:var(--text-primary);font-size:13px;padding:10px 14px;pointer-events:none;position:absolute;white-space:nowrap;z-index:100}.treemap-tooltip-header{align-items:center;display:flex;gap:8px;margin-bottom:4px}.treemap-tooltip-color{border-radius:2px;flex-shrink:0;height:12px;width:12px}.treemap-tooltip-industry{color:var(--text-tertiary);font-size:11px;margin-bottom:4px}.treemap-tooltip-value{color:var(--text-primary);font-size:13px}.settings{background:var(--bg-page);min-height:100vh}.settings-content{padding:40px}.settings-card{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-card);margin-bottom:20px;padding:30px}.settings-card:last-child{margin-bottom:0}.settings-card h2{color:var(--text-primary);margin:0 0 10px}.settings-card>p{color:var(--text-secondary);margin-bottom:25px}.form-group{margin-bottom:20px}.form-group label{color:var(--text-primary);display:block;font-weight:500;margin-bottom:8px}.currency-select{border:2px solid var(--border-input);border-radius:8px;cursor:pointer;font-size:1rem;padding:12px;width:100%}.currency-select:focus{border-color:var(--accent-primary);outline:none}.update-button{background:var(--accent-primary);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;padding:12px;transition:background .2s;width:100%}.update-button:hover:not(:disabled){background:var(--accent-hover)}.update-button:disabled{background:#aaa;cursor:not-allowed}.success-message{color:var(--color-positive);font-size:.9rem}.error-message,.success-message{margin-bottom:15px}.portfolio-order-list{margin-bottom:20px}.portfolio-order-item{align-items:center;background:var(--bg-section);border:1px solid var(--border-primary);border-radius:8px;display:flex;justify-content:space-between;margin-bottom:8px;padding:12px 16px}.portfolio-order-item:last-child{margin-bottom:0}.portfolio-order-name{color:var(--text-primary);font-weight:500}.portfolio-order-buttons{display:flex;gap:6px}.order-btn{align-items:center;background:var(--bg-card);border:1px solid var(--border-input);border-radius:6px;color:var(--text-secondary);cursor:pointer;display:flex;height:32px;justify-content:center;padding:0;transition:background .15s,border-color .15s,color .15s;width:32px}.order-btn:hover:not(:disabled){background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.order-btn:disabled{cursor:not-allowed;opacity:.4}.categories-error{background:var(--color-negative-bg);border:1px solid #dc26264d;border-radius:6px;color:var(--color-negative);font-size:.9rem;margin-bottom:15px;padding:10px 14px}.categories-loading{color:var(--text-secondary);font-size:.9rem;padding:20px 0}.categories-list{display:flex;flex-direction:column;gap:8px;margin-bottom:15px}.category-row{background:var(--bg-section);border:1px solid var(--border-primary);border-radius:8px;gap:12px;padding:12px 16px}.category-name,.category-row{align-items:center;display:flex}.category-name{color:var(--text-primary);flex:1 1;font-weight:500;gap:8px}.category-default-badge{background:var(--border-primary);border-radius:3px;color:var(--text-secondary);font-size:.7rem;font-weight:600;padding:2px 6px;text-transform:uppercase}.category-ticker-count{color:var(--text-tertiary);font-size:.85rem;min-width:70px}.category-actions{display:flex;gap:8px}.category-cancel-btn,.category-delete-btn,.category-edit-btn,.category-save-btn{border-radius:4px;cursor:pointer;font-size:.8rem;padding:5px 10px;transition:background .2s,color .2s}.category-edit-btn{background:#0000;border:1px solid var(--accent-primary);color:var(--accent-primary)}.category-edit-btn:hover{background:var(--accent-primary);color:#fff}.category-delete-btn{background:#0000;border:1px solid var(--color-negative);color:var(--color-negative)}.category-delete-btn:hover{background:var(--color-negative);color:#fff}.category-save-btn{border:1px solid var(--accent-primary)}.category-save-btn:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.category-cancel-btn{background:#0000;border:1px solid var(--border-input);color:var(--text-secondary)}.category-cancel-btn:hover{background:var(--bg-page)}.category-edit-input{border:1px solid var(--accent-primary);border-radius:4px;flex:1 1;font-size:.9rem;outline:none;padding:8px 12px}.add-category-form{display:flex;gap:10px;margin-top:10px}.add-category-input{border:1px solid var(--border-input);border-radius:6px;flex:1 1;font-size:.9rem;outline:none;padding:10px 14px}.add-category-input:focus{border-color:var(--accent-primary)}.add-category-btn{background:var(--accent-primary);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 20px;transition:background .2s}.add-category-btn:hover:not(:disabled){background:var(--accent-hover)}.add-category-btn:disabled{cursor:not-allowed;opacity:.5}.modal-overlay{z-index:1000}.delete-category-warning{color:var(--color-negative);font-weight:500}.delete-modal-confirm:hover:not(:disabled){background:#c82333;border-color:#c82333}.settings-tabs{background:var(--bg-card);border-bottom:1px solid var(--border-primary);display:flex;gap:8px;padding:20px 40px}.settings-tab-button{background:#0000;border:none;border-radius:8px;color:var(--text-secondary);cursor:pointer;font-size:.95rem;font-weight:500;padding:10px 20px;transition:background .15s,color .15s}.settings-tab-button:hover{background:var(--accent-light);color:var(--accent-primary)}.settings-tab-button.active{background:var(--accent-primary);color:#fff}.ticker-search{border:1px solid var(--border-input);border-radius:8px;font-size:.95rem;margin-bottom:20px;outline:none;padding:12px 16px;width:100%}.ticker-search:focus{border-color:var(--accent-primary)}.tickers-table-container{overflow-x:auto}.tickers-table{border-collapse:collapse;width:100%}.tickers-table td,.tickers-table th{border-bottom:1px solid var(--border-primary);padding:12px 16px;text-align:left}.tickers-table th{color:#555;font-size:.85rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.tickers-table tbody tr:hover,.tickers-table th{background:var(--bg-section)}.ticker-cell{color:var(--text-primary);font-family:monospace;font-size:.95rem;font-weight:600}.ticker-select{background:#fff;border:1px solid var(--border-input);border-radius:6px;cursor:pointer;font-size:.9rem;min-width:140px;padding:8px 12px}.ticker-select:focus{border-color:var(--accent-primary);outline:none}.no-tickers{color:var(--text-tertiary);font-style:italic;padding:20px 0;text-align:center}.portfolio{background:var(--bg-page);min-height:100vh;position:relative}.content-loading-overlay{align-items:center;background:#fff9;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:100}.spinner{animation:spin .8s linear infinite;border:4px solid var(--border-primary);border-radius:50%;border-top-color:var(--accent-primary);height:40px;width:40px}@keyframes spin{to{transform:rotate(1turn)}}.portfolio-content{padding:40px}.portfolio-card-wrapper{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-card);overflow:hidden}.portfolio-card-header{align-items:center;background:linear-gradient(135deg,#0891b2,#0e7490);display:flex;justify-content:space-between;padding:25px 30px}.portfolio-header-left{flex:0 0 25%;min-width:0}.portfolio-header-center{flex:0 0 50%;min-width:0;padding:0 20px;text-align:center}.portfolio-header-right{display:flex;flex:0 0 25%;justify-content:flex-end;min-width:0}.portfolio-header-center h2{color:#fff;font-size:1.5rem;margin:0}.portfolio-description{color:#ffffffd9;font-size:.95rem;line-height:1.4;margin:8px 0 0}.portfolio-meta{color:#fffc;font-size:.9rem;margin:0 0 4px}.portfolio-meta:last-child{margin-bottom:0}.back-button{background:var(--accent-primary);border-radius:6px;color:#fff;display:inline-block;padding:12px 24px;text-decoration:none;transition:background .2s}.back-button:hover{background:var(--accent-hover)}.update-portfolio-button{background:#fff3;border:2px solid #ffffff80;border-radius:6px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:500;padding:10px 20px;transition:background .2s,border-color .2s}.update-portfolio-button:hover{background:#ffffff4d;border-color:#fffc}.empty-snapshot{padding:60px 30px;text-align:center}.empty-snapshot h3{color:var(--text-primary);margin:0 0 10px}.empty-snapshot p{color:var(--text-tertiary);margin:0}.snapshot-header{align-items:center;background:var(--bg-card);border-bottom:1px solid var(--border-primary);box-sizing:border-box;display:flex;justify-content:space-between;min-height:60px;padding:18px 30px}.snapshot-header h3{color:var(--text-primary);font-size:1.1rem;margin:0}.snapshot-count{color:var(--text-tertiary);font-size:.85rem;font-weight:400}.edit-snapshot-button{background:#0000;border:2px solid var(--accent-primary);border-radius:6px;color:var(--accent-primary);cursor:pointer;font-size:.95rem;font-weight:500;padding:8px 20px;transition:background .2s,color .2s}.edit-snapshot-button:hover{background:var(--accent-primary);color:#fff}.snapshot-totals{align-items:center;background:var(--bg-card);border-bottom:1px solid var(--border-primary);display:flex;gap:15px;padding:15px 30px}.snapshot-totals .total-label{color:var(--text-secondary);font-size:1rem;font-weight:500}.total-badge{background:var(--accent-primary);border-radius:20px;color:#fff;font-size:1.1rem;font-weight:600;padding:8px 16px}.entries-section{background:var(--bg-card);border-bottom:1px solid var(--border-primary);padding:20px 30px}.entries-section:last-child{border-bottom:none}.entries-section h4{color:var(--text-secondary);font-size:.9rem;letter-spacing:.5px;margin:0 0 15px;text-transform:uppercase}.entries-table{border:1px solid var(--border-primary);border-radius:8px;overflow:hidden}.entries-row{align-items:center;border-bottom:1px solid var(--border-primary);display:grid;padding:12px 15px}.entries-row:last-child{border-bottom:none}.entries-header{color:var(--text-secondary);font-size:.85rem;font-weight:600}.entries-header,.entries-row:not(.entries-header):hover{background:var(--bg-section)}.cash-section .entries-row{grid-template-columns:80px 1fr 1fr 70px}.stock-section .entries-row{grid-template-columns:90px 80px 100px 1fr 1fr 70px}.col-price{color:var(--text-secondary);font-size:.95rem}.col-currency{color:var(--accent-primary);font-weight:600}.col-ticker{color:var(--text-primary);font-family:monospace;font-weight:600}.col-quantity{color:var(--text-secondary)}.col-value{color:var(--text-primary);font-weight:500;text-align:right}.col-converted{color:var(--accent-primary)}.col-converted,.col-percent{font-weight:600;text-align:right}.col-percent{color:var(--color-positive)}.currency-rates-section{border-top:1px solid var(--border-primary)}.rates-info{color:var(--text-tertiary);font-size:.85rem;margin:0 0 12px}.currency-rates-list{display:flex;flex-wrap:wrap;gap:15px}.currency-rate-item{align-items:center;background:var(--bg-section);border-radius:6px;display:flex;font-size:.9rem;gap:8px;padding:8px 14px}.rate-from{color:var(--text-primary);font-weight:600}.rate-arrow{color:var(--text-tertiary)}.rate-to{color:var(--accent-primary);font-weight:500}.portfolio-total-section{background:var(--bg-card);border-top:1px solid var(--border-primary);padding:20px 30px}.portfolio-total{align-items:center;display:flex;justify-content:space-between}.total-label{color:var(--text-primary);font-size:1.1rem;font-weight:500}.total-value{color:var(--accent-primary);font-size:1.5rem;font-weight:700}.portfolio-tabs{background:var(--bg-tab-bar);border-bottom:1px solid var(--border-primary);display:flex}.tab-button{background:#0000;border:none;border-bottom:3px solid #0000;color:var(--text-secondary);cursor:pointer;flex:1 1;font-size:.95rem;font-weight:500;padding:14px 24px;position:relative;transition:background .2s,color .2s,border-color .2s}.tab-button:hover{background:var(--accent-light);color:var(--accent-primary)}.tab-button.active{border-bottom-color:var(--accent-primary);color:var(--accent-primary)}.tab-button.active,.tab-content{background:var(--bg-card)}.snapshots-table{width:100%}.snapshots-header{background:var(--bg-section);color:var(--text-secondary);display:grid;font-size:.85rem;font-weight:600;grid-template-columns:1fr 170px 150px 50px;padding:14px 30px}.snapshot-row-container,.snapshots-header{border-bottom:1px solid var(--border-primary)}.snapshot-row-container:last-child{border-bottom:none}.snapshot-row{align-items:center;cursor:pointer;display:grid;grid-template-columns:1fr 170px 150px 50px;padding:14px 30px;transition:background .15s}.snapshot-row:hover{background:var(--bg-section)}.snapshot-row.expanded{background:var(--accent-light)}.snap-col-date{color:var(--text-primary);font-weight:500}.snap-col-flows{color:var(--text-secondary);text-align:right}.snap-col-total{color:var(--accent-primary);font-weight:600;text-align:right}.snap-col-expand{text-align:center}.expand-icon{color:var(--text-tertiary);font-size:.8rem;transition:color .2s}.snapshot-row.expanded .expand-icon{color:var(--accent-primary)}.loading-snapshots{color:var(--text-secondary);padding:40px;text-align:center}.snapshots-summary{align-items:center;background:var(--bg-section);border-top:1px solid var(--border-primary);display:flex;justify-content:space-between;padding:15px 30px}.summary-label{color:var(--text-secondary);font-size:.9rem}.summary-value{color:var(--text-primary);font-size:.9rem;font-weight:500}.expanded-snapshot-details{background:var(--bg-section);border-top:1px solid var(--border-primary);padding:20px 30px}.loading-expanded{color:var(--text-secondary);padding:20px;text-align:center}.expanded-section{margin-bottom:20px}.expanded-section:last-child{margin-bottom:0}.expanded-section h5{color:var(--text-secondary);font-size:.85rem;letter-spacing:.5px;margin:0 0 10px;text-transform:uppercase}.expanded-table{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:6px;overflow:hidden}.expanded-row{grid-gap:16px;align-items:center;border-bottom:1px solid var(--border-primary);display:grid;font-size:.9rem;gap:16px;grid-template-columns:1fr auto auto auto;padding:10px 12px}.expanded-row:last-child{border-bottom:none}.expanded-row-stock{grid-template-columns:110px 1fr 70px 100px 100px 100px 50px}.expanded-header{background:var(--bg-section);font-size:.8rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.expanded-header,.expanded-header .exp-name,.expanded-header .exp-ticker{color:var(--text-secondary)}.exp-currency{color:var(--accent-primary);font-weight:600}.exp-name{color:var(--text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exp-ticker{color:var(--text-secondary);font-family:monospace;font-weight:600;text-align:left;white-space:nowrap}.exp-qty{min-width:60px}.exp-price,.exp-qty{color:var(--text-secondary);text-align:right}.exp-price{font-size:.85rem;min-width:90px}.exp-value{color:var(--text-primary);font-weight:500}.exp-converted,.exp-value{min-width:100px;text-align:right}.exp-converted{color:var(--accent-primary);font-weight:600}.exp-percent{color:var(--color-positive);font-weight:600;min-width:50px;text-align:right}.expanded-rates{display:flex;flex-wrap:wrap;gap:10px}.exp-rate-item{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:5px;color:var(--text-secondary);font-size:.85rem;padding:6px 12px}.expanded-actions{display:flex;gap:10px;margin-top:20px}.edit-snapshot-btn{background:#0000;border:1px solid var(--accent-primary);border-radius:5px;color:var(--accent-primary);cursor:pointer;font-size:.9rem;padding:8px 16px;transition:background .2s,color .2s}.edit-snapshot-btn:hover{background:var(--accent-primary);color:#fff}.delete-snapshot-btn{background:#0000;border:1px solid var(--color-negative);border-radius:5px;color:var(--color-negative);cursor:pointer;font-size:.9rem;padding:8px 16px;transition:background .2s,color .2s}.delete-snapshot-btn:hover{background:var(--color-negative);color:#fff}.missing-snapshots-section{border-top:1px solid var(--border-primary);padding:20px 30px}.missing-snapshots-section h4{color:var(--text-primary);font-size:1rem;margin:0 0 15px}.no-missing{color:var(--color-positive);font-size:.95rem;margin:0}.missing-snapshots-list{display:flex;flex-direction:column;gap:10px}.missing-snapshot-row{align-items:center;background:var(--color-warning-bg);border:1px solid #d977064d;border-radius:8px;display:flex;justify-content:space-between;padding:12px 16px}.missing-date{color:var(--color-warning-text);font-weight:500}.add-missing-btn{background:var(--accent-primary);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:.85rem;padding:6px 14px;transition:background .2s}.add-missing-btn:hover{background:var(--accent-hover)}.tab-section-header{border-bottom:1px solid var(--border-primary);padding:20px 30px}.tab-section-header.no-border{border-bottom:none}.tab-section-header h3{color:var(--text-primary);font-size:1.2rem;margin:0}.performance-tab{background:var(--bg-card)}.performance-main-section{border-bottom:1px solid var(--border-primary);display:flex;padding:20px 30px}.performance-left{border-right:1px solid var(--border-primary);flex:0 0 65%;padding-right:30px}.performance-right{display:flex;flex:0 0 35%;flex-direction:column;padding-left:30px}.performance-main-section-equal{display:flex}.performance-main-section-equal .performance-column{display:flex;flex:1 1;flex-direction:column}.performance-main-section-equal .performance-column:first-child{border-right:1px solid var(--border-primary);padding-right:30px}.performance-main-section-equal .performance-column:last-child{padding-left:30px}.kpi-grid{display:flex;flex-direction:column;gap:12px;width:100%}.performance-section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px;min-height:34px}.performance-section-header h3{color:var(--text-primary);font-size:1.2rem;margin:0}.performance-toggles{align-items:center;display:flex;gap:12px}.performance-period-toggle{background:var(--bg-tab-bar);border-radius:6px;display:flex;gap:0;padding:3px}.period-button{background:#0000;border:none;border-radius:4px;color:var(--text-secondary);cursor:pointer;font-size:.85rem;font-weight:500;padding:6px 16px;transition:background .2s,color .2s}.period-button.active,.period-button:hover{color:var(--accent-primary)}.period-button.active{background:var(--bg-card);box-shadow:var(--shadow-sm)}.performance-graph-placeholder{align-items:center;background:var(--bg-section);border:2px dashed var(--border-input);border-radius:8px;display:flex;justify-content:center;min-height:300px}.performance-graph-container{min-height:300px}.returns-chart-container{min-height:200px}.chart-placeholder{align-items:center;background:var(--bg-section);border-radius:8px;color:var(--text-tertiary);display:flex;font-size:.95rem;justify-content:center;min-height:200px}.histogram-chart-container{min-height:200px}.placeholder-text{color:var(--text-tertiary);font-size:.95rem}.kpi-item{align-items:center;display:flex;justify-content:space-between}.kpi-label{color:var(--text-secondary);font-size:.9rem}.kpi-value{color:var(--text-primary);font-size:1rem;font-weight:600}.kpi-value.positive{color:var(--color-positive)}.kpi-value.negative{color:var(--color-negative)}.performance-secondary-section{background:var(--bg-card);border-bottom:1px solid var(--border-primary);padding:20px 30px}.performance-secondary-section:last-child{border-bottom:none}.secondary-content-placeholder{align-items:center;background:var(--bg-section);border:2px dashed var(--border-input);border-radius:8px;display:flex;justify-content:center;min-height:150px;padding:40px 30px}.risk-tab,.settings-tab{background:var(--bg-card)}.settings-form{max-width:500px;padding:20px 30px}.settings-error{background:var(--color-negative-bg);color:var(--color-negative)}.settings-error,.settings-success{border-radius:6px;font-size:.9rem;margin-bottom:20px;padding:12px 16px}.settings-success{background:var(--color-positive-bg);color:var(--color-positive)}.settings-field{margin-bottom:24px}.settings-field label{color:var(--text-primary);display:block;font-weight:500;margin-bottom:8px}.settings-field input[type=text],.settings-field select,.settings-field textarea{background:var(--bg-card);border:2px solid var(--border-input);border-radius:8px;box-sizing:border-box;font-family:inherit;font-size:1rem;padding:12px;width:100%}.settings-field textarea{min-height:80px;resize:vertical}.settings-field input[type=text]:focus,.settings-field select:focus,.settings-field textarea:focus{border-color:var(--accent-primary);outline:none}.settings-field-hint{color:var(--text-tertiary);font-size:.85rem;margin:8px 0 0}.settings-readonly-value{background:var(--bg-section);border-radius:6px;color:var(--text-primary);font-weight:500;margin:0;padding:10px 12px}.settings-actions{padding-top:10px}.save-settings-button{background:var(--accent-primary);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:12px 24px;transition:background .2s}.save-settings-button:hover:not(:disabled){background:var(--accent-hover)}.save-settings-button:disabled{cursor:not-allowed;opacity:.6}.info-modal{animation:modalSlideIn .2s ease-out;background:var(--bg-card);border-radius:16px;box-shadow:var(--shadow-lg);max-width:400px;padding:40px;text-align:center;width:90%}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.info-modal-icon{color:var(--color-positive);margin-bottom:20px}.info-modal-icon svg{height:64px;width:64px}.info-modal h3{color:var(--text-primary);font-size:1.4rem;margin:0 0 12px}.info-modal p{color:var(--text-secondary);font-size:1rem;line-height:1.5;margin:0 0 24px}.info-modal-button{background:var(--accent-primary);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:12px 32px;transition:background .2s,transform .1s}.info-modal-button:hover{background:var(--accent-hover)}.info-modal-button:active{transform:scale(.98)}.settings-danger-zone{border-top:1px solid var(--border-primary);margin:20px 30px 30px;max-width:500px;padding-top:30px}.settings-danger-zone h4{color:var(--color-negative);font-size:1rem;font-weight:600;margin:0 0 15px}.danger-zone-content{align-items:center;background:var(--color-negative-bg);border:1px solid #dc26264d;border-radius:8px;display:flex;justify-content:space-between;padding:15px 20px}.danger-zone-info{flex:1 1}.danger-zone-title{color:var(--text-primary);font-weight:600;margin:0 0 4px}.danger-zone-description{color:var(--text-secondary);font-size:.9rem;margin:0}.delete-portfolio-button{background:#0000;border:1px solid var(--color-negative);border-radius:6px;color:var(--color-negative);cursor:pointer;font-size:.9rem;font-weight:500;padding:8px 16px;transition:background .2s,color .2s}.delete-portfolio-button:hover{background:var(--color-negative);color:#fff}.delete-modal{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-lg);max-width:450px;padding:30px;text-align:center;width:90%}.delete-modal-icon{margin-bottom:15px}.delete-modal-icon svg{color:var(--color-negative)}.delete-modal h3{color:var(--text-primary);font-size:1.25rem;margin:0 0 15px}.delete-modal p{color:var(--text-secondary);font-size:.95rem;line-height:1.5;margin:0 0 15px}.delete-modal-instruction{color:var(--text-primary);font-size:.9rem}.delete-confirm-input{border:2px solid var(--border-input);border-radius:8px;box-sizing:border-box;font-size:1rem;margin-bottom:15px;padding:12px;width:100%}.delete-confirm-input:focus{border-color:var(--color-negative);outline:none}.delete-modal-error{color:var(--color-negative);font-size:.9rem;margin:0 0 15px}.delete-modal-actions{display:flex;gap:12px;justify-content:center}.delete-modal-cancel{background:#0000;border:2px solid var(--border-input);border-radius:6px;color:var(--text-secondary);cursor:pointer;font-size:1rem;font-weight:500;padding:10px 20px;transition:background .2s,border-color .2s}.delete-modal-cancel:hover:not(:disabled){background:var(--bg-page);border-color:var(--border-input)}.delete-modal-confirm{background:var(--color-negative);border:2px solid var(--color-negative);border-radius:6px;color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:10px 20px;transition:background .2s,border-color .2s}.delete-modal-confirm:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.delete-modal-cancel:disabled,.delete-modal-confirm:disabled{cursor:not-allowed;opacity:.6}.edit-snapshot{background:var(--bg-page);min-height:100vh}.edit-snapshot-content{padding:40px}.edit-snapshot-card{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-card);overflow:hidden}.edit-snapshot-info{border-bottom:1px solid var(--border-primary);padding:25px 30px 15px}.edit-snapshot-info .back-link{color:var(--accent-primary);display:inline-block;font-size:.9rem;margin-bottom:10px;text-decoration:none}.edit-snapshot-info .back-link:hover{color:var(--accent-hover)}.edit-snapshot-info h2{color:var(--text-primary);margin:0 0 5px}.edit-snapshot-info .snapshot-date{color:var(--accent-primary);font-weight:500;margin:0}.entries-editor{padding:20px 30px}.editor-section{margin-bottom:25px}.editor-section:last-child{margin-bottom:0}.section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.section-header h3{color:var(--text-primary);font-size:1rem;margin:0}.add-entry-btn{background:#0000;border:1px solid var(--accent-primary);border-radius:4px;color:var(--accent-primary);cursor:pointer;font-size:.85rem;padding:6px 12px;transition:background .2s,color .2s}.add-entry-btn:hover{background:var(--accent-primary);color:#fff}.ticker-hint{font-size:.8rem;margin:0 0 12px}.no-entries,.ticker-hint{color:var(--text-tertiary)}.no-entries{background:var(--bg-section);border-radius:6px;font-style:italic;margin:0;padding:15px;text-align:center}.entry-list{display:flex;flex-direction:column;gap:10px}.entry-row{grid-gap:10px;align-items:center;display:grid;gap:10px;grid-template-columns:80px 1fr 40px}.entry-row.stock-row{gap:8px;grid-template-columns:100px 90px 1fr 85px 85px 120px 145px 30px}.name-display{color:var(--text-primary);font-size:.8rem;overflow:hidden;padding:6px 0;text-overflow:ellipsis;white-space:nowrap;width:100%}.name-display .no-name{color:var(--text-tertiary);font-style:italic}.category-display,.region-display{align-items:center;display:flex;font-size:.75rem;font-weight:500;justify-content:center;padding:4px 0;text-align:center;width:100%}.category-display .category-value{background:var(--accent-light);color:var(--accent-primary)}.category-display .category-value,.region-display .region-value{border-radius:3px;display:inline-block;font-size:.7rem;max-width:100%;overflow:hidden;padding:3px 6px;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.region-display .region-value{background:var(--color-positive-bg);color:var(--color-positive)}.category-display .no-value,.region-display .no-value{color:#bbb;font-style:italic;font-weight:400}.price-display{align-items:center;display:flex;font-size:.8rem;justify-content:flex-end;padding:6px 0;text-align:right;white-space:nowrap;width:100%}.price-display .fetching{color:var(--accent-primary);font-style:italic}.price-display .price{color:var(--text-primary);font-weight:500}.price-display .price-error{color:var(--color-negative);font-size:.85rem}.price-display .no-price{color:var(--text-tertiary)}.value-display{align-items:center;color:var(--color-positive);display:flex;font-size:.8rem;font-weight:600;justify-content:flex-end;padding:6px 0;text-align:right;white-space:nowrap;width:100%}.entry-row input,.entry-row select{background:#fff;border:1px solid var(--border-input);border-radius:4px;box-sizing:border-box;font-size:.85rem;padding:6px 8px;width:100%}.entry-row input:focus,.entry-row select:focus{border-color:var(--accent-primary);outline:none}.entry-row select{background:#fff;cursor:pointer}.ticker-input{font-family:monospace;text-transform:uppercase}.ticker-input::placeholder{text-transform:none}.stock-row input,.stock-row select{border-color:#e0e0e0}.stock-row input:focus,.stock-row select:focus{border-color:var(--accent-primary)}.remove-entry-btn{align-items:center;background:#0000;border:none;border-radius:4px;color:#aaa;cursor:pointer;display:flex;flex-shrink:0;font-size:1.2rem;height:28px;justify-content:center;transition:background .2s,color .2s;width:28px}.remove-entry-btn:hover{background:var(--color-negative-bg);color:var(--color-negative)}.error-message{color:var(--color-negative)}.error-message,.info-message{font-size:.9rem;margin:0 0 15px;padding:0 30px}.info-message{color:var(--text-secondary);font-style:italic}.form-buttons{background:var(--bg-section);border-top:1px solid var(--border-primary);display:flex;gap:12px;justify-content:flex-end;padding:20px 30px}.cancel-button{background:#0000;border:2px solid var(--border-input);border-radius:6px;color:var(--text-secondary);cursor:pointer;font-family:inherit;font-size:1rem;padding:10px 20px;text-decoration:none;transition:background .2s,border-color .2s}.cancel-button:hover{background:var(--bg-card);border-color:var(--border-input)}.save-button{background:var(--accent-primary);border:2px solid var(--accent-primary);border-radius:6px;color:#fff;cursor:pointer;font-family:inherit;font-size:1rem;padding:10px 20px;transition:background .2s,border-color .2s}.save-button:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.save-button:disabled{cursor:not-allowed;opacity:.6}.error-state{padding:60px 20px;text-align:center}.error-state h2{color:var(--text-primary);margin-bottom:20px}.back-link{background:var(--accent-primary);border-radius:6px;color:#fff;display:inline-block;padding:12px 24px;text-decoration:none;transition:background .2s}.back-link:hover{background:var(--accent-hover)}.add-buttons{display:flex;gap:8px}.cash-flow-hint{color:var(--text-tertiary);font-size:.8rem;margin:0 0 12px}.entry-row.cash-flow-row{grid-template-columns:90px 80px 1fr 40px}.flow-type-badge{border-radius:6px;font-size:.8rem;font-weight:600;padding:8px 12px;text-align:center;text-transform:uppercase}.flow-type-badge.deposit{background:var(--color-positive-bg);color:var(--color-positive)}.flow-type-badge.withdrawal{background:var(--color-negative-bg);color:var(--color-negative)}.first-snapshot-note{background:var(--bg-section);border-radius:6px;color:var(--text-secondary);font-style:italic;margin:0;padding:15px;text-align:center}.modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.category-modal{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-lg);max-width:90%;padding:25px;width:350px}.category-modal h3{color:var(--text-primary);font-size:1.1rem;margin:0 0 8px}.category-modal p{color:var(--text-secondary);font-size:.9rem;margin:0 0 15px}.category-modal-error{background:var(--color-negative-bg);border:1px solid #dc26264d;border-radius:6px;color:var(--color-negative);font-size:.85rem;margin-bottom:12px;padding:10px 12px}.category-select{background:#fff;border:1px solid var(--border-input);border-radius:6px;cursor:pointer;font-size:.95rem;margin-bottom:12px;padding:10px 12px;width:100%}.category-select:focus{border-color:var(--accent-primary);outline:none}.new-category-input{border:1px solid var(--accent-primary);border-radius:6px;box-sizing:border-box;font-size:.95rem;margin-bottom:12px;padding:10px 12px;width:100%}.new-category-input:focus{outline:none}.category-modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:15px}.category-skip-btn{background:#0000;border:1px solid var(--border-input);border-radius:6px;color:var(--text-secondary);cursor:pointer;font-size:.9rem;padding:10px 16px;transition:background .2s}.category-skip-btn:hover{background:var(--bg-page)}.category-save-btn{background:var(--accent-primary);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 20px;transition:background .2s}.category-save-btn:hover:not(:disabled){background:var(--accent-hover)}.category-save-btn:disabled{cursor:not-allowed;opacity:.5}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.loading{align-items:center;display:flex;font-size:1.2rem;justify-content:center;min-height:100vh}.loading,.loading-section{color:var(--text-secondary)}.loading-section{padding:60px 30px;text-align:center}
/*# sourceMappingURL=main.2c7f227c.css.map*/