/* =========================================================================
 * SpiderX type system — the single source of truth for BOTH the app and the
 * marketing pages. styles/app.css @imports this file; landing.html and
 * signin.html link it directly. Either route gets the whole system.
 *
 * ONE FACE, EVERYWHERE. Marketing and app used to disagree: marketing set its
 * headlines in Instrument Serif while the app had no serif at all, and both
 * used JetBrains Mono for numbers and micro-labels — three faces, so the two
 * halves of the product read as two products. The three role tokens survive
 * (hundreds of rules reference them, and the roles are still meaningful
 * SEMANTICALLY) but they now all resolve to the same family:
 *   --sans   Body / UI      Calibre, then Figtree
 *   --mono   Numbers/labels → --sans, with `font-variant-numeric: tabular-nums`
 *            at each call site so ladders and P&L columns still align
 *   --serif  Display accent → --sans
 * Do NOT point --mono or --serif back at a second family: that is exactly the
 * split this collapse removed. If a future pass wants a display face back,
 * change it HERE and nowhere else.
 *
 * On Calibre and Figtree: Calibre is the licensed platform face and stays
 * first, but it is a self-hosted TRIAL cut (see calibre.css) and is gitignored
 * — on any checkout without those files, and on any machine that never
 * received them, the stack falls through to Figtree. Figtree is therefore the
 * real rendered face in most environments, not a theoretical fallback: it is
 * loaded from Google Fonts, and it is picked because its geometric grotesque
 * proportions sit close enough to Calibre that the layouts do not reflow.
 * System fonts stay at the end for the offline case.
 *
 * @import must precede every other statement in a CSS file, which is why the
 * font sources are pulled here rather than at each consumer.
 * ========================================================================= */
/* calibre.css withheld by packages/site/build.mjs — the Klim cuts are trial-licensed and must not be served publicly. Falls through to Figtree. */
@import url('https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300..900;1,300..900&display=swap');

:root {
	--sans: 'Calibre', 'Figtree', system-ui, -apple-system, 'Segoe UI', sans-serif;
	/* Both alias --sans. A custom property may not reference itself, but these
	 * are distinct properties, so the indirection is legal and keeps every
	 * existing `var(--mono)` / `var(--serif)` call site working unchanged. */
	--mono: var(--sans);
	--serif: var(--sans);
}

/* --mono no longer buys monospaced digits, so buy the alignment directly.
 * `tnum` gives every digit the same advance width, which is the only property
 * of the old mono face that ladders, price columns and P&L tables depended on.
 * Applied at the call sites too (see styles/app.css); this utility class is
 * for markup that wants it without a bespoke rule. */
.tabular, .tnum { font-variant-numeric: tabular-nums; }
