diff --git a/dashboard_publisher.py b/dashboard_publisher.py index f31adec..4f9c239 100644 --- a/dashboard_publisher.py +++ b/dashboard_publisher.py @@ -82,7 +82,8 @@ SUMMARY_PHP_FILE = "news_summary.php" # Repo files copied into the out dir at daemon start (git pull + restart # updates them). The PHP endpoint reads news.json in place, so it lives # next to the page. -STATIC_FILES = [PAGE_FILE, "dashboard.css", "dashboard.js", SUMMARY_PHP_FILE] +STATIC_FILES = [PAGE_FILE, "dashboard.css", "dashboard.js", "gauge.js", + SUMMARY_PHP_FILE] # ══════════════════════════════════════════════════════════════════ diff --git a/static/dashboard.css b/static/dashboard.css index 81995be..d1694c6 100644 --- a/static/dashboard.css +++ b/static/dashboard.css @@ -8,12 +8,43 @@ :root { --xau-font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif; --xau-font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Consolas, Menlo, monospace; + --xau-gold: #f5b301; +} + +/* Forced dark theme (owner decision 2026-08-16): dark background, pure + * white text (no gray), vivid red/green for data accents. Loaded after + * Bootstrap so these overrides win. */ +[data-bs-theme="dark"] { + --bs-body-bg: #0a0e14; + --bs-secondary-bg: #111823; + --bs-tertiary-bg: #0e141d; + --bs-body-color: #ffffff; + --bs-emphasis-color: #ffffff; + --bs-heading-color: #ffffff; + --bs-secondary-color: rgba(255, 255, 255, 0.92); + --bs-tertiary-color: rgba(255, 255, 255, 0.8); + --bs-border-color: rgba(255, 255, 255, 0.14); + --bs-card-bg: #0e141d; + --bs-card-border-color: rgba(255, 255, 255, 0.12); + --bs-modal-bg: #0e141d; + --bs-success: #22c55e; + --bs-success-rgb: 34, 197, 94; + --bs-success-text-emphasis: #4ade80; + --bs-success-bg-subtle: rgba(34, 197, 94, 0.16); + --bs-success-border-subtle: rgba(34, 197, 94, 0.45); + --bs-danger: #ef4444; + --bs-danger-rgb: 239, 68, 68; + --bs-danger-text-emphasis: #f87171; + --bs-danger-bg-subtle: rgba(239, 68, 68, 0.16); + --bs-danger-border-subtle: rgba(239, 68, 68, 0.45); } html, body { font-family: var(--xau-font-sans); letter-spacing: -0.005em; -webkit-font-smoothing: antialiased; + background-color: var(--bs-body-bg); + color: var(--bs-body-color); } .num, .xau-price, .xau-symbol { @@ -25,12 +56,12 @@ html, body { font-size: 0.95rem; font-weight: 700; letter-spacing: 0.08em; - color: var(--bs-primary); + color: var(--xau-gold); } .xau-price { line-height: 1; - color: var(--bs-primary-text-emphasis); + color: #ffffff; } .live-dot { @@ -100,6 +131,14 @@ html, body { overflow: hidden; } +/* Chart.js gauge canvas host (see gauge.js) — thin bar in the row */ +.scorebar .gauge-container { + position: relative; + flex: 1; + min-width: 60px; + height: 22px; +} + .scorebar .track::after { content: ""; position: absolute; diff --git a/static/dashboard.html b/static/dashboard.html index 5ca29e1..94faeb3 100644 --- a/static/dashboard.html +++ b/static/dashboard.html @@ -4,7 +4,7 @@
| Entry | ${fmt$(ts.entry)} | -TP1 | ${fmt$(ts.take_profit_1)} |
| Stop | ${fmt$(ts.stop_loss)} | -TP2 | ${fmt$(ts.take_profit_2)} |
| Trail | ${esc(trail)} | ||
| Entry | ${fmt$(ts.entry)} | +TP1 | ${fmt$(ts.take_profit_1)} |
| Stop | ${fmt$(ts.stop_loss)} | +TP2 | ${fmt$(ts.take_profit_2)} |
| Trail | ${esc(trail)} | ||