/*
 * Tevtronix brand tokens — the single source of truth.
 *
 * Every colour and typeface the company puts on a screen is defined here once:
 * the storefront, and the dashboard that ships on the controller. Both read
 * these; neither redefines them. Changing a value here changes it everywhere,
 * which is the point — the two used to carry their own copies of the same
 * hexes, and a copy that nothing regenerates is a copy that goes stale.
 *
 * These are raw values, deliberately named for what they ARE rather than what
 * they are used for. Each consumer maps them onto its own role names, because
 * the roles genuinely differ: the storefront has one interactive accent, the
 * dashboard additionally needs a distinct edit-mode colour. Naming these
 * `--tv-cyan` rather than `--tv-accent` keeps that mapping honest.
 *
 * Consumed by:
 *   website/src/app/globals.css          (via a generated copy — see
 *                                         website/scripts/build-firmware.mjs)
 *   builds/leptos/src/style.css          (the device dashboard)
 *
 * The identity comes from the CARGB product label: a pure black panel,
 * squared white display type, and a full-spectrum sweep used as an underline
 * and border accent. The spectrum is a brand moment, not a UI colour — it
 * marks the wordmark, section rules and hero edges, and never becomes the
 * colour of a button.
 */
:root {
	/* ── Surfaces, darkest to lightest ──────────────────────────────────── */
	--tv-void: #000000;
	--tv-base: #06070a;
	--tv-surface: #0d0f14;
	--tv-raised: #15181f;
	--tv-line: #262a33;
	--tv-line-bright: #3a404d;

	/* ── Type ───────────────────────────────────────────────────────────── */
	--tv-ink: #f4f6f8;
	--tv-ink-dim: #a8b0bb;
	--tv-ink-faint: #6b7480;

	/* ── Cyan, from the label sweep ─────────────────────────────────────── */
	--tv-cyan: #2ee6f6;
	--tv-cyan-bright: #6df2ff;
	--tv-cyan-deep: #0f7d88;

	/* ── Status ─────────────────────────────────────────────────────────── */
	--tv-positive: #3ddc84;
	--tv-caution: #f5a524;
	--tv-negative: #ff5c5c;

	/* ── Spectrum stops ─────────────────────────────────────────────────────
	   The label sweep, in order. Also mirrored in
	   website/src/lib/brand/spectrum.ts, which needs them as data rather
	   than as CSS. */
	--tv-spectrum-red: #ff2d2d;
	--tv-spectrum-orange: #ff8a00;
	--tv-spectrum-yellow: #f2e600;
	--tv-spectrum-green: #2bff4d;
	--tv-spectrum-cyan: #00e5ff;
	--tv-spectrum-blue: #2b6bff;
	--tv-spectrum-violet: #a832ff;

	/* ── The three letters of the name ──────────────────────────────────────
	   CARGB is written with its R, G and B in red, green and blue, on the
	   label and everywhere the name is set as a name. These are those three
	   colours, sampled off the printed label artwork rather than picked to
	   look like it.

	   NOT the spectrum stops above. Those are a sweep, chosen to sit next to
	   each other along a gradient; these are three letters of a word and
	   have to read as pure red, green and blue on their own.

	   The blue is the label's lifted 13% toward white, and that is the only
	   departure. Measured against the page background: red 4.74:1, green
	   9.34:1, the label's own blue 3.65:1 -- fine for the letter as it is
	   printed, six times the height of body type and carrying a highlight
	   down its face, and under the 4.5:1 that the same letter needs at 16px
	   in a sentence. 13% is the least that clears it; the letter is still
	   the blue on the case. */
	--tv-name-red: #f6050c;
	--tv-name-green: #03cd05;
	--tv-name-blue: #216efc;

	/* ── Typefaces ──────────────────────────────────────────────────────────
	   Two roles, held apart on purpose. The company name is always set in
	   the brand face; the product name is always set in the display face.
	   Mixing them is how a wordmark stops being recognisable. */
	--tv-font-brand: "Michroma", "Eurostile", "Bank Gothic", "Square721 BT", sans-serif;
	--tv-font-display: "Oxanium", ui-sans-serif, system-ui, sans-serif;
	--tv-font-body: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
	--tv-font-mono: "SF Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo, monospace;
}
