/* The default token pack a site serves (renderer-frontend §1).
 *
 * This is the file `GET /theme.css` returns. `src/tokens.css` holds the same
 * vocabulary compiled into the bundle, so a failed request leaves the app usable
 * rather than unstyled: an unthemed site is a bug, an unusable one is worse.
 * A test asserts the two vocabularies are identical; this one wins because it
 * loads after the bundle in the cascade.
 *
 * The neutrals are warm on purpose. A humanitarian register is read for hours in
 * bad light on cheap panels, and a cool grey ramp on those screens goes blue and
 * clinical; the warm ramp holds its character. Values are taken from the v1
 * mockups (`docs/mockups/v1/`), which are the look reference for this pack.
 */
:root {
  /* Structure, in three steps. `surface` is white and carries the chrome and the
     cards alike; `surface-sunken` is the canvas those cards sit on, which is what
     makes them read as raised without a shadow doing the work; `bg` is the faint
     tint used for bands *inside* a surface — a table's header row, a hovered
     row — one step off white rather than a fourth colour. */
  --af-bg: #faf9f7;
  --af-surface: #ffffff;
  --af-surface-raised: #ffffff;
  --af-surface-sunken: #f4f4f2;
  --af-border: #e2e2df;
  --af-border-subtle: #eeeeea;
  --af-text: #17181a;
  --af-text-muted: #6c6f73;
  --af-primary: #c8102e;
  --af-primary-fg: #ffffff;
  --af-primary-hover: #96001f;
  --af-accent: #7a5cff;
  --af-focus: #c8102e;

  /* Pills are read at eleven pixels on a white card: the text is desaturated so
     it does not vibrate, and the hairline is what stops the fill dissolving. */
  --af-neutral: #6c6f73;
  --af-neutral-subtle: #f4f3f0;
  --af-neutral-border: #e2e2df;
  --af-info: #2a5f8f;
  --af-info-subtle: #eef4fa;
  --af-info-border: #d3e2f0;
  --af-success: #3c6a52;
  --af-success-subtle: #f2faf5;
  --af-success-border: #d8ebe0;
  --af-warning: #a86a12;
  --af-warning-subtle: #fdf6e7;
  --af-warning-border: #f0e2c2;
  --af-danger: #a8202f;
  --af-danger-subtle: #fdeef0;
  --af-danger-border: #f6d3d8;

  --af-chart-1: #1d6fb8;
  --af-chart-2: #16794a;
  --af-chart-3: #a86a12;
  --af-chart-4: #7a5cff;
  --af-chart-5: #0f7c8c;
  --af-chart-6: #a13b8a;
  --af-chart-7: #6c6f73;
  --af-chart-8: #b3261e;

  --af-font-sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;
  --af-font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace;
  --af-text-xs: 0.75rem;
  --af-text-sm: 0.875rem;
  --af-text-base: 1rem;
  --af-text-lg: 1.125rem;
  --af-text-xl: 1.375rem;
  --af-text-2xl: 1.75rem;
  --af-leading: 1.5;
  --af-tracking-tight: -0.02em;

  --af-space: 0.25rem;
  --af-control-h: 2.1875rem;
  --af-row-h: 2.25rem;

  --af-radius-sm: 0.25rem;
  --af-radius-md: 0.375rem;
  --af-radius-lg: 0.5625rem;
  /* Almost nothing. The card is defined by its border; a register read for hours
     wants quiet edges, and the mockups carry no card shadow at all. */
  --af-shadow-sm: 0 1px 2px rgb(23 24 26 / 0.04);
  --af-shadow-md: 0 4px 16px rgb(23 24 26 / 0.08);

  --af-logo-url: none;
  --af-header-bg: #ffffff;
  --af-header-fg: #17181a;
}
