/* Shared chart inks only. Keep the surrounding product neutral.
   A series keeps its colour AND dash pattern in the plot, picker and legend. */
:root {
  --chart-blue:#386b91; --chart-teal:#2d7773; --chart-amber:#926426;
  --chart-purple:#79639b; --chart-rose:#a25669; --chart-olive:#6d7641;
  --chart-slate:#63758c; --chart-cyan:#36758a; --chart-brown:#886449;
  --chart-surface:#fff; --chart-grid:#e1e5e9; --chart-text:#39414c;
}
@media (prefers-color-scheme:dark) {
  :root {
    --chart-blue:#82a9cc; --chart-teal:#78b5ac; --chart-amber:#c5a36c;
    --chart-purple:#b09aca; --chart-rose:#cc91a0; --chart-olive:#a7b67b;
    --chart-slate:#9baabd; --chart-cyan:#7fb4c9; --chart-brown:#c5a087;
    --chart-surface:#17191b; --chart-grid:#343a42; --chart-text:#bdc4ce;
  }
}
[data-chart-series] {--series-color:var(--chart-slate);--series-dash:none;}
[data-chart-series="ema9"] {--series-color:var(--chart-teal);--series-dash:1 2;}
[data-chart-series="ema20"] {--series-color:var(--chart-blue);}
[data-chart-series="ema50"] {--series-color:var(--chart-amber);--series-dash:8 3;}
[data-chart-series="ema200"] {--series-color:var(--chart-purple);--series-dash:2 3 7 3;}
[data-chart-series="ma20"] {--series-color:var(--chart-olive);--series-dash:2 3;}
[data-chart-series="ma50"] {--series-color:var(--chart-rose);--series-dash:6 4;}
[data-chart-series="ma200"] {--series-color:var(--chart-slate);--series-dash:10 3;}
[data-chart-series="vwma"] {--series-color:var(--chart-cyan);--series-dash:3 2;}
[data-chart-series="vwap"] {--series-color:var(--chart-brown);--series-dash:10 3 2 3;}
[data-chart-series="bb"],[data-chart-series="bbUpper"],[data-chart-series="bbLower"] {--series-color:var(--chart-rose);--series-dash:3 4;}
[data-chart-series="kc"],[data-chart-series="kcUpper"],[data-chart-series="kcLower"] {--series-color:var(--chart-teal);--series-dash:8 4;}
[data-chart-series="dc"],[data-chart-series="dcUpper"],[data-chart-series="dcLower"] {--series-color:var(--chart-slate);--series-dash:1 3;}
[data-chart-series="fib"] {--series-color:var(--chart-amber);--series-dash:4 5;}
[data-chart-series="rsi"],[data-chart-series="adx"] {--series-color:var(--chart-purple);}
[data-chart-series="macd"],[data-chart-series="stoch"],[data-chart-series="stochK"],[data-chart-series="rvol"] {--series-color:var(--chart-blue);}
[data-chart-series="signal"],[data-chart-series="stochD"] {--series-color:var(--chart-amber);--series-dash:6 3;}
[data-chart-series="plusDI"] {--series-color:var(--chart-teal);--series-dash:6 3;}
[data-chart-series="minusDI"] {--series-color:var(--chart-rose);--series-dash:2 3;}
[data-chart-series="histogram"],[data-chart-series="obv"],[data-chart-series="cmf"] {--series-color:var(--chart-teal);}
[data-chart-series="histogramNegative"] {--series-color:var(--chart-rose);}
[data-chart-series="atr"] {--series-color:var(--chart-amber);}
[data-chart-series="roc"] {--series-color:var(--chart-cyan);}
[data-chart-series="bbw"] {--series-color:var(--chart-olive);}
[data-chart-series="entry"] {--series-color:var(--chart-blue);--series-dash:5 5;}
[data-chart-series="stop"] {--series-color:var(--chart-rose);--series-dash:2 3;}
[data-chart-series="target"],[data-chart-series="tp1"] {--series-color:var(--chart-teal);--series-dash:9 4;}
[data-chart-series="tp2"] {--series-color:var(--chart-olive);--series-dash:6 3;}
[data-chart-series="tp3"] {--series-color:var(--chart-purple);--series-dash:2 3 7 3;}
[data-chart-series="activation"] {--series-color:var(--chart-amber);--series-dash:2 3;}

/* Thin lines stay opaque: transparency made overlaid indicators hard to read. */
#priceForecast .forecast-indicator-line[data-chart-series],
#priceForecast .forecast-mini-line[data-chart-series] {
  stroke:var(--series-color);stroke-dasharray:var(--series-dash);stroke-width:1.8;opacity:1;fill:none;
}
#priceForecast :is(.indicator-bbUpper,.indicator-bbLower,.indicator-kcUpper,.indicator-kcLower,.indicator-dcUpper,.indicator-dcLower)[data-chart-series] {stroke-width:1.3;}
#priceForecast .forecast-fib line {stroke:var(--chart-amber);opacity:1;stroke-width:1;}
#priceForecast .forecast-fib.is-selected line {stroke-width:2;}
#priceForecast svg .forecast-fib-focus {fill:var(--chart-amber);}
#priceForecast #forecastFibValues button[aria-pressed=true] {border-color:var(--chart-amber);}
#priceForecast .forecast-volume {fill:var(--chart-slate);opacity:.8;}
#priceForecast .forecast-mini-bar[data-chart-series] {fill:var(--series-color);stroke:none;opacity:.85;}
#priceForecast .forecast-mini-bar.is-negative[data-chart-series] {fill:none;stroke:var(--chart-rose);stroke-width:1;opacity:1;}
#priceForecast .forecast-mini-line:not([data-chart-series]) {stroke:var(--chart-blue);}
#priceForecast .forecast-return-track i {background:var(--chart-teal);opacity:1;}
#priceForecast .forecast-return-track i.is-negative {background:var(--chart-rose);}
#priceForecast .forecast-structure-scale>span {background:var(--chart-blue);}
#priceForecast .forecast-reference-line {stroke:var(--chart-slate);}
#priceForecast .forecast-range {--range-color:var(--chart-blue);}
#priceForecast .forecast-range[data-horizon="24h"] {--range-color:var(--chart-teal);}
#priceForecast .forecast-range[data-horizon="7d"] {--range-color:var(--chart-amber);}
#priceForecast .forecast-range[data-horizon="30d"] {--range-color:var(--chart-purple);}
#priceForecast .forecast-range line {stroke:var(--range-color);stroke-width:2;}
#priceForecast .forecast-range rect {fill:var(--range-color);opacity:.14;}
#priceForecast .forecast-range circle {fill:var(--range-color);}

/* SVG swatches show the exact pattern, even in monochrome/colour-blind views. */
#priceForecast svg.chart-swatch {
  display:inline-block;width:26px;height:12px;min-width:26px;flex:0 0 26px;
  vertical-align:middle;overflow:visible;margin:0;fill:none;stroke:none;
}
#priceForecast svg.chart-swatch line {stroke:var(--series-color);stroke-dasharray:var(--series-dash);stroke-width:2;}
#priceForecast .forecast-active-studies>span,
#priceForecast .forecast-active-studies [data-open-fib],
#priceForecast .forecast-mini-legend>span {display:inline-flex;align-items:center;gap:6px;}
#priceForecast .forecast-active-studies>span {color:var(--fc-ink);font-size:11px;}
#priceForecast .forecast-mini-legend {display:flex;gap:7px 14px;flex-wrap:wrap;color:var(--fc-ink);font-size:11px;}
#priceForecast #forecastOverlayOptions label {gap:7px;}
#priceForecast #forecastOverlayOptions label small {font-size:9px;}

/* Opportunity chart levels: label, leader and line share the same ink.
   REF status, offscale arrows and TP numbers remain unchanged. */
.chart-canvas {background:var(--chart-surface);}
.chart-canvas .plan-line {stroke:var(--series-color);stroke-dasharray:var(--series-dash);stroke-width:1.5;}
.chart-canvas .plan-leader {stroke:var(--series-color);}
.chart-canvas .plan-tag {fill:var(--chart-surface);stroke:var(--series-color);stroke-width:1;}
.chart-canvas .plan-tag-text {fill:var(--series-color);}
.chart-canvas .plan-line.plan-reference {stroke-dasharray:4 3;}
#planLegend .plan-values>span {border-left:3px solid var(--series-color);padding-left:8px;}
.chart-canvas :is(.last-price-line,.stale-price-line) {stroke:var(--chart-slate);}
.chart-canvas .live-price-line {stroke:var(--chart-blue);}
.chart-canvas .chart-volume {fill:var(--chart-slate);opacity:.8;}
/* A constant blue equity line does not imply profit; ledger signs are retained. */
#paperTrading .paper-equity-chart svg polyline {stroke:var(--chart-blue);stroke-width:2;}
#paperTrading .paper-equity-chart svg circle {stroke:var(--chart-blue);fill:var(--pt-bg);}
#paperTrading .paper-equity-chart svg>line {stroke:var(--chart-slate);stroke-dasharray:4 4;}
#paperTrading .paper-equity-chart svg :is(polyline,line,circle) {vector-effect:non-scaling-stroke;}
#paperTrading .paper-equity-chart svg text {fill:var(--pt-muted);stroke:none;stroke-width:0;paint-order:normal;font-size:13px;}
@media(max-width:720px) {
  /* Equity uses a 900-unit viewBox; compensate labels for the smaller plot. */
  #paperTrading .paper-equity-chart svg text {font-size:28px;}
}
@media (prefers-color-scheme:dark) {
  .chart-canvas .chart-grid-line {stroke:var(--chart-grid);}
  .chart-canvas .chart-axis {fill:var(--chart-text);}
  .chart-canvas :is(.chart-wick,.chart-candle) {stroke:var(--chart-text);}
  .chart-canvas .candle-up {fill:var(--chart-surface);}
  .chart-canvas .candle-down {fill:var(--chart-text);}
}
@media (forced-colors:active) {
  [data-chart-series] {--series-color:CanvasText;}
  #priceForecast svg.chart-swatch {forced-color-adjust:auto;}
}
