/* Gold Desk — XAU/USD dashboard styles * * Builds on Bootstrap 5.3 color modes (data-bs-theme). Only app-specific * tokens and components live here; layout, typography, tables, badges, * cards, alerts, modals, etc. come from Bootstrap. */ :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 { font-family: var(--xau-font-mono); font-variant-numeric: tabular-nums; } .xau-symbol { font-size: 0.95rem; font-weight: 700; letter-spacing: 0.08em; color: var(--xau-gold); } .xau-price { line-height: 1; color: #ffffff; } .live-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--bs-success); margin-right: 5px; animation: pulse 2.4s ease-in-out infinite; } .live-dot.closed { background: var(--bs-warning); animation: none; } @keyframes pulse { 50% { opacity: 0.35; } } /* signal-coloured accents */ .sig-buy { --xau-signal: var(--bs-success); } .sig-sell { --xau-signal: var(--bs-danger); } .sig-neutral { --xau-signal: var(--bs-secondary); } .border-signal { border-left: 3px solid var(--xau-signal, var(--bs-secondary)) !important; } .text-signal { color: var(--xau-signal, var(--bs-secondary)) !important; } .tf-name { font-family: var(--xau-font-mono); font-weight: 700; font-size: 1.1rem; color: var(--bs-primary); letter-spacing: 0.05em; } .tf-selector { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.5rem; margin-bottom: 0.75rem; } .tf-select { min-width: 0; padding: 0.7rem 0.8rem; border: 1px solid var(--bs-border-color); border-radius: var(--bs-border-radius); background: var(--bs-tertiary-bg); color: var(--bs-body-color); text-align: left; transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease; } .tf-select:hover { border-color: rgba(var(--bs-primary-rgb), 0.65); } .tf-select[aria-pressed="true"] { border-color: var(--xau-gold); background: rgba(245, 179, 1, 0.09); box-shadow: inset 0 0 0 1px rgba(245, 179, 1, 0.16); } .tf-select .tf-name { font-size: 1rem; } .workspace-card { overflow: hidden; } .workspace-signal { font-family: var(--xau-font-mono); font-size: clamp(1.55rem, 3vw, 2.35rem); font-weight: 700; letter-spacing: 0.03em; line-height: 1; } .workspace-meta { min-width: 0; } .workspace-reasons > div + div { margin-top: 0.35rem; } /* score bar: zero-centered diverging with midpoint tick */ .scorebar { display: flex; align-items: center; gap: 0.75rem; } .scorebar .gauge-container { position: relative; flex: 1; min-width: 60px; height: 10px; border-radius: 5px; background: var(--bs-secondary-bg); overflow: hidden; } .scorebar .gauge-container::after { content: ""; position: absolute; left: 50%; top: 0; bottom: 0; width: 2px; background: var(--bs-secondary); transform: translateX(-1px); } .scorebar .fill { position: absolute; top: 0; bottom: 0; border-radius: 4px; width: var(--score-width); transition: width 0.25s ease; } .scorebar .fill.pos { left: 50%; background: var(--bs-success); } .scorebar .fill.neg { right: 50%; background: var(--bs-danger); } .scorebar .val { width: 58px; text-align: right; font-size: 0.95rem; font-weight: 500; } .scorebar .lbl { font-size: 0.8rem; color: var(--bs-secondary); width: 44px; } /* rail chips in hero */ .rail-chip { border: 1px solid var(--bs-border-color); border-radius: var(--bs-border-radius); background: var(--bs-tertiary-bg); color: var(--bs-body-color); font-family: var(--xau-font-mono); font-size: 0.9rem; line-height: 1.3; padding: 0.3rem 0.5rem; } .rail-chip:hover, .rail-chip[aria-current="true"] { border-color: var(--xau-gold); } .rail-chip:focus-visible, .tf-select:focus-visible, .wire-item:focus-visible, .cal-event:focus-visible { outline: 2px solid var(--xau-gold); outline-offset: 2px; } /* detail dialog sections */ .d-stat .k { display: block; font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--bs-secondary); font-weight: 600; } .d-stat .v { font-size: 1.15rem; font-weight: 600; } .d-table { font-size: 0.9rem; } .detail-table { overflow-x: auto; } .d-table .ind-k { font-family: var(--xau-font-mono); font-weight: 600; white-space: nowrap; } .wbar { display: block; height: 4px; border-radius: 2px; background: var(--bs-secondary-bg); margin-top: 3px; } .wbar > i { display: block; height: 100%; border-radius: 2px; background: var(--bs-primary); } /* news */ .wire-item { display: flex; width: 100%; border: 0; border-radius: var(--bs-border-radius); background: transparent; color: inherit; cursor: pointer; font: inherit; text-align: start; } .wire-item:hover { background: rgba(var(--bs-primary-rgb), 0.08); } .cal-event { display: block; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; text-align: inherit; } .cal-event:hover { color: var(--bs-primary); text-decoration: underline; } .wire-score { font-family: var(--xau-font-mono); font-size: 0.85rem; font-weight: 700; padding: 2px 7px; border-radius: 5px; white-space: nowrap; } /* calendar highlight for next upcoming event */ .cal-next-up td:first-child { box-shadow: inset 4px 0 0 var(--bs-primary); padding-left: 0.75rem !important; } /* reduced motion */ @media (prefers-reduced-motion: reduce) { .live-dot { animation: none; } .scorebar .fill { transition: none; } * { transition: none !important; } } @media (max-width: 575.98px) { .tf-selector { grid-template-columns: repeat(2, minmax(0, 1fr)); } .workspace-card .card-body { padding: 1rem; } .rail-chip { flex: 1 1 calc(50% - 0.5rem); } }