*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f5f7fb}.app{max-width:1280px;margin:0 auto;padding:12px;min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;padding:8px 0;margin-bottom:12px;border-bottom:1px solid #eee}.topbar h1{font-size:1.2rem;color:#222}.topbar-right{display:flex;align-items:center;gap:8px}.topbar-right .time{font-size:.75rem;color:#999}.btn-refresh,.btn-mode{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:4px;border-radius:4px}.btn-refresh:hover,.btn-mode:hover{background:#f0f0f0}.btn-refresh:disabled{opacity:.5}.loading,.error{text-align:center;padding:60px 20px;color:#666}.error button{margin-top:12px;padding:8px 20px;background:#ff6700;color:#fff;border:none;border-radius:6px;cursor:pointer}.stock-row{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap}.temperature{display:flex;align-items:center;gap:10px;padding:10px;background:#fff;border-radius:8px;margin-bottom:10px}.temp-label{font-size:.8rem;color:#666;font-weight:600}.temp-display{display:flex;align-items:center;gap:12px;flex:1}.temp-gauge{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:1.1rem}.temp-info{display:flex;flex-direction:column;gap:2px}.temp-level{font-size:1.1rem;font-weight:700}.temp-detail{font-size:.65rem;color:#999}.stock-item{background:#fff;border-radius:6px;padding:8px 12px;flex:1;min-width:120px;text-align:center}.s-name{font-size:.7rem;color:#888;display:block}.s-price{font-size:1.1rem;font-weight:700;color:#222}.s-change{font-size:.75rem;margin-left:4px}.s-change.up{color:#2e7d32}.s-change.down{color:#c62828}.s-change.flat{color:#999}.s-currency{font-size:.6rem;color:#aaa;margin-left:2px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.metric{background:#fff;border-radius:8px;padding:12px;text-align:center;border-left:3px solid #ddd}.metric.up{border-left-color:#4caf50}.metric.down{border-left-color:#f44336}.metric.flat{border-left-color:#9e9e9e}.m-label{font-size:.75rem;color:#888;margin-bottom:4px}.m-value{font-size:1.4rem;font-weight:700;color:#222}.m-unit{font-size:.7rem;color:#999;margin-left:2px}.m-sub{font-size:.65rem;color:#aaa;margin-top:2px}.metric.up .m-value{color:#2e7d32}.metric.down .m-value{color:#c62828}.charts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.chart-box{background:#fff;border-radius:8px;padding:10px}.chart-title{font-size:.8rem;color:#666;margin-bottom:4px;text-align:center}.chart{width:100%;height:220px}.events{background:#fff;border-radius:8px;padding:10px;flex:1;min-height:0;overflow:hidden}.events-title{font-size:.8rem;color:#666;margin-bottom:6px;font-weight:600}.empty{text-align:center;color:#ccc;padding:12px;font-size:.8rem}.event-row{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:.78rem;border-bottom:1px solid #f5f5f5}.event-row:last-child{border-bottom:none}.e-dot{width:6px;height:6px;border-radius:50%;background:#ccc;flex-shrink:0}.e-dot.up{background:#4caf50}.e-dot.down{background:#f44336}.e-time{color:#999;font-size:.7rem;flex-shrink:0;width:50px}.e-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.e-title:hover{color:#1976d2}.e-type{font-size:.65rem;background:#e3f2fd;color:#1565c0;padding:1px 6px;border-radius:3px;flex-shrink:0}.signals{background:#fff;border-radius:8px;padding:10px;margin-bottom:12px}.signals-title{font-size:.8rem;color:#666;margin-bottom:8px;font-weight:600}.signals-health{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding:8px;background:#f9f9f9;border-radius:6px}.signals-health .health-score{font-size:1.5rem;font-weight:700}.signals-health .health-label{font-size:.75rem;color:#888}.signals-health.up .health-score{color:#2e7d32}.signals-health.down .health-score{color:#c62828}.signals-health.flat .health-score{color:#666}.signals-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.signal-card{background:#f5f5f5;border-radius:6px;padding:8px;text-align:center}.signal-label{font-size:.7rem;color:#666;margin-bottom:4px}.signal-stats{display:flex;justify-content:center;gap:10px}.signal-stats .stat{font-size:.85rem;font-weight:600}.signal-stats .stat.positive{color:#2e7d32}.signal-stats .stat.negative{color:#c62828}.bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.reports-panel,.social-panel{background:#fff;border-radius:8px;padding:10px}.panel-title{font-size:.8rem;color:#666;margin-bottom:8px;font-weight:600}.report-row{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:.75rem;border-bottom:1px solid #f5f5f5}.report-row:last-child{border-bottom:none}.report-bias{font-size:.65rem;padding:1px 6px;border-radius:3px;flex-shrink:0;font-weight:600}.report-bias.up{background:#e8f5e9;color:#2e7d32}.report-bias.down{background:#ffebee;color:#c62828}.report-bias.flat{background:#f5f5f5;color:#666}.report-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.report-inst{font-size:.65rem;color:#999;flex-shrink:0}.report-price{font-size:.65rem;color:#ff6700;flex-shrink:0}.report-pdf{font-size:.6rem;background:#e8f5e9;color:#2e7d32;padding:1px 4px;border-radius:3px;margin-left:4px;flex-shrink:0}.report-summary{font-size:.65rem;color:#666;margin-top:2px;padding-left:32px}.keywords-cloud{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.keyword-tag{font-size:.7rem;background:#fff3e0;color:#e65100;padding:2px 8px;border-radius:10px}.social-stats{display:flex;gap:16px}.social-stat{text-align:center}.social-stat .stat-value{font-size:1.2rem;font-weight:700;color:#222;display:block}.social-stat .stat-label{font-size:.65rem;color:#888}.footer{display:flex;justify-content:space-between;padding:8px 0;font-size:.7rem;color:#aaa;border-top:1px solid #eee;margin-top:8px}.competitors{background:#fff;border-radius:8px;padding:10px;margin-bottom:12px}.competitors-title{font-size:.8rem;color:#666;margin-bottom:8px;font-weight:600}.loading-competitors{text-align:center;color:#ccc;padding:20px;font-size:.8rem}.competitors-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.competitor-card{background:#f9f9f9;border-radius:6px;padding:10px}.card-title{font-size:.75rem;color:#666;margin-bottom:8px;font-weight:600;text-align:center}.price-comparison,.sentiment-comparison,.heat-comparison{display:flex;flex-direction:column;gap:6px}.price-item,.sentiment-item,.heat-item{display:flex;align-items:center;justify-content:space-between;font-size:.75rem;padding:4px 0;border-bottom:1px solid #eee}.price-item:last-child,.sentiment-item:last-child,.heat-item:last-child{border-bottom:none}.comp-name{flex:1;color:#333;font-weight:500}.comp-price{width:80px;text-align:right;color:#666}.comp-change{width:60px;text-align:right;font-weight:600}.comp-change.up{color:#2e7d32}.comp-change.down{color:#c62828}.comp-change.flat{color:#999}.sentiment-bar,.heat-bar{flex:1;height:6px;background:#e0e0e0;border-radius:3px;margin:0 8px;overflow:hidden}.bar-fill{height:100%;border-radius:3px;transition:width .3s}.bar-fill.positive{background:linear-gradient(90deg,#4caf50,#8bc34a)}.bar-fill.negative{background:linear-gradient(90deg,#f44336,#ff9800)}.bar-fill.neutral{background:#9e9e9e}.heat-comparison .bar-fill{background:linear-gradient(90deg,#2196f3,#03a9f4)}.sentiment-score,.heat-score{width:30px;text-align:right;font-weight:600;color:#333}.app.dark{background:#1a1a1a;color:#e0e0e0}.app.dark .topbar{border-bottom-color:#333}.app.dark .topbar h1{color:#e0e0e0}.app.dark .stock-item{background:#2d2d2d}.app.dark .s-price{color:#fff}.app.dark .metric{background:#2d2d2d}.app.dark .m-label{color:#999}.app.dark .m-value{color:#fff}.app.dark .chart-box,.app.dark .events,.app.dark .signals{background:#2d2d2d}.app.dark .signals-health,.app.dark .signal-card{background:#333}.app.dark .signal-label{color:#999}.app.dark .reports-panel,.app.dark .social-panel{background:#2d2d2d}.app.dark .report-row{border-bottom-color:#333}.app.dark .report-title{color:#ccc}.app.dark .keyword-tag{background:#3d2e1f;color:#ff9800}.app.dark .social-stat .stat-value{color:#fff}.app.dark .event-row{border-bottom-color:#333}.app.dark .e-title{color:#ccc}.app.dark .footer{border-top-color:#333}.app.dark .btn-refresh:hover,.app.dark .btn-mode:hover{background:#333}.app.dark .competitors{background:#2d2d2d}.app.dark .competitor-card{background:#333}.app.dark .card-title{color:#aaa}.app.dark .comp-name{color:#ccc}.app.dark .comp-price{color:#aaa}.app.dark .price-item,.app.dark .sentiment-item,.app.dark .heat-item{border-bottom-color:#444}.app.dark .sentiment-bar,.app.dark .heat-bar{background:#444}.app.dark .sentiment-score,.app.dark .heat-score{color:#ccc}@media (max-width: 640px){.stock-row{flex-direction:column}.stock-item{min-width:100%}.metrics{grid-template-columns:repeat(2,1fr)}.charts{grid-template-columns:1fr}.chart{height:180px}.bottom-grid,.competitors-grid{grid-template-columns:1fr}}.animated-bg{background:linear-gradient(-45deg,#0f0f23,#1a1a2e,#16213e,#0f0f23);background-size:400% 400%;animation:gradientBG 15s ease infinite}@keyframes gradientBG{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.data-card{position:relative;overflow:hidden}.data-card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:conic-gradient(from 0deg,transparent,rgba(255,107,0,.1),transparent 30%);animation:rotate 4s linear infinite}@keyframes rotate{to{transform:rotate(360deg)}}.pulse{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7;transform:scale(1.02)}}@keyframes flash{0%,to{opacity:1}50%{opacity:.5}}.updating{animation:flash .5s ease-in-out 3}.card:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 20px 40px #ff6b0033}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.news-item{animation:slideIn .3s ease-out}.price-up{color:#0f8!important;text-shadow:0 0 10px rgba(0,255,136,.5)}.price-down{color:#ff4757!important;text-shadow:0 0 10px rgba(255,71,87,.5)}.dark .card{background:#1a1a2ee6;border:1px solid rgba(255,107,0,.2)}.signal-bar{height:4px;background:linear-gradient(90deg,#0f8,#fc0,#ff4757);border-radius:2px}
