352 lines
7.0 KiB
CSS
352 lines
7.0 KiB
CSS
/* 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);
|
|
}
|
|
}
|