diff --git a/src/__pycache__/web_dashboard.cpython-310.pyc b/src/__pycache__/web_dashboard.cpython-310.pyc
index 80abfe1..2a3021e 100644
Binary files a/src/__pycache__/web_dashboard.cpython-310.pyc and b/src/__pycache__/web_dashboard.cpython-310.pyc differ
diff --git a/src/web_dashboard.py b/src/web_dashboard.py
index 2984ff9..7ec4782 100644
--- a/src/web_dashboard.py
+++ b/src/web_dashboard.py
@@ -210,207 +210,184 @@ html_content = """
Trading Bot Dashboard
+ * {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ }
+
+ body {
+ background-color: #0a0a0a;
+ color: #d0d0d0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
+ line-height: 1.6;
+ }
+
+ h1, h2, h3, h4 {
+ color: #ffffff;
+ }
+
+ .container {
+ max-width: 1400px;
+ margin: 0 auto;
+ padding: 40px;
+ }
+
+ .header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 40px;
+ padding-bottom: 20px;
+ border-bottom: 1px solid #2a2a2a;
+ }
+
+ .header h1 {
+ color: #ffffff;
+ font-size: 28px;
+ }
+
+ .status-badge {
+ background-color: #2ecc71;
+ color: #000;
+ padding: 6px 14px;
+ border-radius: 20px;
+ font-size: 12px;
+ font-weight: 600;
+ }
+
+ .metrics-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 20px;
+ margin-bottom: 40px;
+ }
+
+ .card {
+ background-color: #1a1a1a;
+ border: 1px solid #2a2a2a;
+ border-radius: 8px;
+ padding: 24px;
+ }
+
+ .card:hover {
+ border-color: #3a3a3a;
+ }
+
+ .card-label {
+ color: #888888;
+ font-size: 11px;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ margin-bottom: 12px;
+ font-weight: 600;
+ }
+
+ .card-value {
+ color: #ffffff;
+ font-size: 32px;
+ font-weight: 700;
+ margin-bottom: 4px;
+ }
+
+ .card-subtext {
+ color: #666666;
+ font-size: 12px;
+ }
+
+ .positive {
+ color: #2ecc71;
+ }
+
+ .negative {
+ color: #ff5555;
+ }
+
+ .section-title {
+ color: #ffffff;
+ font-size: 18px;
+ font-weight: 700;
+ margin: 40px 0 20px 0;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #2a2a2a;
+ }
+
+ .performance-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
+ gap: 16px;
+ margin-bottom: 40px;
+ }
+
+ .performance-card {
+ background-color: #1a1a1a;
+ border: 1px solid #2a2a2a;
+ border-radius: 8px;
+ padding: 20px;
+ text-align: center;
+ }
+
+ .performance-label {
+ color: #888888;
+ font-size: 11px;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ margin-bottom: 10px;
+ font-weight: 600;
+ }
+
+ .performance-value {
+ color: #2ecc71;
+ font-size: 28px;
+ font-weight: 700;
+ }
+
+ table {
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 40px;
+ }
+
+ th {
+ background-color: #151515;
+ color: #888888;
+ padding: 14px;
+ text-align: left;
+ font-size: 11px;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ border-bottom: 1px solid #2a2a2a;
+ }
+
+ td {
+ padding: 14px;
+ border-bottom: 1px solid #1f1f1f;
+ color: #d0d0d0;
+ font-size: 13px;
+ }
+
+ tr:hover {
+ background-color: #141414;
+ }
+
+ .empty-state {
+ text-align: center;
+ color: #666666;
+ padding: 40px;
+ font-style: italic;
+ font-size: 13px;
+ }
+
+ .last-update {
+ text-align: right;
+ color: #666666;
+ font-size: 11px;
+ margin-top: 20px;
+ padding-top: 20px;
+ border-top: 1px solid #2a2a2a;
+ }
+
@@ -518,26 +495,26 @@ html_content = """
}
function updateDashboard(data) {
- // Update key metrics - CHF PRIMARY, USD secondary
+ // Update key metrics - PRIMARY, USD secondary
const usdt = data.balance.USDT || 0;
const usdt_chf = usdt * 0.84;
- document.getElementById('usdt').textContent = `$${usdt.toFixed(2)} / CHF ${usdt_chf.toFixed(2)}`;
+ document.getElementById('usdt').textContent = `$${usdt.toFixed(2)}${usdt_chf.toFixed(2)}`;
const portfolio_usd = data.portfolio_value_usd || 0;
const portfolio_chf = data.portfolio_value_chf || (portfolio_usd * 0.84);
- document.getElementById('portfolio').textContent = `$${portfolio_usd.toFixed(2)} / CHF ${portfolio_chf.toFixed(2)}`;
+ document.getElementById('portfolio').textContent = `$${portfolio_usd.toFixed(2)}${portfolio_chf.toFixed(2)}`;
- // Update P&L with color - CHF primary
+ // Update P&L with color - primary
const dailyPnl = data.daily_pnl || 0;
const dailyPnl_chf = dailyPnl * 0.84;
const dailyPnlEl = document.getElementById('daily-pnl');
- dailyPnlEl.textContent = `$${dailyPnl >= 0 ? '+' : ''}${dailyPnl.toFixed(2)} / CHF ${dailyPnl_chf >= 0 ? '+' : ''}${dailyPnl_chf.toFixed(2)}`;
+ dailyPnlEl.textContent = `$${dailyPnl >= 0 ? '+' : ''}${dailyPnl.toFixed(2)}${dailyPnl_chf >= 0 ? '+' : ''}${dailyPnl_chf.toFixed(2)}`;
dailyPnlEl.className = 'card-value ' + (dailyPnl >= 0 ? 'positive' : 'negative');
const totalPnl = data.total_pnl || 0;
const totalPnl_chf = totalPnl * 0.84;
const totalPnlEl = document.getElementById('total-pnl');
- totalPnlEl.textContent = `$${totalPnl >= 0 ? '+' : ''}${totalPnl.toFixed(2)} / CHF ${totalPnl_chf >= 0 ? '+' : ''}${totalPnl_chf.toFixed(2)}`;
+ totalPnlEl.textContent = `$${totalPnl >= 0 ? '+' : ''}${totalPnl.toFixed(2)}${totalPnl_chf >= 0 ? '+' : ''}${totalPnl_chf.toFixed(2)}`;
totalPnlEl.className = 'card-value ' + (totalPnl >= 0 ? 'positive' : 'negative');
// Update performance