*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#0a0e27;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#1a1e3a}::-webkit-scrollbar-thumb{background:#2d3561;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#3d4571}.App{background:linear-gradient(135deg,#0a0e27,#1a1e3a);display:flex;flex-direction:column;min-height:100vh}.app-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#2a3052cc;border-bottom:1px solid #ffffff1a;box-shadow:0 4px 6px #0000004d;justify-content:space-between;padding:1.5rem 2rem}.app-header,.header-controls{align-items:center;display:flex}.header-controls{gap:1rem}.logout-button{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .3s ease}.logout-button:hover{box-shadow:0 4px 12px #ef44444d;transform:translateY(-1px)}.loading-container{align-items:center;color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:100vh}.loading-spinner{border:4px solid #ffffff1a;border-left-color:#60a5fa;margin-bottom:1rem}.app-header h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#60a5fa,#3b82f6);-webkit-background-clip:text;background-clip:text;font-size:1.8rem;font-weight:700;margin:0}.connection-status{gap:1.5rem}.status-indicator{align-items:center;background:#ffffff0d;border-radius:20px;display:flex;font-size:.875rem;gap:.5rem;padding:.5rem 1rem}.status-dot{animation:pulse 2s infinite}.status-indicator.connected .status-dot{background:#10b981;box-shadow:0 0 10px #10b981}.status-indicator.disconnected .status-dot{animation:none;background:#ef4444;box-shadow:0 0 10px #ef4444}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.app-main{flex:1 1;overflow-y:auto;padding:1rem .5rem}.content-wrapper{display:flex;flex-direction:column;gap:2rem;margin:0;padding:0;width:100%}.analysis-panels{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:2fr 1fr}@media (max-width:1024px){.analysis-panels{grid-template-columns:1fr}}.app-footer{background:#2a305299;border-top:1px solid #ffffff1a;color:#fff9;font-size:.875rem;padding:1rem 2rem;text-align:center}@media (max-width:768px){.app-header{flex-direction:column;gap:1rem;padding:1rem}.app-header h1{font-size:1.5rem}.connection-status{gap:.5rem}.status-indicator{font-size:.75rem;padding:.4rem .8rem}.app-main{padding:1rem}}.main-navigation{background:#1a1e3acc;border-radius:8px;gap:.5rem;margin-bottom:1rem;padding:.5rem}.main-navigation,.nav-item{border:1px solid #ffffff1a;display:flex}.nav-item{align-items:center;background:#ffffff0d;border-radius:6px;color:#ffffffb3;cursor:pointer;font-size:.938rem;font-weight:500;padding:.75rem 1.5rem;transition:all .2s ease}.nav-item:hover{background:#ffffff1a;border-color:#fff3;color:#ffffffe6}.nav-item.active{background:#3b82f64d;border-color:#3b82f6;box-shadow:0 0 10px #3b82f64d;color:#fff}.nav-icon{font-size:1.2rem}.nav-label{font-weight:600}.nav-item.active .nav-label{font-weight:700}.sector-rotation{background:#1a1a2e;color:#fff;display:flex;flex-direction:column;height:100vh;max-height:100vh;overflow:hidden;padding:20px}.rotation-header{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:15px}.rotation-header h3{font-size:24px;font-weight:600;margin:0}.rotation-controls{align-items:center;display:flex;gap:15px}.control-group input[type=date],.control-group select{background-color:#ffffff1a!important;border:1px solid #ffffff4d!important;border-radius:4px;color:#fff!important;cursor:pointer;font-size:14px;padding:6px 12px}.control-group input[type=date]:focus,.control-group select:focus{border-color:#ffffff80!important;outline:none}.load-button{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:6px;font-weight:600;padding:8px 16px;transition:all .3s ease}.load-button:hover:not(:disabled){box-shadow:0 5px 15px #667eea66;transform:translateY(-2px)}.load-button:disabled{opacity:.5}.rotation-content{display:flex;flex:1 1;flex-direction:column;gap:20px;min-height:0;overflow:hidden;position:relative}.rotation-canvas{cursor:crosshair;flex:1 1;max-height:calc(100vh - 300px);min-height:400px}.rotation-canvas,.rotation-legend{background:#0000004d;border-radius:8px;width:100%}.rotation-legend{flex-shrink:0;height:80px;min-height:80px;overflow-x:auto;overflow-y:hidden;padding:15px;position:relative;z-index:10}.legend-title{color:#ffffffb3;font-size:14px;font-weight:600;letter-spacing:.5px;margin-bottom:12px;text-transform:uppercase}.legend-items{flex-wrap:wrap;gap:0}.legend-item{border-radius:4px;display:inline-flex;gap:6px;margin-bottom:4px;margin-right:12px;padding:6px 12px;transition:background .2s;white-space:nowrap}.legend-item:hover{background:#ffffff0d}.legend-color{border-radius:2px;flex-shrink:0;height:12px;width:12px}.legend-label{flex:1 1;font-size:13px;overflow:visible;white-space:nowrap}.legend-count{color:#ffffff80;font-size:11px}.empty-state{color:#ffffff80;font-size:16px;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}@media (max-width:1024px){.rotation-legend{max-height:100px}.rotation-canvas{height:500px}}@media (max-width:768px){.rotation-header{align-items:flex-start;flex-direction:column;gap:15px}.rotation-controls{flex-wrap:wrap;width:100%}.control-group{flex:1 1 auto}.rotation-canvas{height:300px;min-height:300px}.rotation-legend{height:60px;min-height:60px;padding:8px}.legend-item{font-size:12px;margin-right:8px;padding:4px 8px}.legend-count{display:none}}.bubble-chart-container{background:#0000001a;border-radius:4px;height:100%;overflow:hidden;position:relative;width:100%}.bubble-chart{background:#0000;display:block;height:100%;width:100%}.bubble-chart-container:before{border:1px solid #ffffff1a;border-radius:4px;bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.market-sentiment{background:#1a1a1a;color:#fff;min-height:100vh;padding:20px}.sentiment-header{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:15px}.sentiment-header h2{color:#fff;font-size:24px;margin:0}.sentiment-controls{align-items:center;display:flex;gap:20px}.control-group{align-items:center;display:flex;gap:8px}.control-group label{align-items:center;color:#fffc;cursor:pointer;display:flex;font-size:14px;gap:5px}.control-group select{background-color:#ffffff1a!important;border:1px solid #fff3!important;border-radius:4px;color:#fff!important;cursor:pointer;font-size:14px;padding:4px 8px}.control-group select:focus{border-color:#3b82f6!important;outline:none}.control-group select option{background-color:#1a1e3a!important;color:#fff!important}.control-group input[type=date]{background:#ffffff1a;border:1px solid #fff3;border-radius:4px;color:#fff;font-size:14px;padding:4px 8px}.control-group input[type=date]:focus{border-color:#3b82f6;outline:none}.control-group input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1)}.load-button{background:#3b82f6;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:6px 12px;transition:background-color .2s}.load-button:hover:not(:disabled){background:#2563eb}.load-button:disabled{background:#ffffff1a;color:#ffffff80;cursor:not-allowed}.sentiment-stats{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;display:flex;gap:30px;margin-bottom:20px;padding:15px}.stat-item{display:flex;flex-direction:column;gap:4px}.stat-label{color:#fff9;font-size:12px;letter-spacing:.5px;text-transform:uppercase}.stat-value{color:#fff;font-size:18px;font-weight:600}.sentiment-charts{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}.chart-section{background:#ffffff05;border:1px solid #ffffff1a;border-radius:8px;overflow:hidden}.chart-header{align-items:center;background:#ffffff0d;border-bottom:1px solid #ffffff1a;display:flex;justify-content:space-between;padding:15px 20px}.chart-header h3{color:#fff;font-size:16px;margin:0}.trade-count{background:#ffffff1a;border-radius:4px;color:#ffffffb3;font-size:14px;padding:4px 8px}.chart-container{min-height:240px;padding:0;position:relative}.loading-message{align-items:center;color:#fff9;display:flex;font-size:16px;height:200px;justify-content:center}.sentiment-info{background:#3b82f61a;border:1px solid #3b82f633;border-radius:8px;color:#fffc;font-size:14px;line-height:1.5;padding:15px}.sentiment-info strong{color:#3b82f6}.time-slider-container{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;margin:20px auto;max-width:1200px;padding:20px}.slider-label{color:#fff;font-size:18px;font-weight:600;margin-bottom:15px;text-align:center}.slider-window-info{color:#fff9;font-size:14px;font-weight:400;margin-left:8px}.time-slider{-webkit-appearance:none;background:#fff3;border-radius:4px;cursor:pointer;height:8px;outline:none;width:100%}.time-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#10b981;border-radius:50%;box-shadow:0 2px 4px #0000004d;cursor:pointer;height:20px;-webkit-transition:transform .1s ease;transition:transform .1s ease;width:20px}.time-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.time-slider::-webkit-slider-thumb:active{transform:scale(1.25)}.time-slider::-moz-range-thumb{background:#10b981;border:none;border-radius:50%;box-shadow:0 2px 4px #0000004d;cursor:pointer;height:20px;-moz-transition:transform .1s ease;transition:transform .1s ease;width:20px}.time-slider::-moz-range-thumb:hover{transform:scale(1.15)}.time-slider::-moz-range-thumb:active{transform:scale(1.25)}.slider-time-labels{color:#fff9;display:flex;font-size:12px;justify-content:space-between;margin-top:8px}@media (max-width:768px){.sentiment-header{gap:15px}.sentiment-controls,.sentiment-header{align-items:flex-start;flex-direction:column}.sentiment-controls{gap:10px;width:100%}.sentiment-controls .control-group{max-width:200px;width:100%}.sentiment-stats{flex-wrap:wrap;gap:15px}.chart-container{padding:10px}.time-slider-container{padding:15px}.slider-label{font-size:16px}.slider-window-info{display:block;margin-left:0;margin-top:4px}}.heatmap-container{background:#0f172a;min-height:100vh;padding:20px}.heatmap-header{align-items:center;background:#1e293b;border-radius:8px;box-shadow:0 2px 4px #0000004d;display:flex;justify-content:space-between;margin-bottom:20px;padding:15px 20px}.heatmap-header h2{color:#f1f5f9;font-size:24px;font-weight:600;margin:0}.heatmap-controls{align-items:center;display:flex;gap:20px}.connection-status{align-items:center;border-radius:20px;display:flex;font-size:14px;font-weight:500;gap:8px;padding:6px 12px}.connection-status.connected{background:#dcfce7;color:#166534}.connection-status.error{background:#fef2f2;color:#dc2626}.connection-status.disconnected{background:#334155;color:#94a3b8}.status-dot{background:currentColor;border-radius:50%;height:8px;width:8px}.last-update{color:#94a3b8;font-size:12px}.heatmap-loading{align-items:center;background:#1e293b;border-radius:8px;box-shadow:0 2px 4px #0000004d;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.loading-spinner{animation:spin 1s linear infinite;border:4px solid #334155;border-radius:50%;border-top-color:#3b82f6;height:40px;margin-bottom:16px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.heatmap-table-container{background:#1e293b;border-radius:8px;box-shadow:0 2px 4px #0000004d;margin-bottom:20px;overflow:hidden}.heatmap-table{border-collapse:collapse;font-size:14px;width:100%}.heatmap-table thead{background:#334155;border-bottom:2px solid #475569}.heatmap-table th{border-right:1px solid #475569;color:#f1f5f9;font-weight:600;padding:16px 12px;text-align:left}.heatmap-table th:last-child{border-right:none}.sector-column{min-width:200px;width:200px}.metric-column{min-width:150px;width:150px}.metric-header{display:flex;flex-direction:column;gap:4px}.metric-header span{color:#f1f5f9;font-size:13px;font-weight:600}.timeframe-labels{color:#94a3b8;display:flex;font-size:11px;gap:8px}.timeframe-15m,.timeframe-5m{color:#3b82f6;font-weight:600}.heatmap-row{border-bottom:1px solid #475569;transition:background-color .2s ease}.heatmap-row:hover{background:#334155}.heatmap-row:last-child{border-bottom:none}.sector-cell{background:#334155;border-right:1px solid #475569;padding:12px}.sector-name{color:#f1f5f9;font-size:14px;font-weight:600;margin-bottom:4px}.sector-stats{color:#94a3b8;font-size:11px}.metric-cell{border-right:1px solid #475569;padding:12px;position:relative;text-align:center}.metric-cell:last-child{border-right:none}.metric-value{align-items:center;display:flex;justify-content:center;margin-bottom:0}.value-15m{color:#f1f5f9;font-size:13px;font-weight:600}.trend-indicator{border-radius:3px;font-size:12px;font-weight:700;min-width:16px;padding:2px 4px;text-align:center}.trend-indicator.positive{background:#dcfce7;color:#059669}.trend-indicator.negative{background:#fef2f2;color:#dc2626}.trend-indicator.neutral{background:#334155;color:#94a3b8}.price-momentum .value-5m{color:#f1f5f9;color:var(--price-momentum-color,#f1f5f9)}.ofi-breadth .value-5m{color:#f1f5f9;color:var(--ofi-breadth-color,#f1f5f9)}.depth-imbalance .value-5m{color:#f1f5f9;color:var(--depth-imbalance-color,#f1f5f9)}.liquidity-pressure .value-5m{color:#f1f5f9;color:var(--liquidity-pressure-color,#f1f5f9)}.busd-ratio{background:#1e293b}.busd-ratio .value-5m,.net-busd-value .value-5m{font-weight:600}.stock-row{background:#1e293b;cursor:default}.stock-row:hover{background:#334155}.stock-cell{font-size:13px;padding-left:40px}.stock-symbol{color:#94a3b8;font-family:inherit;font-weight:500}.expand-icon{color:#64748b;display:inline-block;font-size:12px;margin-right:8px;-webkit-user-select:none;user-select:none;width:20px}.expand-icon,.sector-row{cursor:pointer}.sector-row:hover{background:#2d3748}.heatmap-legend{grid-gap:20px;background:#1e293b;border-radius:8px;box-shadow:0 2px 4px #0000004d;display:grid;gap:20px;grid-template-columns:1fr 1fr;padding:20px}.legend-section h4{color:#f1f5f9;font-size:14px;font-weight:600;margin:0 0 12px}.legend-items{display:flex;flex-direction:column;gap:8px}.legend-item{align-items:center;color:#94a3b8;display:flex;font-size:12px;gap:8px}.color-box{border:1px solid #475569;border-radius:3px;height:16px;width:16px}.color-box.price-momentum{background:linear-gradient(90deg,#dc2626,#fbbf24,#059669)}.color-box.ofi-breadth{background:linear-gradient(90deg,#64748b,#3b82f6)}.color-box.busd-ratio,.color-box.depth-imbalance,.color-box.liquidity-pressure,.color-box.net-busd-value{background:linear-gradient(90deg,#dc2626,#fbbf24,#059669)}@media (max-width:1200px){.heatmap-table-container{overflow-x:auto}.heatmap-table{min-width:800px}}@media (max-width:768px){.heatmap-container{padding:10px}.heatmap-header{gap:12px}.heatmap-controls,.heatmap-header{align-items:flex-start;flex-direction:column}.heatmap-controls{gap:8px}.heatmap-legend{grid-template-columns:1fr}.metric-column{min-width:120px;width:120px}.sector-column{min-width:150px;width:150px}}@media (max-width:480px){.heatmap-table{font-size:12px}.heatmap-table td,.heatmap-table th{padding:8px 6px}.metric-header span{font-size:11px}.timeframe-labels{font-size:10px}.value-5m{font-size:11px}.metric-15m{font-size:10px}}.heatmap-row.updating{animation:highlight .5s ease-in-out}@keyframes highlight{0%{background-color:#fef3c7}to{background-color:initial}}.heatmap-table thead th{background:#334155;position:-webkit-sticky;position:sticky;top:0;z-index:10}.metric-header[data-tooltip]:hover:after,.sector-column[data-tooltip]:hover:after{animation:tooltipFadeIn .2s ease-in-out forwards;background:#1e293b;border:1px solid #475569;border-radius:6px;box-shadow:0 4px 12px #0000004d;color:#f1f5f9;content:attr(data-tooltip);font-size:12px;line-height:1.4;max-width:400px;opacity:0;padding:12px 16px;pointer-events:none;position:absolute;white-space:pre-wrap;z-index:1000}.metric-header[title]:hover:after{left:50%;margin-top:8px;top:100%;transform:translateX(-50%)}.sector-column[title]:hover:after{left:0;margin-top:8px;top:100%}@keyframes tooltipFadeIn{0%{opacity:0;transform:translateX(-50%) translateY(-4px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.sector-column[title]:hover:after{animation:tooltipFadeInSector .2s ease-in-out forwards}@keyframes tooltipFadeInSector{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.metric-header,.sector-column{position:relative}.heatmap-table:focus-within{outline:2px solid #3b82f6;outline-offset:2px}.metric-cell:focus{outline:2px solid #3b82f6;outline-offset:-2px}@media print{.heatmap-container{background:#fff;padding:0}.heatmap-header{border-bottom:2px solid #000;box-shadow:none}.heatmap-legend,.heatmap-table-container{border:1px solid #000;box-shadow:none}.heatmap-legend{margin-top:20px}}.sector-liquidity-pressure{background:#1a1a1a;color:#fff;min-height:100vh;padding:20px}.sector-liquidity-pressure-header{margin-bottom:20px}.sector-liquidity-pressure-header h2{color:#fff;margin-bottom:10px}.live-mode-only{color:#fff9;font-style:italic;margin:0}.controls{display:flex;flex-wrap:wrap;gap:30px;margin-bottom:20px}.timeframe-controls{align-items:center;display:flex;gap:10px}.timeframe-controls label{color:#fff;font-weight:700}.timeframe-controls button{background:#ffffff1a;border:1px solid #fff3;border-radius:4px;color:#fff;cursor:pointer;padding:8px 16px;transition:all .2s}.timeframe-controls button:hover{background:#fff3}.timeframe-controls button.active{background:#3b82f6;border-color:#3b82f6;color:#fff}.sector-selection{align-items:flex-start;display:flex;gap:10px}.sector-selection label{color:#fff;font-weight:700;margin-top:2px}.sector-checkboxes{display:flex;flex-wrap:wrap;gap:15px}.sector-checkbox{align-items:center;color:#fff;cursor:pointer;display:flex;font-weight:400;gap:5px}.sector-checkbox input[type=checkbox]{margin:0}.chart-container{background:#0000001a;border:1px solid #ffffff1a;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}@media (max-width:768px){.controls{flex-direction:column;gap:15px}.sector-checkboxes{flex-direction:column;gap:8px}}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{background:#fff;border-radius:12px;box-shadow:0 20px 40px #0000001a;max-width:400px;padding:40px;text-align:center;width:100%}.login-header{margin-bottom:30px}.login-header h1{color:#333;font-size:28px;font-weight:600;margin:0 0 10px}.login-header p{color:#666;font-size:14px;margin:0}.login-form{text-align:left}.form-group{margin-bottom:20px}.form-group label{color:#333;display:block;font-size:14px;font-weight:500;margin-bottom:8px}.form-group input{border:2px solid #e1e5e9;border-radius:8px;box-sizing:border-box;font-size:16px;padding:12px 16px;transition:border-color .3s ease;width:100%}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-group input:disabled{background-color:#f8f9fa;cursor:not-allowed}.error-message{background-color:#fee;border:1px solid #feb2b2;border-radius:8px;color:#c53030;font-size:14px;margin-bottom:20px;padding:12px 16px}.login-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-bottom:20px;padding:14px 20px;transition:all .3s ease;width:100%}.login-button:hover:not(:disabled){box-shadow:0 8px 20px #667eea4d;transform:translateY(-2px)}.login-button:disabled{background:#ccc;box-shadow:none;cursor:not-allowed;transform:none}.login-footer{border-top:1px solid #e1e5e9;padding-top:20px}.login-footer p{color:#666;font-size:12px;margin:0}@media (max-width:480px){.login-container{padding:10px}.login-card{padding:30px 20px}.login-header h1{font-size:24px}}@media (prefers-color-scheme:dark){.login-card{background:#1a1a1a;color:#fff}.login-header h1{color:#fff}.login-header p{color:#ccc}.form-group label{color:#fff}.form-group input{background:#2d2d2d;border-color:#444;color:#fff}.form-group input:focus{border-color:#667eea}.form-group input:disabled{background-color:#333}.login-footer{border-top-color:#444}.login-footer p{color:#ccc}}
/*# sourceMappingURL=main.0c6129e1.css.map*/