:root{
  /* --- Base ink: the market as you see it --- */
  --black-abyss:#04060b;
  --black-deep:#05080f;
  --blue-950:#060c1c;
  --blue-900:#0a1736;
  --blue-800:#0f2050;
  --blue-700:#163a8f;
  --blue-600:#1e56c8;
  --blue-500:#2f7bff;
  --blue-400:#5c9aff;

  /* --- Accent: the single light. What crossing reveals. --- */
  --cyan-600:#1d6a85;
  --cyan-500:#2aa8cf;
  --cyan-400:#4fd8ff;
  --cyan-300:#8bf0ff;
  --cyan-100:#e6fbff;

  /* --- Neutrals --- */
  --white:#ffffff;
  --steel-100:#d7dfec;
  --steel-300:#a6b3c9;
  --steel-500:#6b7a92;
  --steel-700:#3a4557;
  --steel-900:#1c232f;
  --amber-400:#ffb24a;

  /* --- Backgrounds & surfaces --- */
  --bg-base:var(--black-abyss);
  --bg-sunken:#020408;
  --surface-1:#080d18;
  --surface-2:#0c1424;
  --surface-3:#121c30;
  --surface-accent:rgba(47,123,255,.10);
  --surface-glass:rgba(8,13,24,.72);

  /* --- Depth gradients --- */
  --depth-night:linear-gradient(180deg,#04060b 0%,#070e20 55%,#0a1736 100%);
  --depth-beam:linear-gradient(90deg,rgba(47,123,255,0) 0%,rgba(79,216,255,.55) 50%,rgba(47,123,255,0) 100%);
  --depth-halo:radial-gradient(60% 60% at 50% 50%,rgba(47,123,255,.35) 0%,rgba(10,23,54,.55) 45%,rgba(4,6,11,0) 100%);
  --depth-veil:linear-gradient(180deg,rgba(4,6,11,0) 0%,rgba(4,6,11,.85) 70%,var(--black-abyss) 100%);

  /* --- Text roles --- */
  --text-primary:var(--white);
  --text-secondary:var(--steel-300);
  --text-muted:var(--steel-500);
  --text-accent:var(--cyan-400);
  --text-on-accent:#04121a;
  --text-inverse:var(--black-abyss);

  /* --- Borders --- */
  --border-hairline:rgba(255,255,255,.07);
  --border-subtle:rgba(255,255,255,.12);
  --border-strong:rgba(255,255,255,.22);
  --border-accent:rgba(79,216,255,.38);
  --border-inference:rgba(166,179,201,.40);

  /* --- Pipeline states --- */
  --state-candidate:var(--blue-400);      /* still in the funnel */
  --state-kept:var(--cyan-400);           /* retenu */
  --state-dropped:var(--steel-700);       /* écarté — fades, never red */
  --state-intersection:var(--cyan-100);   /* the ignition colour */
  --state-warning:var(--amber-400);

  /* --- Trust: sourced fact vs AI inference (decided at token level) --- */
  --fact-ink:var(--cyan-400);
  --fact-border:var(--border-accent);
  --fact-surface:rgba(79,216,255,.08);
  --inference-ink:var(--steel-300);
  --inference-border:var(--border-inference);
  --inference-surface:rgba(166,179,201,.06);
  --inference-dash:4 3;
}
