/* Statistics Page */ .statistics-page { min-height: 100vh; background: #020617; color: #f1f5f9; } /* Header */ .stats-header { background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); border-bottom: 1px solid #1e293b; padding: 2rem 1.5rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3); } .header-content { max-width: 1400px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; gap: 2rem; } .page-title h1 { margin: 0; font-size: 2rem; font-weight: 700; color: white; display: flex; align-items: center; gap: 0.75rem; } .subtitle { margin: 0.5rem 0 0 0; color: #94a3b8; font-size: 0.875rem; } .header-filters { display: flex; gap: 0.75rem; } .filter-select { padding: 0.75rem 1rem; border-radius: 0.5rem; border: 1px solid #334155; background: #1e293b; color: white; font-size: 0.875rem; cursor: pointer; min-width: 200px; } .filter-select:focus { outline: none; border-color: #6366f1; } /* Content */ .stats-content { max-width: 1400px; margin: 0 auto; padding: 2rem 1.5rem; } /* Section Title */ .section-title { margin: 0 0 1.5rem 0; font-size: 1.5rem; font-weight: 700; color: white; display: flex; align-items: center; gap: 0.75rem; } /* Stats Grid */ .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin-bottom: 2.5rem; } .stat-card { background: #0f172a; border: 1px solid #1e293b; border-radius: 0.75rem; padding: 1.5rem; transition: all 0.3s ease; } .stat-card:hover { transform: translateY(-4px); box-shadow: 0 12px 24px -4px rgba(0, 0, 0, 0.4); } .stat-card.primary { background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); border-color: #7c3aed; } .stat-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; } .stat-icon { width: 2.5rem; height: 2.5rem; border-radius: 0.5rem; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; background: rgba(255, 255, 255, 0.1); color: white; } .stat-icon.success { background: rgba(16, 185, 129, 0.2); color: #10b981; } .stat-icon.info { background: rgba(59, 130, 246, 0.2); color: #3b82f6; } .stat-icon.warning { background: rgba(245, 158, 11, 0.2); color: #f59e0b; } .stat-label { font-size: 0.875rem; color: rgba(255, 255, 255, 0.7); font-weight: 600; } .stat-card:not(.primary) .stat-label { color: #94a3b8; } .stat-value { font-size: 2rem; font-weight: 700; color: white; font-family: 'Courier New', monospace; margin-bottom: 0.5rem; } .stat-footer { display: flex; align-items: center; gap: 0.5rem; } .stat-change { display: flex; align-items: center; gap: 0.25rem; font-size: 0.875rem; font-weight: 600; padding: 0.25rem 0.5rem; border-radius: 0.375rem; } .stat-change.positive { background: rgba(16, 185, 129, 0.1); color: #10b981; } .stat-change.negative { background: rgba(239, 68, 68, 0.1); color: #ef4444; } .stat-meta { font-size: 0.75rem; color: #64748b; } /* Performers Section */ .performers-section { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-bottom: 2.5rem; } .performer-card { background: #0f172a; border: 1px solid #1e293b; border-radius: 0.75rem; padding: 1.5rem; } .performer-card.best { border-color: rgba(16, 185, 129, 0.3); background: linear-gradient(135deg, rgba(16, 185, 129, 0.05) 0%, #0f172a 100%); } .performer-card.worst { border-color: rgba(239, 68, 68, 0.3); background: linear-gradient(135deg, rgba(239, 68, 68, 0.05) 0%, #0f172a 100%); } .performer-header { display: flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; font-weight: 600; color: #94a3b8; margin-bottom: 1rem; } .performer-card.best .performer-header { color: #10b981; } .performer-card.worst .performer-header { color: #ef4444; } .performer-content { display: flex; justify-content: space-between; align-items: center; } .performer-symbol { font-size: 1.5rem; font-weight: 700; color: white; font-family: monospace; } .performer-value { font-size: 1.5rem; font-weight: 700; font-family: monospace; } .empty-performer { text-align: center; color: #475569; font-size: 0.875rem; padding: 1rem; } /* Breakdown Table */ .breakdown-section { margin-bottom: 2.5rem; } .breakdown-table { background: #0f172a; border: 1px solid #1e293b; border-radius: 0.75rem; overflow: hidden; } .table-header { display: grid; grid-template-columns: 2fr 1.5fr 1.5fr 1fr 1fr 1fr 1.5fr; gap: 1rem; padding: 1rem 1.5rem; background: #1e293b; border-bottom: 1px solid #334155; } .th { font-size: 0.75rem; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.05em; } .table-row { display: grid; grid-template-columns: 2fr 1.5fr 1.5fr 1fr 1fr 1fr 1.5fr; gap: 1rem; padding: 1rem 1.5rem; border-bottom: 1px solid #1e293b; transition: background 0.2s ease; } .table-row:hover { background: #1e293b; } .td { display: flex; align-items: center; font-size: 0.875rem; color: white; } .asset-cell { flex-direction: column; align-items: flex-start; gap: 0.25rem; } .asset-symbol { font-weight: 700; font-family: monospace; color: white; } .asset-name { font-size: 0.75rem; color: #64748b; } .btn-details { display: flex; align-items: center; gap: 0.375rem; padding: 0.375rem 0.75rem; border-radius: 0.375rem; font-size: 0.75rem; font-weight: 600; border: 1px solid #334155; background: transparent; color: #94a3b8; cursor: pointer; transition: all 0.2s ease; } .btn-details:hover { background: #1e293b; border-color: #6366f1; color: white; } /* Asset Details */ .asset-details-section { display: flex; flex-direction: column; gap: 2rem; } .asset-details-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } .asset-title-section { display: flex; align-items: center; gap: 1rem; } .asset-title-section h2 { margin: 0; font-size: 1.875rem; font-weight: 700; color: white; } .status-badge { padding: 0.375rem 0.75rem; border-radius: 0.375rem; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; } .status-badge.active { background: rgba(16, 185, 129, 0.2); color: #10b981; border: 1px solid rgba(16, 185, 129, 0.3); } .status-badge.inactive { background: rgba(239, 68, 68, 0.2); color: #ef4444; border: 1px solid rgba(239, 68, 68, 0.3); } .btn-back { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; border: 1px solid #334155; background: #1e293b; color: #94a3b8; cursor: pointer; transition: all 0.2s ease; } .btn-back:hover { background: #334155; color: white; } /* Metrics Grid */ .metrics-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; } .metric-card { background: #0f172a; border: 1px solid #1e293b; border-radius: 0.75rem; padding: 1.5rem; display: flex; align-items: center; gap: 1rem; } .metric-icon { width: 3rem; height: 3rem; border-radius: 0.5rem; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; background: rgba(255, 255, 255, 0.1); color: white; } .metric-icon.success { background: rgba(16, 185, 129, 0.2); color: #10b981; } .metric-icon.danger { background: rgba(239, 68, 68, 0.2); color: #ef4444; } .metric-icon.info { background: rgba(59, 130, 246, 0.2); color: #3b82f6; } .metric-content { flex: 1; } .metric-label { font-size: 0.75rem; color: #94a3b8; text-transform: uppercase; font-weight: 600; margin-bottom: 0.5rem; } .metric-value { font-size: 1.5rem; font-weight: 700; color: white; font-family: monospace; } /* Performance Section */ .performance-section { background: #0f172a; border: 1px solid #1e293b; border-radius: 0.75rem; padding: 1.5rem; } .subsection-title { margin: 0 0 1.5rem 0; font-size: 1.125rem; font-weight: 600; color: white; } .performance-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; } .performance-item { display: flex; flex-direction: column; gap: 0.5rem; padding: 1rem; background: #020617; border: 1px solid #1e293b; border-radius: 0.5rem; } .perf-label { font-size: 0.75rem; color: #64748b; font-weight: 600; } .perf-value { font-size: 1.25rem; font-weight: 700; color: white; font-family: monospace; } /* P/L Section */ .pnl-section { background: #0f172a; border: 1px solid #1e293b; border-radius: 0.75rem; padding: 1.5rem; } .pnl-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; } .pnl-card { background: #020617; border: 1px solid #1e293b; border-radius: 0.75rem; padding: 1.5rem; } .profit-card { border-color: rgba(16, 185, 129, 0.3); background: linear-gradient(135deg, rgba(16, 185, 129, 0.05) 0%, #020617 100%); } .loss-card { border-color: rgba(239, 68, 68, 0.3); background: linear-gradient(135deg, rgba(239, 68, 68, 0.05) 0%, #020617 100%); } .unrealized-card { border-color: rgba(245, 158, 11, 0.3); background: linear-gradient(135deg, rgba(245, 158, 11, 0.05) 0%, #020617 100%); } .pnl-header { display: flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; font-weight: 600; color: #94a3b8; margin-bottom: 1rem; } .profit-card .pnl-header { color: #10b981; } .loss-card .pnl-header { color: #ef4444; } .unrealized-card .pnl-header { color: #f59e0b; } .pnl-amount { font-size: 1.875rem; font-weight: 700; font-family: monospace; margin-bottom: 0.75rem; } .pnl-meta { font-size: 0.75rem; color: #64748b; margin-bottom: 0.375rem; } /* Trades Section */ .trades-section { background: #0f172a; border: 1px solid #1e293b; border-radius: 0.75rem; padding: 1.5rem; } .trades-list { display: flex; flex-direction: column; gap: 0.75rem; } .trade-item { display: flex; align-items: center; gap: 1rem; padding: 1rem; background: #020617; border: 1px solid #1e293b; border-radius: 0.5rem; transition: all 0.2s ease; } .trade-item:hover { background: #1e293b; } .trade-item.bot-trade { border-color: rgba(99, 102, 241, 0.3); background: rgba(99, 102, 241, 0.05); } .trade-icon { width: 2.5rem; height: 2.5rem; border-radius: 0.5rem; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; } .trade-icon.buy { background: rgba(16, 185, 129, 0.1); color: #10b981; } .trade-icon.sell { background: rgba(239, 68, 68, 0.1); color: #ef4444; } .trade-details { flex: 1; display: flex; flex-direction: column; gap: 0.25rem; } .trade-type { font-size: 0.875rem; font-weight: 600; color: white; display: flex; align-items: center; gap: 0.5rem; } .bot-label { display: flex; align-items: center; gap: 0.25rem; padding: 0.125rem 0.375rem; background: rgba(99, 102, 241, 0.2); color: #6366f1; border-radius: 0.25rem; font-size: 0.625rem; font-weight: 700; } .trade-meta { font-size: 0.75rem; color: #64748b; } .trade-amounts { display: flex; flex-direction: column; gap: 0.25rem; align-items: flex-end; } .trade-quantity { font-size: 0.875rem; color: white; font-family: monospace; } .trade-price { font-size: 0.75rem; color: #64748b; } .trade-value { font-size: 1rem; font-weight: 700; color: white; font-family: monospace; min-width: 100px; text-align: right; } /* Empty States */ .empty-state, .empty-trades { text-align: center; padding: 3rem 1rem; color: #64748b; } .empty-state .bi, .empty-trades .bi { font-size: 3rem; margin-bottom: 1rem; opacity: 0.5; } .empty-state p, .empty-trades p { margin: 1rem 0; font-size: 1rem; } /* Common Styles */ .profit { color: #10b981 !important; } .loss { color: #ef4444 !important; } /* Responsive */ @media (max-width: 1024px) { .performers-section { grid-template-columns: 1fr; } .table-header, .table-row { grid-template-columns: 1fr; } .th:not(:first-child), .td:not(:first-child) { display: none; } } @media (max-width: 768px) { .header-content { flex-direction: column; align-items: flex-start; } .stats-grid, .metrics-grid, .performance-grid, .pnl-grid { grid-template-columns: 1fr; } }