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}#root,.App{min-height:100vh}.App{background-color:#f5f5f5}.dashboard{margin:0 auto;max-width:1200px;padding:40px 20px 20px}.dashboard h2{color:#333;margin-bottom:2rem}.stats-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:2rem}.stat-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem}.stat-card h3{color:#666;font-size:.9rem;letter-spacing:.5px;margin:0 0 .5rem;text-transform:uppercase}.stat-card .value{color:#333;font-size:2rem;font-weight:700}.component{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;padding:2rem}.component h2{color:#333;margin-top:0}.loading{color:#666;padding:2rem;text-align:center}.error{background-color:#fee;border-radius:4px;color:#c33;margin:1rem 0;padding:1rem}.article-card h3{color:#333;margin:0 0 .5rem}.article-meta{color:#666;font-size:.9rem;margin-bottom:1rem}.article-analysis{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}.sentiment-badge{border-radius:4px;color:#fff;font-size:.8rem;font-weight:700;padding:.25rem .5rem}.confidence{color:#666;font-size:.9rem}.tickers{display:flex;gap:.5rem}.ticker{background:#e3f2fd;border-radius:4px;color:#1976d2;font-size:.8rem;font-weight:700;padding:.25rem .5rem}.stocks-list{display:flex;flex-direction:column;gap:1rem}.stock-name{margin:0}.price{font-size:1.5rem}.change{font-size:.9rem;font-weight:700}.stock-analysis{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.analysis-item{display:flex;flex-direction:column;gap:.25rem}.label{color:#666;font-size:.8rem;letter-spacing:.5px;text-transform:uppercase}.confidence,.sentiment,.signal{font-weight:700}.signal{font-size:1.1rem}.stocks-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.filter-controls{align-items:center;display:flex;gap:.5rem}.filter-controls label{color:#666;font-size:.9rem;font-weight:500}.entries-per-page-dropdown,.sector-filter{background:#fff;border:1px solid #ddd;border-radius:4px;font-size:.9rem;padding:.5rem}.entries-per-page-dropdown{cursor:pointer;margin-left:auto}.entries-per-page-dropdown:hover{border-color:#61dafb}.entries-per-page-dropdown:focus{border-color:#61dafb;box-shadow:0 0 0 2px #61dafb1a;outline:none}.pagination-arrows{align-items:center;display:flex;gap:.5rem}.pagination-arrow-button{align-items:center;background:#fff;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;display:flex;height:32px;justify-content:center;min-width:32px;padding:.5rem;transition:all .2s ease}.pagination-arrow-button:hover:not(:disabled){background:#f5f5f5;border-color:#61dafb;color:#61dafb}.pagination-arrow-button:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;opacity:.6}.pagination-arrow-button:active:not(:disabled){transform:scale(.95)}.stocks-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.stock-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem;transition:box-shadow .3s ease,transform .2s ease}.stock-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.stock-card.clickable{cursor:pointer!important;position:relative;-webkit-user-select:none;user-select:none;z-index:1}.stock-card.clickable:hover{border-color:#61dafb!important;box-shadow:0 6px 16px #00000026!important;transform:translateY(-3px)!important}.stock-card.clickable:active{transform:translateY(-1px)!important}.stock-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:0}.stock-info h3{color:#333;font-size:1.2rem;font-weight:700;margin:0 0 .25rem}.stock-name{color:#666;font-size:.9rem;line-height:1.3;margin:0 0 .5rem}.sector-badge{background:#e3f2fd;border-radius:20px;color:#1976d2;display:inline-block;font-size:.8rem;font-weight:500;letter-spacing:.5px;max-width:150px;min-width:-webkit-fit-content;min-width:fit-content;overflow:hidden;padding:4px 12px;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.stock-price{text-align:right}.price{color:#333;display:block;font-size:1.3rem;font-weight:700;margin-bottom:.25rem}.last-updated{color:#999;font-size:.75rem}.no-price{font-size:.9rem}.stock-details{grid-gap:.75rem;border-top:1px solid #f0f0f0;display:grid;gap:.75rem;grid-template-columns:1fr 1fr;margin-top:1rem;padding-top:1rem}.detail-item{display:flex;flex-direction:column;gap:.25rem}.detail-item .label{color:#666;font-size:.75rem;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.detail-item .value{color:#333;font-size:.9rem;font-weight:500}.consensus-score{width:-webkit-fit-content;width:fit-content}.consensus-interpretation,.consensus-score{border-radius:16px;display:inline-block;font-size:.85rem;font-weight:600;padding:.4rem .75rem;white-space:nowrap}.consensus-interpretation-very-undervalued,.consensus-score-very-undervalued{background-color:#c8e6c9!important;color:#2e7d32!important}.consensus-interpretation-undervalued,.consensus-score-undervalued{background-color:#e8f5e9!important;color:#388e3c!important}.consensus-interpretation-fairly-priced,.consensus-score-fairly-priced{background-color:#f5f5f5!important;color:#666!important}.consensus-interpretation-overvalued,.consensus-score-overvalued{background-color:#ffcdd2!important;color:#c62828!important}.consensus-interpretation-very-overvalued,.consensus-score-very-overvalued{background-color:#ffebee!important;color:#c62828!important}.status-active{color:#4caf50;font-weight:700}@media (max-width:768px){.dashboard{padding:1rem}.stats-grid{grid-template-columns:1fr}.article-analysis{align-items:flex-start;flex-direction:column}.stock-header{flex-direction:column;gap:1rem}.stock-price{text-align:left}.stock-analysis{grid-template-columns:1fr}.stocks-header{align-items:flex-start;flex-direction:column}.stock-details,.stocks-grid{grid-template-columns:1fr}}.stock-detail{margin:0 auto;max-width:1200px;padding:40px 20px 20px}.stock-detail-header{display:flex;justify-content:center;margin-bottom:2rem}.stock-detail-header h1{background:linear-gradient(135deg,#667eea4d,#764ba24d);border-radius:12px;box-shadow:0 4px 15px #667eea26;color:#333;font-size:1.5rem;font-weight:600;margin:0;padding:.75rem 1.5rem}.back-button{background:#61dafb;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:500;padding:.75rem 1.5rem;transition:background-color .2s ease}.back-button:hover{background:#4fc3f7}.stock-detail h1{color:#333;font-size:2rem;margin:0}.stock-overview{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;padding:2rem}.stock-main-info{grid-gap:2rem;align-items:start;display:grid;gap:2rem;grid-template-columns:1fr 2fr}.stock-price-section{text-align:center}.current-price{margin-bottom:1rem}.current-price .price{color:#333;display:block;font-size:2.5rem;font-weight:700;margin-bottom:.5rem}.current-price .last-updated{color:#666;font-size:.9rem}.no-price{color:#999;font-size:1.1rem;font-style:italic}.stock-details-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.stock-details-grid .detail-item{background:#f9f9f9;border-left:3px solid #61dafb4d;border-radius:6px;padding:1rem}.stock-details-grid .label{color:#666;font-size:.8rem;font-weight:500;letter-spacing:.5px;margin-bottom:.25rem;text-transform:uppercase}.stock-details-grid .value{color:#333;font-size:1.1rem;font-weight:600}.stock-details-grid .value.recommendation{border-radius:4px;display:inline-block;font-size:.95rem;font-weight:600;letter-spacing:.5px;padding:.25rem .75rem;text-transform:uppercase;width:-webkit-fit-content;width:fit-content}.recommendation-buy,.recommendation-strong-buy{background-color:#e8f5e9;color:#2e7d32}.recommendation-hold{background-color:#f5f5f5;color:#666}.recommendation-sell,.recommendation-strong-sell{background-color:#ffebee;color:#c62828}.stock-chart-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;padding:2rem}.stock-chart-section h2{color:#333;font-size:1.5rem;margin-bottom:1.5rem}.chart-container{height:400px;min-width:0;position:relative;width:100%}.no-chart-data{color:#999;font-style:italic;padding:2rem;text-align:center}.recent-articles{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:2rem}.articles-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.recent-articles h2{color:#333;font-size:1.5rem;margin:0}.articles-list{display:flex;flex-direction:column;gap:1rem}.article-card{background:#f9f9f9;border-left:4px solid #61dafb4d;border-radius:8px;padding:1.5rem;transition:box-shadow .2s ease}.article-card:hover{box-shadow:0 2px 8px #0000001a}.article-header{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between;margin-bottom:.75rem}.article-header h3{color:#333;flex:1 1;font-size:1.1rem;line-height:1.4;margin:0}.article-date{color:#666;font-size:.8rem;white-space:nowrap}.article-summary{color:#555;line-height:1.5;margin-bottom:1rem}.article-meta{align-items:center;display:flex;flex-wrap:wrap;gap:1rem}.source{background:#e3f2fd;border-radius:4px;color:#1976d2;font-size:.8rem;font-weight:500;padding:.25rem .5rem}.article-valuation-details{grid-gap:.75rem;border-top:1px solid #e0e0e0;display:grid;gap:.75rem;grid-template-columns:repeat(3,1fr);margin-top:1rem;padding-top:1rem}.valuation-item{display:flex;flex-direction:column;gap:.25rem}.valuation-label{color:#666;font-size:.75rem;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.valuation-value{color:#333;font-size:.95rem;font-weight:600}.valuation-value.valuation-empty{color:#999;font-weight:400}.valuation-value.positive{color:#2e7d32}.valuation-value.negative{color:#c62828}.valuation-value.rating-buy,.valuation-value.rating-overweight,.valuation-value.rating-strong-buy{color:#2e7d32}.valuation-value.rating-hold{color:#666}.valuation-value.rating-sell,.valuation-value.rating-strong-sell,.valuation-value.rating-underweight{color:#c62828}.sentiment{border-radius:4px;font-size:.8rem;font-weight:700;padding:.25rem .5rem;text-transform:uppercase}.sentiment-positive{background:#e8f5e8;color:#2e7d32}.sentiment-negative{background:#ffebee;color:#c62828}.sentiment-neutral{background:#f5f5f5;color:#666}.consensus-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;padding:2rem}.consensus-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:1fr 1fr}.consensus-price-target-card,.consensus-rating-card{display:flex;flex-direction:column;gap:1rem}.consensus-card-title{border-bottom:2px solid #f0f0f0;color:#333;font-size:1.2rem;font-weight:600;margin:0 0 .5rem;padding-bottom:.5rem}.consensus-rating-header{align-items:flex-start;display:flex;flex-direction:column;gap:.75rem}.consensus-rating-badge{border-radius:6px;display:inline-block;font-size:1rem;font-weight:600;padding:.5rem 1rem;text-transform:capitalize}.consensus-rating-badge.rating-buy,.consensus-rating-badge.rating-strong-buy{background-color:#e8f5e9;color:#2e7d32}.consensus-rating-badge.rating-hold{background-color:#f5f5f5;color:#666}.consensus-rating-badge.rating-sell{background-color:#ffebee;color:#c62828}.consensus-rating-badge.rating-neutral{background-color:#f5f5f5;color:#666}.consensus-analyst-count{color:#666;font-size:.9rem}.rating-breakdown{display:flex;flex-direction:column;gap:.75rem;margin-top:0}.rating-breakdown-item{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:.5rem 0}.rating-breakdown-item:last-child{border-bottom:none}.rating-breakdown-item:not(:first-child) .rating-label{padding-left:1rem}.rating-label{color:#666;font-size:.9rem}.rating-value{border-radius:4px;font-size:1rem;font-weight:600;padding:.25rem .75rem}.rating-value.rating-buy,.rating-value.rating-strong-buy{background-color:#e8f5e9;color:#2e7d32}.rating-value.rating-hold,.rating-value.rating-neutral{background-color:#f5f5f5;color:#666}.rating-value.rating-sell{background-color:#ffebee;color:#c62828}.price-target-details{display:flex;flex-direction:column;gap:.75rem;margin-top:0}.price-target-item{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:.5rem 0}.price-target-item:last-child{border-bottom:none}.price-target-item:not(:first-child) .price-target-detail-label{padding-left:1rem}.price-target-item:nth-child(2),.price-target-item:nth-child(3){padding-top:.8rem}.price-target-detail-label{color:#666;font-size:.9rem;letter-spacing:.5px;text-transform:uppercase}.price-target-detail-value{color:#333;font-size:1rem;font-weight:600}.price-target-average-value{font-size:1.42rem}.price-target-high-value,.price-target-low-value{font-size:1.15rem}.upside-indicator{border-radius:4px;font-size:1rem;font-weight:600;padding:.25rem .75rem}.upside-indicator.upside-positive{background-color:#e8f5e9;color:#2e7d32}.upside-indicator.upside-negative{background-color:#ffebee;color:#c62828}.consensus-footer{margin-top:auto}.consensus-footer,.consensus-section-footer{border-top:1px solid #f0f0f0;color:#999;font-size:.8rem;padding-top:1rem}.consensus-section-footer{margin-top:1.5rem}.no-data-message{color:#999;font-style:italic;padding:2rem 0;text-align:center}@media (max-width:768px){.stock-detail{padding:1rem}.stock-detail-header{align-items:flex-start;flex-direction:column;gap:1rem}.stock-main-info{gap:1.5rem;grid-template-columns:1fr}.stock-chart-section{padding:1rem}.chart-container{height:300px}.stock-details-grid{grid-template-columns:1fr}.article-header,.article-meta{flex-direction:column;gap:.5rem}.article-meta{align-items:flex-start}.consensus-section{padding:1rem}.consensus-grid{gap:1.5rem;grid-template-columns:1fr}.price-target-average{font-size:2rem}}.table-container{margin-top:1rem;overflow-x:auto}.all-stocks-table{background:#fff;border-collapse:collapse;width:100%}.all-stocks-table thead{background:#f9f9f9;border-bottom:2px solid #e0e0e0}.all-stocks-table th{border-bottom:2px solid #e0e0e0;color:#333;font-size:.9rem;font-weight:600;letter-spacing:.5px;padding:.75rem 1rem;text-align:left;text-transform:uppercase}.sortable-header{cursor:pointer;transition:background-color .2s ease;-webkit-user-select:none;user-select:none}.sortable-header:hover{background-color:#f0f0f0}.all-stocks-table tbody tr{border-bottom:1px solid #f0f0f0;transition:background-color .2s ease}.all-stocks-table tbody tr:hover{background-color:#f9f9f9}.all-stocks-table tbody tr:last-child{border-bottom:none}.table-cell{color:#333;font-size:.9rem;padding:.75rem 1rem}.tracked-toggle-button{transition:all .2s ease}.tracked-toggle-button:hover{opacity:.8}.eye-icon-button:hover svg path{opacity:.7}.eye-icon-button:active{transform:scale(.95)}.tracked-column-cell,.tracked-column-header{text-align:center;white-space:nowrap;width:1%}.pagination-controls{align-items:center;border-top:1px solid #f0f0f0;display:flex;justify-content:space-between;margin-top:1.5rem;padding-top:1rem}.search-input{border:1px solid #ddd;border-radius:4px;font-size:.9rem;padding:.5rem;width:250px}.search-input:focus{border-color:#61dafb;box-shadow:0 0 0 2px #61dafb1a;outline:none}@media (max-width:768px){.all-stocks-table{font-size:.85rem}.all-stocks-table th,.table-cell{padding:.75rem .5rem}.table-container{overflow-x:scroll}.pagination-controls{align-items:flex-start;flex-direction:column;gap:1rem}.search-input{margin-bottom:.5rem;width:100%}}
/*# sourceMappingURL=main.68e37270.css.map*/