:root{--bg-primary:#0f0f1a;--bg-secondary:#1a1a2e;--bg-card:#16213e;--bg-input:#1e2a45;--text-primary:#e0e0e0;--text-secondary:#8892b0;--text-heading:#fff;--accent:#6c63ff;--accent-hover:#5a52d5;--up-color:#ef5350;--down-color:#26a69a;--border:#2a2a4a;--border-light:#3a3a5a;--shadow:0 4px 20px #0000004d;--radius:8px;--radius-lg:12px;color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;font-family:PingFang SC,Microsoft YaHei,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.6}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;margin:0}#root,.app{flex-direction:column;min-height:100vh;display:flex}.app-header{border-bottom:1px solid var(--border);background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%);padding:20px 32px}.header-top{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;display:flex}.app-title{color:var(--text-heading);letter-spacing:1px;margin:0 0 4px;font-size:28px;font-weight:700}.app-subtitle{color:var(--text-secondary);font-size:14px}.app-search-section{background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:16px 32px}.app-main{flex:1;min-height:0;display:flex}.app-sidebar{background:var(--bg-secondary);border-right:1px solid var(--border);width:240px;min-width:240px;overflow-y:auto}.app-content{flex:1;padding:20px 24px;position:relative;overflow-y:auto}.app-footer{text-align:center;color:var(--text-secondary);border-top:1px solid var(--border);background:var(--bg-secondary);padding:12px 32px;font-size:12px}.stock-search{max-width:600px;margin:0 auto;position:relative}.search-bar{gap:8px;display:flex}.search-bar input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);outline:none;flex:1;padding:10px 16px;font-size:14px;transition:border-color .2s}.search-bar input:focus{border-color:var(--accent)}.search-bar input::placeholder{color:var(--text-secondary)}.search-bar button{background:var(--accent);color:#fff;border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:none;padding:10px 24px;font-size:14px;transition:background .2s}.search-bar button:hover:not(:disabled){background:var(--accent-hover)}.search-bar button:disabled{opacity:.6;cursor:not-allowed}.search-results{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);z-index:100;max-height:300px;box-shadow:var(--shadow);margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.search-result-item{cursor:pointer;border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 16px;transition:background .15s;display:flex}.search-result-item:last-child{border-bottom:none}.search-result-item:hover{background:#6c63ff1a}.search-result-item.no-result{color:var(--text-secondary);cursor:default;justify-content:center}.result-symbol{color:var(--accent);min-width:100px;font-weight:600}.result-name{color:var(--text-primary);flex:1}.result-region{color:var(--text-secondary);font-size:12px}.watchlist{padding:16px}.watchlist-title{color:var(--text-heading);border-bottom:1px solid var(--border);margin-bottom:12px;padding-bottom:8px;font-size:16px;font-weight:600}.watchlist-empty{color:var(--text-secondary);text-align:center;padding:24px 0;font-size:13px}.watchlist-item{border-radius:var(--radius);cursor:pointer;justify-content:space-between;align-items:center;margin-bottom:4px;padding:10px 12px;transition:background .15s;display:flex}.watchlist-item:hover{background:#6c63ff1a}.watchlist-item.active{border-left:3px solid var(--accent);background:#6c63ff33}.watchlist-item-info{flex-direction:column;gap:2px;display:flex}.wl-symbol{color:var(--text-heading);font-size:13px;font-weight:600}.wl-name{color:var(--text-secondary);font-size:12px}.wl-remove{color:var(--text-secondary);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:14px;transition:all .15s}.watchlist-item:hover .wl-remove{opacity:1}.wl-remove:hover{color:var(--up-color);background:#ef53501a}.content-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.stock-name-header{align-items:baseline;gap:12px;display:flex}.stock-name-header h2{color:var(--text-heading);margin:0;font-size:22px;font-weight:600}.stock-code{color:var(--text-secondary);font-size:14px}.content-actions{align-items:center;gap:12px;display:flex}.chart-mode-switch{background:var(--bg-input);border-radius:var(--radius);border:1px solid var(--border);display:flex;overflow:hidden}.chart-mode-switch button{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:6px 16px;font-size:13px;transition:all .15s}.chart-mode-switch button.active{background:var(--accent);color:#fff}.chart-mode-switch button:hover:not(.active){color:var(--text-primary)}.refresh-btn{background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:6px 16px;font-size:13px;transition:all .15s}.refresh-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.refresh-btn:disabled{opacity:.5;cursor:not-allowed}.quote-info{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);margin-bottom:16px;padding:20px}.quote-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.quote-symbol{color:var(--text-heading);margin:0;font-size:18px;font-weight:600}.quote-price{text-align:right}.quote-price.up .price-value,.quote-price.up .price-change{color:var(--up-color)}.quote-price.down .price-value,.quote-price.down .price-change{color:var(--down-color)}.price-value{font-size:28px;font-weight:700;display:block}.price-change{margin-top:2px;font-size:14px;display:block}.quote-details{grid-template-columns:repeat(5,1fr);gap:12px;display:grid}.quote-detail-item{flex-direction:column;gap:4px;display:flex}.quote-detail-item .label{color:var(--text-secondary);font-size:12px}.quote-detail-item .value{color:var(--text-heading);font-size:15px;font-weight:500}.quote-detail-item .value.up{color:var(--up-color)}.quote-detail-item .value.down{color:var(--down-color)}.chart-container{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);margin-bottom:16px;padding:16px}.chart-title{color:var(--text-heading);margin:0 0 12px;font-size:15px;font-weight:600}.chart-canvas{border-radius:var(--radius);overflow:hidden}.chart-placeholder{height:400px;color:var(--text-secondary);justify-content:center;align-items:center;font-size:16px;display:flex}.signal-panel{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);margin-bottom:16px;padding:20px}.signal-title{color:var(--text-heading);margin:0 0 16px;font-size:16px;font-weight:600}.signal-main{border-radius:var(--radius);background:#6c63ff0d;border-left:4px solid;align-items:center;gap:16px;margin-bottom:20px;padding:16px 20px;display:flex}.signal-icon{font-size:28px}.signal-text{flex-shrink:0;font-size:24px;font-weight:700}.signal-confidence{flex:1;align-items:center;gap:10px;margin-left:auto;display:flex}.confidence-label{color:var(--text-secondary);white-space:nowrap;font-size:12px}.confidence-bar{background:var(--bg-input);border-radius:4px;flex:1;max-width:200px;height:8px;overflow:hidden}.confidence-fill{border-radius:4px;height:100%;transition:width .5s}.confidence-value{color:var(--text-heading);text-align:right;min-width:36px;font-size:14px;font-weight:600}.signal-reasons{margin-bottom:16px}.signal-reasons h4,.signal-indicators h4{color:var(--text-heading);margin:0 0 10px;font-size:14px;font-weight:600}.signal-reasons ul{padding:0;list-style:none}.signal-reasons li{color:var(--text-primary);border-bottom:1px solid var(--border);padding:6px 0 6px 16px;font-size:13px;position:relative}.signal-reasons li:before{content:"●";color:var(--accent);font-size:8px;position:absolute;top:10px;left:0}.signal-reasons li:last-child{border-bottom:none}.indicator-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.indicator-item{background:var(--bg-input);border-radius:var(--radius);flex-direction:column;gap:4px;padding:10px 12px;display:flex}.ind-label{color:var(--text-secondary);font-size:12px}.ind-value{color:var(--text-heading);font-size:15px;font-weight:600}.ind-value.up{color:var(--up-color)}.ind-value.down{color:var(--down-color)}.signal-disclaimer{border-radius:var(--radius);color:#ffa726;background:#ffa72614;border:1px solid #ffa72633;margin-top:16px;padding:10px 14px;font-size:12px}.loading-overlay{color:var(--text-secondary);justify-content:center;align-items:center;gap:12px;padding:60px 0;display:flex}.loading-spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-message{color:var(--up-color);border-radius:var(--radius);background:#ef53501a;border:1px solid #ef53504d;margin-bottom:16px;padding:12px 16px;font-size:13px}.welcome-message{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.welcome-icon{margin-bottom:16px;font-size:64px}.welcome-message h2{color:var(--text-heading);margin:0 0 8px;font-size:24px}.welcome-message>p{color:var(--text-secondary);margin-bottom:32px}.quick-tips{background:var(--bg-card);border-radius:var(--radius-lg);text-align:left;border:1px solid var(--border);width:100%;max-width:500px;padding:20px 24px}.quick-tips h4{color:var(--text-heading);margin:0 0 12px;font-size:15px}.quick-tips ul{padding:0;list-style:none}.quick-tips li{color:var(--text-primary);padding:6px 0 6px 16px;font-size:13px;position:relative}.quick-tips li:before{content:"▸";color:var(--accent);position:absolute;left:0}.quick-tips code{background:var(--bg-input);color:var(--accent);border-radius:4px;padding:2px 6px;font-family:SF Mono,Monaco,Consolas,monospace;font-size:12px}@media (width<=768px){.app-main{flex-direction:column}.app-sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;min-width:auto;max-height:200px}.app-header{padding:16px}.header-top{flex-direction:column;gap:12px}.app-title{font-size:22px}.app-search-section{padding:12px 16px}.app-content{padding:16px}.content-header{flex-direction:column;align-items:flex-start;gap:12px}.quote-details{grid-template-columns:repeat(3,1fr)}.indicator-grid{grid-template-columns:repeat(2,1fr)}.signal-main{flex-wrap:wrap}.signal-confidence{width:100%;margin-left:0}}.api-key-setup{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.api-key-header .api-status{border-radius:12px;padding:3px 10px;font-size:12px;font-weight:500}.api-status.connected{color:var(--down-color);background:#26a69a26;border:1px solid #26a69a4d}.api-status.disconnected{color:var(--up-color);background:#ef535026;border:1px solid #ef53504d}.api-key-form{gap:6px;display:flex}.api-key-form input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);outline:none;width:220px;padding:6px 12px;font-size:12px;transition:border-color .2s}.api-key-form input:focus{border-color:var(--accent)}.api-key-form input::placeholder{color:var(--text-secondary)}.api-key-form button{background:var(--accent);color:#fff;border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:none;padding:6px 14px;font-size:12px;transition:background .2s}.api-key-form button:hover:not(:disabled){background:var(--accent-hover)}.api-key-form button:disabled{opacity:.5;cursor:not-allowed}.api-key-hint{color:var(--text-secondary);font-size:11px}.api-key-hint a{color:var(--accent);text-decoration:none}.api-key-hint a:hover{text-decoration:underline}.search-error{color:var(--up-color)!important}
