/* * Quantitative Trading Platform - Interactive Mockup * CSS Styles for the complete platform mockup */ :root { /* Color Palette */ --primary-dark: #0a1929; --secondary-dark: #1e2a38; --tertiary-dark: #2a3a4d; /* Accent Colors */ --accent-blue: #1976d2; --accent-green: #4caf50; --accent-red: #f44336; --accent-purple: #9c27b0; --accent-orange: #ff9800; --accent-cyan: #00bcd4; --accent-yellow: #ffc107; /* Text Colors */ --text-primary: #ffffff; --text-secondary: #b0bec5; --text-muted: #78909c; /* Border Colors */ --border-dark: #37474f; --border-light: #546e7a; /* Status Colors */ --status-success: #4caf50; --status-warning: #ff9800; --status-danger: #f44336; --status-info: #2196f3; /* Chart Colors */ --chart-line: #4caf50; --chart-area: rgba(76, 175, 80, 0.1); --chart-grid: #37474f; } /* Base Styles */ body { font-family: 'Segoe UI', system-ui, -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif; background-color: var(--primary-dark); color: var(--text-primary); overflow-x: hidden; font-size: 0.9rem; line-height: 1.5; } /* Typography */ h1, h2, h3, h4, h5, h6 { font-weight: 600; color: var(--text-primary); } .text-muted { color: var(--text-muted) !important; } /* Cards */ .card { background-color: var(--primary-dark); border: 1px solid var(--border-dark); border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); transition: all 0.2s ease; } .card:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); transform: translateY(-2px); } .card-header { background-color: rgba(255, 255, 255, 0.03); border-bottom: 1px solid var(--border-dark); padding: 0.75rem 1rem; } .card-body { padding: 1rem; } /* Border accent colors */ .border-accent-blue { border-color: var(--accent-blue) !important; } .border-accent-green { border-color: var(--accent-green) !important; } .border-accent-red { border-color: var(--accent-red) !important; } .border-accent-purple { border-color: var(--accent-purple) !important; } .border-accent-orange { border-color: var(--accent-orange) !important; } .border-secondary-dark { border-color: var(--secondary-dark) !important; } /* Sidebar Navigation */ .sidebar { min-height: calc(100vh - 56px); padding-top: 1rem; } .nav-link { color: var(--text-secondary); padding: 0.75rem 1rem; margin: 0.125rem 0.5rem; border-radius: 6px; transition: all 0.2s ease; } .nav-link:hover { color: var(--text-primary); background-color: rgba(255, 255, 255, 0.05); } .nav-link.active { color: var(--text-primary); background-color: rgba(25, 118, 210, 0.15); border-left: 3px solid var(--accent-blue); } .nav-link i { width: 20px; text-align: center; } /* Progress Bars */ .progress { background-color: var(--tertiary-dark); border-radius: 4px; } .progress-bar { border-radius: 4px; } /* Tables */ .table-dark { --bs-table-bg: transparent; --bs-table-striped-bg: rgba(255, 255, 255, 0.03); --bs-table-hover-bg: rgba(255, 255, 255, 0.05); color: var(--text-primary); border-color: var(--border-dark); } .table-dark th { font-weight: 600; color: var(--text-secondary); border-color: var(--border-dark); } .table-dark td { border-color: var(--border-dark); } /* Forms */ .form-control, .form-select { background-color: var(--secondary-dark); border: 1px solid var(--border-dark); color: var(--text-primary); } .form-control:focus, .form-select:focus { background-color: var(--secondary-dark); border-color: var(--accent-blue); color: var(--text-primary); box-shadow: 0 0 0 0.25rem rgba(25, 118, 210, 0.25); } .form-control::placeholder { color: var(--text-muted); } .input-group-text { background-color: var(--tertiary-dark); border: 1px solid var(--border-dark); color: var(--text-secondary); } /* Buttons */ .btn { border-radius: 6px; font-weight: 500; transition: all 0.2s ease; } .btn-outline-light { color: var(--text-secondary); border-color: var(--border-dark); } .btn-outline-light:hover { background-color: rgba(255, 255, 255, 0.1); border-color: var(--border-light); color: var(--text-primary); } .btn-primary { background-color: var(--accent-blue); border-color: var(--accent-blue); } .btn-primary:hover { background-color: #1565c0; border-color: #1565c0; } .btn-success { background-color: var(--accent-green); border-color: var(--accent-green); } .btn-danger { background-color: var(--accent-red); border-color: var(--accent-red); } .btn-warning { background-color: var(--accent-orange); border-color: var(--accent-orange); color: #000; } .btn-info { background-color: var(--accent-cyan); border-color: var(--accent-cyan); } /* Badges */ .badge { font-weight: 500; padding: 0.35em 0.65em; border-radius: 4px; } .bg-purple { background-color: var(--accent-purple) !important; } /* Alerts */ .alert { border-radius: 6px; border: 1px solid transparent; } .alert-warning { background-color: rgba(255, 152, 0, 0.1); border-color: rgba(255, 152, 0, 0.3); color: var(--accent-orange); } .alert-success { background-color: rgba(76, 175, 80, 0.1); border-color: rgba(76, 175, 80, 0.3); color: var(--accent-green); } .alert-info { background-color: rgba(33, 150, 243, 0.1); border-color: rgba(33, 150, 243, 0.3); color: var(--accent-blue); } /* Charts Container */ canvas { max-width: 100%; } /* Section Transitions */ .section-content { animation: fadeIn 0.3s ease; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Responsive Adjustments */ @media (max-width: 768px) { .sidebar { min-height: auto; border-right: none; border-bottom: 1px solid var(--border-dark); } .nav-link { margin: 0.125rem 0; } .display-4 { font-size: 2.5rem; } } /* Utility Classes */ .text-success { color: var(--accent-green) !important; } .text-danger { color: var(--accent-red) !important; } .text-warning { color: var(--accent-orange) !important; } .text-info { color: var(--accent-cyan) !important; } .bg-primary-dark { background-color: var(--primary-dark) !important; } .bg-secondary-dark { background-color: var(--secondary-dark) !important; } .border-secondary-dark { border-color: var(--secondary-dark) !important; } /* Scrollbar Styling */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: var(--secondary-dark); } ::-webkit-scrollbar-thumb { background: var(--tertiary-dark); border-radius: 5px; } ::-webkit-scrollbar-thumb:hover { background: var(--border-light); } /* List Groups */ .list-group-item { background-color: transparent; color: var(--text-primary); border-color: var(--border-dark); } .list-group-item:hover { background-color: rgba(255, 255, 255, 0.03); } /* Hover Effects */ .hover-lift { transition: transform 0.2s ease; } .hover-lift:hover { transform: translateY(-2px); } /* Highlight animation for updated values */ @keyframes highlight { 0% { color: var(--text-primary); } 50% { color: var(--accent-yellow); } 100% { color: var(--text-primary); } } .text-highlight { animation: highlight 1s ease; } /* Status Indicators */ .status-indicator { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; } .status-indicator.online { background-color: var(--accent-green); box-shadow: 0 0 8px var(--accent-green); } .status-indicator.warning { background-color: var(--accent-orange); box-shadow: 0 0 8px var(--accent-orange); } .status-indicator.offline { background-color: var(--accent-red); box-shadow: 0 0 8px var(--accent-red); } /* Metric Cards */ .metric-card { position: relative; overflow: hidden; } .metric-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--accent-blue), var(--accent-cyan)); } .metric-card.green::before { background: linear-gradient(90deg, var(--accent-green), #81c784); } .metric-card.red::before { background: linear-gradient(90deg, var(--accent-red), #e57373); } .metric-card.orange::before { background: linear-gradient(90deg, var(--accent-orange), #ffb74d); } /* Loading States */ .loading-skeleton { background: linear-gradient(90deg, var(--secondary-dark) 25%, var(--tertiary-dark) 50%, var(--secondary-dark) 75%); background-size: 200% 100%; animation: loading 1.5s infinite; } @keyframes loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Tooltips */ .tooltip-inner { background-color: var(--tertiary-dark); color: var(--text-primary); border-radius: 4px; padding: 0.5rem 0.75rem; } .tooltip.bs-tooltip-top .tooltip-arrow::before { border-top-color: var(--tertiary-dark); } .tooltip.bs-tooltip-bottom .tooltip-arrow::before { border-bottom-color: var(--tertiary-dark); } .tooltip.bs-tooltip-start .tooltip-arrow::before { border-left-color: var(--tertiary-dark); } .tooltip.bs-tooltip-end .tooltip-arrow::before { border-right-color: var(--tertiary-dark); }