body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box;margin:0;padding:0}body{background:#0a0e17;color:#e0e6ed;font-family:Inter,Segoe UI,system-ui,sans-serif}.app{min-height:100vh;padding:2rem}.header{margin-bottom:2rem;text-align:center}.header h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#60a5fa,#a78bfa);-webkit-background-clip:text;background-clip:text;font-size:2.2rem;font-weight:700}.subtitle{color:#64748b;font-size:.9rem;margin-top:.25rem}.dashboard{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));margin:0 auto;max-width:1400px}.card{background:#131a2b;border:1px solid #1e293b;border-radius:12px;display:flex;flex-direction:column;padding:1.5rem}.card h2{color:#94a3b8;font-size:.8rem;font-weight:600;letter-spacing:.05em;margin-bottom:1rem;text-transform:uppercase}input,select{background:#0f1629;border:1px solid #1e293b;border-radius:8px;color:#e0e6ed;font-size:.9rem;outline:none;padding:.6rem .8rem;transition:border .2s}input:focus,select:focus{border-color:#60a5fa}button{background:#1e3a5f;border:1px solid #2563eb33;border-radius:8px;color:#60a5fa;cursor:pointer;font-size:.85rem;font-weight:500;padding:.5rem 1rem;transition:all .2s}button:hover{background:#1e4078;border-color:#2563eb}button.danger{background:#3b1a1a;border-color:#ef444433;color:#f87171}button.danger:hover{background:#4c1d1d;border-color:#ef4444}.todo-input-row{display:flex;gap:.5rem;margin-bottom:1rem}.todo-input-row input{flex:1 1}.todo-item{align-items:center;border-bottom:1px solid #1e293b;display:flex;gap:.75rem;padding:.6rem 0}.todo-item:last-child{border-bottom:none}.todo-item input[type=checkbox]{accent-color:#60a5fa;cursor:pointer;height:18px;width:18px}.todo-item span{flex:1 1;font-size:.95rem}.todo-item span.done{color:#475569;text-decoration:line-through}.search-row{display:flex;gap:.5rem;margin-bottom:1rem;position:relative}.search-row input{flex:1 1}.search-results{background:#1a2236;border:1px solid #1e293b;border-radius:8px;left:0;margin-top:4px;max-height:240px;overflow-y:auto;position:absolute;right:0;top:100%;z-index:10}.search-result-item{align-items:center;border-bottom:1px solid #1e293b;cursor:pointer;display:flex;justify-content:space-between;padding:.6rem .8rem;transition:background .15s}.search-result-item:hover{background:#243049}.search-result-item:last-child{border-bottom:none}.search-result-item .symbol{color:#60a5fa;font-weight:600}.search-result-item .name{color:#94a3b8;font-size:.8rem;margin-left:.5rem}.stock-item{align-items:center;border-bottom:1px solid #1e293b;display:flex;justify-content:space-between;padding:.7rem 0}.stock-item:last-child{border-bottom:none}.stock-info .stock-symbol{color:#e0e6ed;font-size:1rem;font-weight:700}.stock-info .stock-name{color:#64748b;font-size:.75rem}.stock-price{text-align:right}.stock-price .price{font-size:1rem;font-weight:600}.stock-price .change{font-size:.8rem}.stock-price .change.up{color:#34d399}.stock-price .change.down{color:#f87171}.stock-actions{margin-left:.75rem}.token-summary{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(3,1fr);margin-bottom:1.25rem}.token-stat{background:#0f1629;border-radius:8px;padding:.75rem;text-align:center}.token-stat .label{color:#64748b;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase}.token-stat .value{color:#a78bfa;font-size:1.3rem;font-weight:700;margin-top:.25rem}.token-form{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:1fr 1fr;margin-bottom:1rem}.token-form input,.token-form select{width:100%}.token-form .full-width{grid-column:1/-1}.token-entry{align-items:center;border-bottom:1px solid #1e293b;display:flex;font-size:.85rem;justify-content:space-between;padding:.5rem 0}.token-entry:last-child{border-bottom:none}.token-entry .meta{color:#64748b;font-size:.75rem}.loading{color:#64748b;font-style:italic;padding:1rem 0}.empty,.loading{text-align:center}.empty{color:#475569;font-size:.9rem;padding:2rem 0}.login-wrapper{align-items:center;background:#0a0e17;display:flex;justify-content:center;min-height:100vh}.login-card{background:#131a2b;border:1px solid #1e293b;border-radius:12px;display:flex;flex-direction:column;gap:1rem;max-width:360px;padding:2.5rem;text-align:center;width:100%}.login-card h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#60a5fa,#a78bfa);-webkit-background-clip:text;background-clip:text;font-size:1.8rem;font-weight:700}.login-subtitle{color:#64748b;font-size:.85rem}.login-error{color:#f87171;font-size:.85rem}.logout-btn{background:#0000;border:1px solid #1e293b;color:#64748b;font-size:.8rem;padding:.4rem .8rem;position:absolute;right:2rem;top:2rem}.logout-btn:hover{border-color:#334155;color:#e0e6ed}.header{position:relative}.portfolio-card{grid-column:1/-1}.portfolio-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.portfolio-header h2{margin-bottom:0}.upload-btn{background:#1e3a5f;border:1px solid #2563eb33;border-radius:8px;color:#60a5fa;cursor:pointer;font-size:.8rem;font-weight:500;padding:.4rem .8rem;transition:all .2s}.upload-btn:hover{background:#1e4078;border-color:#2563eb}.portfolio-summary{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(3,1fr);margin-bottom:1.25rem}.portfolio-holdings{grid-gap:0;display:grid;gap:0;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.analysis-section{border-top:1px solid #1e293b;margin-top:1rem;padding-top:1rem}.analysis-toggle{background:#0000;border:1px solid #a78bfa33;color:#a78bfa;font-size:.8rem;margin-bottom:.75rem;padding:.4rem .8rem}.analysis-toggle:hover{background:#1e1638;border-color:#a78bfa}.analysis-content{color:#94a3b8;font-size:.85rem;line-height:1.6}.analysis-content p{margin-bottom:.4rem}.analysis-content p:empty{margin-bottom:.8rem}.frontier-container{border-top:1px solid #1e293b;margin-top:1rem;padding-top:1rem}.frontier-title{color:#94a3b8;font-size:.8rem;font-weight:600;letter-spacing:.05em;margin-bottom:.75rem;text-transform:uppercase}.frontier-canvas{background:#0a0e17;border:1px solid #1e293b;border-radius:8px}.assumptions-details{margin-top:.75rem}.assumptions-details summary{color:#64748b;cursor:pointer;font-size:.75rem;-webkit-user-select:none;user-select:none}.assumptions-details summary:hover{color:#94a3b8}.assumptions-content{margin-top:.5rem}.assumptions-note{color:#64748b;font-size:.75rem;font-style:italic;line-height:1.5;margin-bottom:.5rem}.assumptions-table{border-collapse:collapse;font-size:.75rem;width:100%}.assumptions-table th{border-bottom:1px solid #1e293b;color:#64748b;font-weight:500;padding:.3rem .5rem;text-align:left}.assumptions-table td{border-bottom:1px solid #1e293b11;color:#94a3b8;padding:.25rem .5rem}.asset-name{color:#475569;font-size:.65rem;margin-left:.25rem}.benchmark-row{align-items:center;background:#0f1629;border-radius:8px;display:flex;font-size:.85rem;justify-content:space-between;margin-bottom:1rem;padding:.5rem .75rem}.benchmark-label{color:#64748b;font-size:.75rem}.benchmark-value{font-weight:600}.benchmark-value.up{color:#34d399}.benchmark-value.down{color:#f87171}.benchmark-sub{font-size:.7rem;font-weight:500}.benchmark-sub.up{color:#34d39999}.benchmark-sub.down{color:#f8717199}.period-selector{display:flex;gap:.35rem;margin-bottom:1rem}.period-btn{background:#0f1629;border:1px solid #1e293b;border-radius:6px;color:#64748b;cursor:pointer;font-size:.75rem;font-weight:500;padding:.35rem .7rem;transition:all .15s}.period-btn:hover{border-color:#334155;color:#94a3b8}.period-btn.active{background:#1e3a5f;border-color:#2563eb;color:#60a5fa}.cash-section{border-top:1px solid #1e293b;margin-top:.75rem;padding-top:.75rem}.cash-header{color:#94a3b8;font-size:.8rem;font-weight:600;margin-bottom:.5rem}.cash-item{align-items:center;color:#64748b;display:flex;font-size:.8rem;gap:.5rem;padding:.35rem 0}.cash-symbol{color:#94a3b8;font-weight:600;min-width:50px}.cash-desc{color:#475569;flex:1 1;font-size:.7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cash-value{color:#94a3b8;font-weight:500}
/*# sourceMappingURL=main.c2be0d91.css.map*/