.dashboard{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.market-overview{margin-bottom:2rem}.market-overview h2{font-size:1.25rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.market-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.market-card{background:linear-gradient(135deg,var(--bg-card),var(--bg-secondary));border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem;cursor:pointer;transition:all var(--transition-normal)}.market-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--primary-color)}.market-name{font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem}.market-price{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.market-change{font-size:.875rem;font-weight:600}.watchlist-section{margin-bottom:2rem}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.section-header h2{font-size:1.25rem;font-weight:600;color:var(--text-primary)}.last-update{font-size:.75rem;color:var(--text-muted)}.stock-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.stock-card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1rem;cursor:pointer;transition:all var(--transition-normal)}.stock-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--primary-color)}.stock-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.stock-symbol{font-size:1rem;font-weight:700;color:var(--text-primary)}.stock-name{font-size:.75rem;color:var(--text-muted);background-color:var(--bg-tertiary);padding:.25rem .5rem;border-radius:var(--radius-sm)}.stock-data{display:flex;flex-direction:column;gap:.25rem}.stock-price{font-size:1.25rem;font-weight:600;color:var(--text-primary)}.stock-change{font-size:.875rem;font-weight:600}.stock-volume{font-size:.75rem;color:var(--text-secondary)}.stock-loading{font-size:.875rem;color:var(--text-muted);font-style:italic}.empty-state p{margin-bottom:1rem}.empty-state button{padding:.75rem 1.5rem;background-color:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-weight:500;transition:background-color var(--transition-fast)}.signals-section{margin-bottom:2rem}.signals-section h2{font-size:1.25rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.signals-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.signal-card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1rem;cursor:pointer;transition:all var(--transition-normal);border-left:4px solid transparent}.signal-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.signal-type{font-size:.75rem;font-weight:600;padding:.25rem .5rem;border-radius:var(--radius-sm)}.signal-type.buy{background-color:#22c55e33;color:var(--success-color)}.signal-type.sell{background-color:#ef444433;color:var(--danger-color)}.signal-strength{font-size:.75rem;padding:.125rem .375rem;border-radius:var(--radius-sm);margin-left:auto}.signal-strength.strong{background-color:#f59e0b33;color:var(--warning-color)}.signal-score{font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem}.signal-indicators{display:flex;flex-wrap:wrap;gap:.375rem}.indicator-tag{font-size:.75rem;padding:.25rem .5rem;background-color:var(--bg-tertiary);color:var(--text-secondary);border-radius:var(--radius-sm)}.search-section{margin-bottom:2rem}.search-section h2{font-size:1.25rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.quick-symbols{display:flex;flex-wrap:wrap;gap:.5rem}.symbol-chip{padding:.5rem 1rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.symbol-chip:hover{background-color:var(--primary-color);border-color:var(--primary-color);color:#fff}@media (max-width: 768px){.market-cards{grid-template-columns:repeat(2,1fr)}.stock-grid,.signals-list{grid-template-columns:1fr}}@media (max-width: 480px){.market-cards{grid-template-columns:1fr}.section-header{flex-direction:column;align-items:flex-start;gap:.5rem}}.stock-detail{animation:fadeIn .3s ease}.stock-detail.loading,.stock-detail.error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:500px}.back-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;cursor:pointer;transition:all var(--transition-fast);margin-bottom:1rem}.back-btn:hover{background-color:var(--border-light)}.error-message{text-align:center;color:var(--danger-color)}.error-message h3{margin-bottom:.5rem}.error-message button{margin-top:1rem;padding:.75rem 1.5rem;background-color:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer}.detail-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.stock-title{display:flex;align-items:center;gap:.75rem}.stock-title h1{font-size:1.75rem;font-weight:700;color:var(--text-primary)}.market-badge{font-size:.75rem;font-weight:600;padding:.25rem .625rem;background-color:var(--primary-color);color:#fff;border-radius:var(--radius-sm)}.add-watchlist-btn{padding:.625rem 1.25rem;background-color:var(--success-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:opacity var(--transition-fast)}.add-watchlist-btn:hover{opacity:.9}.price-header{display:flex;align-items:baseline;gap:1rem;margin-bottom:1.5rem;padding:1.5rem;background:linear-gradient(135deg,var(--bg-card),var(--bg-secondary));border-radius:var(--radius-lg);border:1px solid var(--border-color)}.current-price{font-size:2.5rem;font-weight:700;color:var(--text-primary)}.price-change{display:flex;gap:.5rem;font-size:1rem;font-weight:600}.timeframe-selector{display:flex;gap:.5rem;margin-bottom:1.5rem}.timeframe-selector button{padding:.5rem 1rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-size:.875rem;cursor:pointer;transition:all var(--transition-fast)}.timeframe-selector button:hover{background-color:var(--border-light);color:var(--text-primary)}.timeframe-selector button.active{background-color:var(--primary-color);border-color:var(--primary-color);color:#fff}.detail-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.detail-tabs button{padding:.75rem 1.25rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);margin-bottom:-1px}.detail-tabs button:hover{color:var(--text-primary)}.detail-tabs button.active{color:var(--primary-color);border-bottom-color:var(--primary-color)}.overview-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.price-stats{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem}.stat-row{display:flex;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid var(--border-color)}.stat-row:last-child{border-bottom:none}.stat-label{color:var(--text-secondary);font-size:.875rem}.stat-value{color:var(--text-primary);font-weight:600;font-size:.875rem}.signal-summary{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem}.signal-summary h3{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.signal-main{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.signal-action{font-size:1.25rem;font-weight:700;padding:.5rem 1rem;border-radius:var(--radius-md)}.signal-action.buy{background-color:#22c55e33;color:var(--success-color)}.signal-action.sell{background-color:#ef444433;color:var(--danger-color)}.signal-score{font-size:1rem;color:var(--text-secondary)}.indicators-section{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.indicator-card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem}.indicator-card h4{font-size:.875rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.indicator-values{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.indicator-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem;background-color:var(--bg-tertiary);border-radius:var(--radius-sm)}.indicator-item .label{font-size:.75rem;color:var(--text-secondary)}.indicator-item .value{font-size:.875rem;font-weight:600;color:var(--text-primary)}.indicator-item .value.positive{color:var(--success-color)}.indicator-item .value.negative,.indicator-item .value.overbought{color:var(--danger-color)}.indicator-item .value.oversold{color:var(--success-color)}.rsi-display{padding:1rem 0}.rsi-value{font-size:2rem;font-weight:700;text-align:center;margin-bottom:1rem}.rsi-scale{position:relative;height:8px;background:linear-gradient(to right,var(--success-color),var(--warning-color),var(--danger-color));border-radius:4px;margin-bottom:.5rem}.rsi-marker{position:absolute;top:-4px;width:16px;height:16px;background-color:#fff;border:2px solid var(--text-primary);border-radius:50%;transform:translate(-50%);transition:left .3s ease}.rsi-labels{display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-muted)}.sr-levels{display:flex;flex-direction:column;gap:1rem}.sr-section{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.sr-label{font-size:.75rem;color:var(--text-secondary);min-width:60px}.sr-value{padding:.375rem .75rem;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600}.sr-value.resistance{background-color:#ef444433;color:var(--danger-color)}.sr-value.support{background-color:#22c55e33;color:var(--success-color)}.sr-empty{color:var(--text-muted)}.signals-section{max-width:600px}.signal-detail{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem}.signal-detail h3{font-size:1.125rem;font-weight:600;margin-bottom:1.5rem;color:var(--text-primary)}.signal-score-circle{text-align:center;margin-bottom:2rem}.score-value{width:100px;height:100px;margin:0 auto .5rem;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;border-radius:50%;border:4px solid}.score-value.buy{border-color:var(--success-color);color:var(--success-color)}.score-value.sell{border-color:var(--danger-color);color:var(--danger-color)}.score-label{font-size:.875rem;color:var(--text-secondary)}.signal-recommendation{text-align:center;margin-bottom:2rem;padding:1.5rem;background-color:var(--bg-tertiary);border-radius:var(--radius-md)}.signal-recommendation h4{font-size:.875rem;color:var(--text-secondary);margin-bottom:.75rem}.recommendation{font-size:1.5rem;font-weight:700;margin-bottom:.5rem}.recommendation.buy{color:var(--success-color)}.recommendation.sell{color:var(--danger-color)}.strength{font-size:.875rem;color:var(--text-secondary)}.signal-factors{margin-bottom:1.5rem}.signal-factors h4{font-size:.875rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary)}.signal-factors li{padding:.5rem 0 .5rem 1.25rem;position:relative;color:var(--text-secondary);font-size:.875rem}.signal-tips{padding:1rem;background-color:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-md)}.signal-tips h4{font-size:.875rem;font-weight:600;margin-bottom:.5rem;color:var(--warning-color)}.signal-tips p{font-size:.875rem;color:var(--text-secondary);line-height:1.5}@media (max-width: 768px){.detail-header,.price-header{flex-direction:column;align-items:flex-start}.current-price{font-size:2rem}.indicators-section{grid-template-columns:1fr}}.watchlist{animation:fadeIn .3s ease}.watchlist.empty{display:flex;align-items:center;justify-content:center;min-height:400px}.watchlist-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.watchlist-header h2{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.watchlist-actions{display:flex;gap:.75rem}.add-btn{padding:.5rem 1rem;background-color:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color var(--transition-fast);display:flex;align-items:center;gap:.375rem}.add-btn:hover{background-color:var(--primary-hover)}.refresh-btn{padding:.5rem 1rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;cursor:pointer;transition:all var(--transition-fast)}.refresh-btn:hover:not(:disabled){background-color:var(--border-light)}.refresh-btn:disabled{opacity:.6;cursor:not-allowed}.empty-state{text-align:center;padding:3rem;color:var(--text-secondary)}.empty-state svg{margin-bottom:1rem;opacity:.5}.empty-state h3{font-size:1.25rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.empty-state p{margin-bottom:1.5rem}.empty-state button{padding:.75rem 1.5rem;background-color:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color var(--transition-fast)}.empty-state button:hover{background-color:var(--primary-hover)}.watchlist-table-container{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;overflow-x:auto}.watchlist-table{width:100%;border-collapse:collapse;font-size:.875rem}.watchlist-table th{background-color:var(--bg-tertiary);padding:1rem;text-align:left;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-color);white-space:nowrap}.watchlist-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--transition-fast)}.watchlist-table th.sortable:hover{color:var(--text-primary)}.watchlist-table td{padding:1rem;border-bottom:1px solid var(--border-color);color:var(--text-primary)}.watchlist-row:hover{background-color:var(--bg-tertiary)}.watchlist-row:last-child td{border-bottom:none}.symbol-cell{display:flex;align-items:center;gap:.5rem}.symbol-link{font-weight:700;color:var(--primary-color);cursor:pointer;transition:opacity var(--transition-fast)}.symbol-link:hover{opacity:.8}.market-tag{font-size:.625rem;padding:.125rem .375rem;background-color:var(--bg-tertiary);color:var(--text-muted);border-radius:var(--radius-sm)}.name-cell{color:var(--text-secondary);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.price-cell{font-weight:600;font-family:Courier New,monospace}.change-cell{font-weight:600}.volume-cell{color:var(--text-secondary);font-family:Courier New,monospace}.actions-cell{display:flex;gap:.5rem}.actions-cell button{padding:.375rem .75rem;font-size:.75rem;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:opacity var(--transition-fast)}.actions-cell button:hover{opacity:.8}.alert-btn{background-color:var(--info-color);color:#fff}.remove-btn{background-color:var(--danger-color);color:#fff}.alert-modal{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.alert-modal-content{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem;min-width:320px;max-width:90vw;animation:slideUp .3s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.alert-modal-content h3{font-size:1.125rem;font-weight:600;margin-bottom:1.25rem;color:var(--text-primary)}.alert-form{display:flex;flex-direction:column;gap:1rem}.alert-type{display:flex;gap:1rem}.alert-type label{display:flex;align-items:center;gap:.5rem;color:var(--text-primary);font-size:.875rem;cursor:pointer}.alert-type input[type=radio]{width:18px;height:18px;accent-color:var(--primary-color)}.alert-input{width:100%;padding:.75rem;font-size:1rem}.alert-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:.5rem}.alert-actions button{padding:.625rem 1.25rem;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:opacity var(--transition-fast)}.alert-actions button:hover{opacity:.9}.cancel-btn{background-color:var(--bg-tertiary);color:var(--text-primary)}.confirm-btn{background-color:var(--primary-color);color:#fff}.add-modal{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.add-modal-content{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem;min-width:360px;max-width:90vw;animation:slideUp .3s ease}.add-modal-content h3{font-size:1.125rem;font-weight:600;margin-bottom:1.25rem;color:var(--text-primary)}.add-form{display:flex;flex-direction:column;gap:1rem}.add-form .form-group{display:flex;flex-direction:column;gap:.5rem}.add-form label{font-size:.875rem;font-weight:500;color:var(--text-secondary)}.add-input{width:100%;padding:.75rem;font-size:1rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--transition-fast)}.add-input:focus{outline:none;border-color:var(--primary-color)}.add-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:.5rem}.watchlist-summary{margin-top:1.5rem;text-align:right;color:var(--text-muted);font-size:.875rem}@media (max-width: 768px){.watchlist-table{font-size:.75rem}.watchlist-table th,.watchlist-table td{padding:.75rem .5rem}.name-cell{max-width:100px}.actions-cell{flex-direction:column;gap:.375rem}.actions-cell button{padding:.25rem .5rem}}@media (max-width: 480px){.watchlist-header{flex-direction:column;align-items:flex-start;gap:.75rem}.market-tag{display:none}}.portfolio{animation:fadeIn .3s ease}.portfolio-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.portfolio-header h2{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.add-btn{padding:.625rem 1.25rem;background-color:var(--success-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:opacity var(--transition-fast)}.add-btn:hover{opacity:.9}.portfolio-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.summary-card{background:linear-gradient(135deg,var(--bg-card),var(--bg-secondary));border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem;transition:transform var(--transition-normal)}.summary-card:hover{transform:translateY(-2px)}.summary-label{font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem}.summary-value{font-size:1.75rem;font-weight:700;color:var(--text-primary)}.summary-card.total .summary-value{background:linear-gradient(135deg,var(--primary-color),#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.summary-card.cash .summary-value{color:var(--info-color)}.summary-card.return .summary-value{display:flex;flex-direction:column;gap:.25rem}.return-percent{font-size:.875rem;font-weight:500}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.modal-content{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem;min-width:360px;max-width:90vw;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease}.modal-content h3{font-size:1.25rem;font-weight:600;margin-bottom:1.25rem;color:var(--text-primary)}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.form-group input{width:100%;padding:.75rem;font-size:1rem}.form-error{color:var(--danger-color);font-size:.875rem;margin-bottom:1rem}.form-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem}.form-actions button{padding:.625rem 1.5rem;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:opacity var(--transition-fast)}.form-actions button:hover{opacity:.9}.empty-holdings{text-align:center;padding:3rem;background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);margin-bottom:2rem}.empty-holdings svg{margin-bottom:1rem;opacity:.5;color:var(--text-secondary)}.empty-holdings h3{font-size:1.25rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.empty-holdings p{color:var(--text-secondary)}.holdings-table-container{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;overflow-x:auto;margin-bottom:2rem}.holdings-table{width:100%;border-collapse:collapse;font-size:.875rem}.holdings-table th{background-color:var(--bg-tertiary);padding:1rem;text-align:left;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-color);white-space:nowrap}.holdings-table td{padding:1rem;border-bottom:1px solid var(--border-color);color:var(--text-primary)}.holding-row:hover{background-color:var(--bg-tertiary)}.holding-row:last-child td{border-bottom:none}.symbol-cell{display:flex;flex-direction:column;gap:.25rem}.symbol-cell .symbol{font-weight:700;color:var(--primary-color)}.symbol-cell .name{font-size:.75rem;color:var(--text-muted)}.loading-text{color:var(--text-muted);font-style:italic}.sell-btn{padding:.375rem .75rem;background-color:var(--danger-color);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.75rem;cursor:pointer;transition:opacity var(--transition-fast)}.sell-btn:hover{opacity:.8}.cash-management{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem;margin-bottom:2rem}.cash-management h3{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.cash-actions{display:flex;gap:.75rem;flex-wrap:wrap}.cash-actions button{padding:.5rem 1rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;cursor:pointer;transition:all var(--transition-fast)}.cash-actions button:hover{background-color:var(--primary-color);border-color:var(--primary-color);color:#fff}.asset-allocation{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem}.asset-allocation h3{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.allocation-bars{display:flex;flex-direction:column;gap:1rem}.allocation-item{display:flex;flex-direction:column;gap:.5rem}.allocation-label{display:flex;justify-content:space-between;font-size:.875rem;color:var(--text-secondary)}.allocation-bar{height:8px;background-color:var(--bg-tertiary);border-radius:4px;overflow:hidden}.allocation-fill{height:100%;background:linear-gradient(90deg,var(--primary-color),#8b5cf6);border-radius:4px;transition:width .5s ease}.allocation-fill.cash{background:linear-gradient(90deg,var(--success-color),#22c55e)}@media (max-width: 768px){.portfolio-summary{grid-template-columns:1fr}.holdings-table{font-size:.75rem}.holdings-table th,.holdings-table td{padding:.75rem .5rem}.modal-content{min-width:auto;width:90vw}}@media (max-width: 480px){.portfolio-header{flex-direction:column;align-items:flex-start;gap:.75rem}.cash-actions{justify-content:center}.allocation-label{font-size:.75rem}}.signals{animation:fadeIn .3s ease}.signals-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.signals-header h2{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.signals-filters{display:flex;gap:1rem;flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-group label{font-size:.875rem;color:var(--text-secondary)}.filter-group select{padding:.5rem .75rem;font-size:.875rem;min-width:120px}.empty-signals{text-align:center;padding:3rem;background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);margin-bottom:2rem}.empty-signals svg{margin-bottom:1rem;opacity:.5;color:var(--text-secondary)}.empty-signals h3{font-size:1.25rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.empty-signals p{color:var(--text-secondary);margin-bottom:1.5rem}.signal-criteria{text-align:left;max-width:400px;margin:0 auto;padding:1rem;background-color:var(--bg-tertiary);border-radius:var(--radius-md)}.signal-criteria h4{font-size:.875rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary)}.signal-criteria ul{list-style:none}.signal-criteria li{padding:.375rem 0 .375rem 1.25rem;position:relative;color:var(--text-secondary);font-size:.875rem}.signal-criteria li:before{content:"✓";position:absolute;left:0;color:var(--success-color)}.signals-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem;margin-bottom:2rem}.signal-card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem;cursor:pointer;transition:all var(--transition-normal);border-left:4px solid transparent}.signal-card.buy{border-left-color:var(--success-color)}.signal-card.sell{border-left-color:var(--danger-color)}.signal-card.strong{box-shadow:0 0 0 1px #f59e0b4d}.signal-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.signal-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.signal-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:1rem;font-weight:700}.signal-icon.buy{background-color:#22c55e33;color:var(--success-color)}.signal-icon.sell{background-color:#ef444433;color:var(--danger-color)}.signal-info{display:flex;flex-direction:column;flex:1}.signal-symbol{font-weight:700;color:var(--text-primary)}.signal-time{font-size:.75rem;color:var(--text-muted)}.signal-badge{font-size:.75rem;font-weight:600;padding:.25rem .5rem;border-radius:var(--radius-sm)}.signal-badge.strong{background-color:#f59e0b33;color:var(--warning-color)}.signal-badge.moderate{background-color:var(--bg-tertiary);color:var(--text-secondary)}.signal-badge.weak{background-color:var(--bg-tertiary);color:var(--text-muted)}.signal-body{margin-bottom:1rem}.signal-type{font-size:1.125rem;font-weight:700;margin-bottom:.5rem}.signal-type.buy{color:var(--success-color)}.signal-type.sell{color:var(--danger-color)}.signal-score{font-size:.875rem;color:var(--text-secondary)}.signal-score span{font-weight:700;color:var(--text-primary)}.signal-indicators{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:1rem}.signal-actions{display:flex;gap:.5rem}.view-btn{padding:.5rem 1rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;cursor:pointer;transition:all var(--transition-fast)}.view-btn:hover{background-color:var(--primary-color);border-color:var(--primary-color);color:#fff}.signal-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease;padding:1rem}.signal-modal{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);max-width:500px;width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease}.signal-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem;border-bottom:1px solid var(--border-color)}.signal-modal-header h3{font-size:1.125rem;font-weight:600;color:var(--text-primary)}.close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);font-size:1.5rem;cursor:pointer;border-radius:50%;transition:all var(--transition-fast)}.close-btn:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}.signal-modal-content{padding:1.25rem}.signal-type-large{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1.5rem;padding:1rem;border-radius:var(--radius-md)}.signal-type-large.buy{background-color:#22c55e1a}.signal-type-large.sell{background-color:#ef44441a}.type-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:1.5rem;font-weight:700}.signal-type-large.buy .type-icon{background-color:#22c55e33;color:var(--success-color)}.signal-type-large.sell .type-icon{background-color:#ef444433;color:var(--danger-color)}.type-text{font-size:1.25rem;font-weight:700}.signal-type-large.buy .type-text{color:var(--success-color)}.signal-type-large.sell .type-text{color:var(--danger-color)}.signal-details{background-color:var(--bg-tertiary);border-radius:var(--radius-md);padding:1rem;margin-bottom:1.5rem}.detail-row{display:flex;justify-content:space-between;padding:.625rem 0;border-bottom:1px solid var(--border-color)}.detail-row:last-child{border-bottom:none}.detail-row .label{color:var(--text-secondary);font-size:.875rem}.detail-row .value{color:var(--text-primary);font-weight:600;font-size:.875rem}.detail-row .value.strength.strong{color:var(--warning-color)}.signal-factors,.signal-message,.signal-warning{margin-bottom:1.25rem}.signal-factors h4,.signal-message h4,.signal-warning h4{font-size:.875rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary)}.signal-factors ul{list-style:none}.signal-factors li{padding:.375rem 0 .375rem 1.25rem;position:relative;color:var(--text-secondary);font-size:.875rem}.signal-factors li:before{content:"•";position:absolute;left:0;color:var(--primary-color)}.signal-message p,.signal-warning p{color:var(--text-secondary);font-size:.875rem;line-height:1.5}.signal-warning{background-color:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-md);padding:1rem}.signal-warning h4{color:var(--warning-color)}.signal-modal-footer{padding:1rem 1.25rem;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end}.view-detail-btn{padding:.625rem 1.25rem;background-color:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:opacity var(--transition-fast)}.view-detail-btn:hover{opacity:.9}.signal-stats{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.25rem}.signal-stats h3{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:1rem}.stat-item{text-align:center;padding:1rem;background-color:var(--bg-tertiary);border-radius:var(--radius-md)}.stat-value{display:block;font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.stat-label{font-size:.75rem;color:var(--text-secondary)}@media (max-width: 768px){.signals-header{flex-direction:column;align-items:flex-start}.signals-list{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.signals-filters,.filter-group{width:100%}.filter-group select{flex:1}}.settings{animation:fadeIn .3s ease;max-width:800px}.settings-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.settings-header h2{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.save-message{padding:.5rem 1rem;background-color:#22c55e33;color:var(--success-color);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;animation:fadeIn .3s ease}.settings-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.settings-tabs button{padding:.75rem 1.25rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);margin-bottom:-1px}.settings-tabs button:hover{color:var(--text-primary)}.settings-tabs button.active{color:var(--primary-color);border-bottom-color:var(--primary-color)}.settings-content{margin-bottom:2rem}.settings-section{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem}.settings-section h3{font-size:1.125rem;font-weight:600;margin-bottom:1.25rem;color:var(--text-primary)}.section-description{color:var(--text-secondary);font-size:.875rem;margin-bottom:1.5rem;line-height:1.5}.setting-item{display:flex;align-items:center;justify-content:space-between;padding:1rem 0;border-bottom:1px solid var(--border-color)}.setting-item:last-child{border-bottom:none}.setting-item label{font-size:.875rem;font-weight:500;color:var(--text-primary)}.setting-item.checkbox{justify-content:flex-start;gap:.75rem}.setting-item.checkbox label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.setting-item input[type=checkbox]{width:20px;height:20px;accent-color:var(--primary-color);cursor:pointer}.setting-control{display:flex;align-items:center;gap:.75rem}.setting-control input,.setting-control select{min-width:200px}.setting-hint{font-size:.75rem;color:var(--text-muted)}.error-text{font-size:.75rem;color:var(--danger-color);margin-top:.25rem}.api-link{font-size:.75rem;color:var(--primary-color);text-decoration:none}.api-link:hover{text-decoration:underline}.setting-actions{display:flex;gap:.75rem;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.export-btn,.clear-cache-btn{padding:.625rem 1.25rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;cursor:pointer;transition:all var(--transition-fast)}.export-btn:hover,.clear-cache-btn:hover{background-color:var(--border-light)}.api-info{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.api-info h4{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.data-source{margin-bottom:1rem;padding:1rem;background-color:var(--bg-tertiary);border-radius:var(--radius-md)}.data-source:last-child{margin-bottom:0}.data-source strong{display:block;font-size:.875rem;color:var(--text-primary);margin-bottom:.25rem}.data-source p{font-size:.875rem;color:var(--text-secondary);line-height:1.5}.notification-info{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.notification-info h4{font-size:1rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary)}.notification-info ul{list-style:none}.notification-info li{padding:.375rem 0 .375rem 1.25rem;position:relative;color:var(--text-secondary);font-size:.875rem}.notification-info li:before{content:"•";position:absolute;left:0;color:var(--primary-color)}.settings-footer{display:flex;gap:.75rem;justify-content:flex-end}.reset-btn,.save-btn{padding:.75rem 1.5rem;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:opacity var(--transition-fast)}.reset-btn{background-color:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.save-btn{background-color:var(--primary-color);color:#fff}.reset-btn:hover,.save-btn:hover{opacity:.9}@media (max-width: 768px){.settings-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}.setting-item{flex-direction:column;align-items:flex-start;gap:.75rem}.setting-control{width:100%}.setting-control input,.setting-control select{width:100%;min-width:auto}.setting-actions,.settings-footer{flex-direction:column}.reset-btn,.save-btn{width:100%}}:root{--primary-color: #3b82f6;--primary-hover: #2563eb;--success-color: #22c55e;--danger-color: #ef4444;--warning-color: #f59e0b;--info-color: #3b82f6;--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--bg-card: #1e293b;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--border-color: #334155;--border-light: #475569;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--transition-fast: .15s ease;--transition-normal: .25s ease}.app.light{--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #e2e8f0;--bg-card: #ffffff;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--border-color: #e2e8f0;--border-light: #cbd5e1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.5}.app{min-height:100vh;display:flex;flex-direction:column;background-color:var(--bg-primary)}.app-header{background-color:var(--bg-secondary);border-bottom:1px solid var(--border-color);padding:0 1.5rem;position:sticky;top:0;z-index:100}.header-content{max-width:1400px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:64px}.logo{display:flex;align-items:center;gap:.75rem}.logo h1{font-size:1.5rem;font-weight:700;color:var(--text-primary);background:linear-gradient(135deg,var(--primary-color),#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.main-nav{display:flex;gap:.5rem}.main-nav button{padding:.5rem 1rem;border:none;background:transparent;color:var(--text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.main-nav button:hover{color:var(--text-primary);background-color:var(--bg-tertiary)}.main-nav button.active{color:var(--primary-color);background-color:#3b82f61a}.menu-toggle{display:none;flex-direction:column;gap:4px;background:none;border:none;cursor:pointer;padding:.5rem}.menu-toggle span{display:block;width:24px;height:2px;background-color:var(--text-primary);transition:all var(--transition-fast)}.app-main{flex:1;max-width:1400px;width:100%;margin:0 auto;padding:1.5rem}.app-footer{background-color:var(--bg-secondary);border-top:1px solid var(--border-color);padding:1.5rem;text-align:center;color:var(--text-muted);font-size:.875rem}.loading{display:flex;align-items:center;justify-content:center;min-height:400px}.loading-spinner{text-align:center;color:var(--text-secondary)}.spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}@keyframes spin{to{transform:rotate(360deg)}}.positive{color:var(--success-color)}.negative{color:var(--danger-color)}.neutral{color:var(--text-secondary)}button{font-family:inherit}.btn{padding:.625rem 1.25rem;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover{background-color:var(--primary-hover)}.btn-secondary{background-color:var(--bg-tertiary);color:var(--text-primary)}.btn-secondary:hover{background-color:var(--border-light)}.btn-success{background-color:var(--success-color);color:#fff}.btn-danger{background-color:var(--danger-color);color:#fff}.card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-sm)}input,select{background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:.625rem .875rem;color:var(--text-primary);font-size:.875rem;transition:border-color var(--transition-fast)}input:focus,select:focus{outline:none;border-color:var(--primary-color)}input::placeholder{color:var(--text-muted)}@media (max-width: 768px){.menu-toggle{display:flex}.main-nav{display:none;position:absolute;top:64px;left:0;right:0;background-color:var(--bg-secondary);flex-direction:column;padding:1rem;border-bottom:1px solid var(--border-color);box-shadow:var(--shadow-lg)}.main-nav.open{display:flex}.main-nav button{padding:.75rem 1rem;text-align:left}.app-main{padding:1rem}.header-content{height:56px}.logo h1{font-size:1.25rem}}@media (max-width: 480px){.app-main{padding:.75rem}.card{padding:1rem}}:root{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}body{background:linear-gradient(135deg,#1a1a2e,#16213e);color:#eaeaea;margin:0;padding:0}#root{width:100vw;min-height:100vh}.color-up{color:#00c853}.color-down{color:#f44}.color-neutral{color:#eaeaea}.bg-up{background-color:#00c8531a}.bg-down{background-color:#ff44441a}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#1a1a2e}::-webkit-scrollbar-thumb{background:#3a3a5e;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#4a4a6e}
