:root{
/* Base — ink scale (neutral, no hue) */
--qt-black:#0B0B0B;
--qt-ink-900:#141414;
--qt-ink-800:#262626;
--qt-ink-700:#3D3D3D;
--qt-ink-600:#575757;
--qt-ink-500:#737373;
--qt-ink-400:#9C9C9C;
--qt-ink-300:#C2C2C2;
--qt-ink-200:#DCDCDC;
--qt-ink-150:#E6E6E6;
--qt-ink-100:#EEEEEE;
--qt-ink-50:#F5F5F5;
--qt-white:#FFFFFF;
/* Pop — Signal Mint. The only saturated colour in normal use. Fills only; use signal-700 for text and thin marks on white. */
--qt-signal:#A6EDCC;
--qt-signal-600:#86E3B8;
--qt-signal-500:#4FCB93;
--qt-signal-700:#146B45;
--qt-signal-900:#0E2419;
--qt-signal-200:#CDF6E2;
--qt-signal-100:#EAFBF3;
/* Status — aqua family + ink only. Dots, ticks and chart marks, never large fills */
--qt-pass:#4FCB93;
--qt-hold:#9C9C9C;
--qt-fail:#146B45;
--qt-info:#141414;

/* Semantic — text */
--text-primary:var(--qt-ink-900);
--text-secondary:var(--qt-ink-500);
--text-tertiary:var(--qt-ink-400);
--text-ghost:var(--qt-ink-300);
--text-inverse:var(--qt-white);
--text-signal:var(--qt-signal-700);
--text-on-signal:var(--qt-signal-900);
/* Semantic — surfaces */
--surface-page:var(--qt-white);
--surface-sunken:var(--qt-ink-50);
--surface-panel:var(--qt-ink-100);
--surface-card:var(--qt-white);
--surface-inverse:var(--qt-black);
--surface-signal:var(--qt-signal);
/* Semantic — lines */
--line-hair:var(--qt-ink-200);
--line-soft:var(--qt-ink-150);
--line-strong:var(--qt-ink-900);
--line-grid:rgba(20,20,20,.06);
--line-inverse:rgba(255,255,255,.18);
/* Semantic — interaction */
--action-primary:var(--qt-black);
--action-primary-hover:var(--qt-ink-700);
--action-signal:var(--qt-signal);
--action-signal-hover:var(--qt-signal-600);
--focus-ring:var(--qt-signal-700);
}
