/**
 * Arsha Hub Console — the single source of truth for every value in the bundle.
 *
 * Most of what follows is inherited from hub/lp/marina-vista.html rather than
 * chosen here: the palette, the zero radius, the focus treatment and nearly the
 * whole type scale already exist on a page that works. Inheriting them is what
 * keeps the console visibly related to the campaign pages it reports on.
 *
 * What is new is named as new in docs/superpowers/specs/2026-08-08-hub-console-design.md
 * §4.2, and every new colour is measured by scripts/check-design.mjs — not
 * approved by eye.
 *
 * Light theme only. Dark is a known, deliberate debt (spec K-2); it is not
 * half-written here.
 */

:root {
  /* ---- Inherited from lp/marina-vista.html ---- */
  --ink:      #101a18;
  --graphite: #59635f;
  --rule:     #c6ccc8;
  --mark:     #1f35c4;
  --sand:     #b9a88c;
  --ground:   #e3e7e4;

  /* ---- Surfaces: three levels, because a console needs to separate page from
     card from overlay. Pure white only at the top layer — the reference page
     deliberately avoids it, and that restraint is what keeps the palette warm. */
  --surface-0: #eceeeb;
  --surface-1: #f6f7f5;
  --surface-2: #ffffff;

  /* ---- Job status. Three inherited, three new. Maps 1:1 to hub.jobs.status
     (five values, skipped included) plus the /status degraded flag. Never used
     alone — every status also carries a shape and a label (see
     components/status-pill.html).

     --status-skipped has to read as resolved but empty: not an alarm (it
     never trips /status degraded), not a success (it shares no hue with
     --status-done), and — because it sits beside --status-queued in a table
     more often than any other pair — not a shade of --graphite either. A
     muted violet is the nearest hue with no other claimant: blue is already
     --status-claimed, green is --status-done, red and amber are failed and
     degraded.

     Measured on --surface-0 by scripts/check-design.mjs:
       --status-done      5.39:1
       --status-failed    6.51:1
       --status-degraded  5.07:1
     Measured by hand (check-design.mjs's TEXT_TOKENS list lives in
     hub/scripts/, outside this bundle, so it cannot be extended from here):
       --status-skipped   6.80:1                          */
  --status-queued:    var(--graphite);
  --status-claimed:   var(--mark);
  --status-done:      #2f6b4f;
  --status-failed:    #9b2c17;
  --status-degraded:  #8a5a12;
  --status-skipped:   #524b7a;

  /* ---- Categorical series, for charts only. NEVER used as text: a value or a
     label wears an ink token and the coloured mark beside it carries identity.

     Two slots, and that is not a placeholder. Green, red and amber are spoken
     for by the status palette, so a categorical hue has to come from the cool
     family — and on this surface the cool family yields exactly two well-
     separated steps. Every third candidate either drops below the chroma floor
     (reads grey) or collapses under deuteranopia. Validated with the dataviz
     validator under --pairs all: lightness band, chroma floor, CVD separation
     (ΔE 13.4 protan), normal-vision floor (ΔE 25.4) and 3:1 contrast all pass.

     This matches what exists: LeadSource names ten values but only
     landing_form and website_form are produced today. A third live source means
     re-running the validator before a third colour is added — not picking one
     that looks nice next to these. */
  --series-1: #3b5bdb;
  --series-2: #c23d8a;

  /* ---- Type. The sans stack is new: serif at 13px in a dense table does not
     read. The serif survives for exactly one use per screen — the console's own
     wordmark — so the family resemblance stays visible. */
  --sans:  system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono:  ui-monospace, "SF Mono", "Cascadia Mono", "Segoe UI Mono", Menlo, Consolas, monospace;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;

  /* Sizes collected from the reference page, not invented. --t-stat is the
     single addition, for the figures in the statistics strip. */
  --t-micro: 0.6875rem;
  --t-small: 0.75rem;
  --t-body:  0.8125rem;
  --t-ui:    0.875rem;
  --t-lead:  1rem;
  --t-title: 1.5rem;
  --t-stat:  2rem;

  /* ---- Spacing. Genuinely new: the reference page uses free values
     (0.35 / 0.4 / 0.9 / 1.25 / 1.75rem). A console needs a grid. */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;

  /* ---- Inherited behaviour ---- */
  --focus-width:  2px;
  --focus-offset: 2px;
  --transition:   0.15s ease;
}

/* The reference page guards every animation this way. Carried over so the
   console cannot regress on it. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
