/* The app's tokens, in one file.
 *
 * Values are the GridLights design system (~/products/gridlights-brand/
 * color/tokens.json is canonical); the mapping, and the tool-local families
 * that have no brand counterpart, are tabulated in
 * docs/design/rcp-render-catalog/tokens.md, which also carries the history of
 * how this file came to exist.
 *
 * Dark-first: depth is background difference, 2px radius, no borders. Every
 * name below says what the colour DOES. A name that says where it first
 * appeared lets a wrong call site type-check. */
:root {
  /* Surfaces — six grounds. Depth read as background difference needs a ladder
     whose rungs can be told apart; nine rungs inside twenty hex values could
     not, so `--input` folded into `--raised` and `--overlay` into `--elevated`. */
  --page: #0b0805;            /* the home ground — below grid-black, warmer */
  --base: #0f0e0d;            /* grid-black: the app ground, and the viewport */
  --sunken: #141312;          /* rails, footers, table heads — below the ground */
  --raised: #1e1c1a;          /* charcoal: panes, cards, inputs, controls at rest */
  --elevated: #252220;        /* ember: panels over the drawing, dropdowns */
  --hover: #2a2624;           /* a control under the pointer. Nothing else. */
  /* A selection wash is a STATE, not a rung on the ladder above. */
  --sel-action: #2f2723;
  --sel-teal: #20302f;
  /* Content — one ramp. --text is the only primary; the warmth the home page
     reads as was always --page underneath it, not a second white. */
  --text: #f6f4f0;            /* chalk */
  --text-rgb: 246, 244, 240;  /* the same chalk where a rule needs an alpha */
  --fog: #a89f98;             /* fog: secondary */
  --muted: #6b6560;           /* stone: muted */
  --faint: #3a3735;           /* ash: faint */
  /* Accent — two oranges, named for their jobs. They are close enough that a
     wrong pick reads as a rendering difference rather than a mistake, so the
     fence is in the name: a comment cannot be violated by a call site. */
  --action: #ff7a2f;          /* the thing you press, and the glow around it */
  --action-light: #ffb380;
  --ambient: #f98a1b;         /* light in a room: washes, links, the welcome hero */
  --ambient-hover: #fa9c33;
  --rule: #e87537;            /* the 2px accent bar — a divider, never a control */
  --teal: #15cfc4;
  --teal-light: #3ad6c9;
  /* status */
  --warning: #f5b720;         /* accent.amber */
  --danger: #e5321a;
  --success: #2cb14f;         /* glare band only */
  --caution: #ffc107;         /* glare band only */
  --issued: #3eb572;          /* tool-local: project card, issued */
  --rendering: #3a74e8;       /* tool-local: project card, rendering */
  /* lines, and the strokes that draw physical objects in the plan */
  --hairline: rgba(255, 255, 255, .06);
  --line: #3a332e;            /* tool-local: the home surface's 1px border */
  --line-hover: #5a4f47;      /* tool-local */
  --control-line: #4a433e;
  --furnish-dash: #5a534d;
  --wall: #efe6dc;
  --fixture: #f0b892;
  --dim: #e6e0d8;             /* tool-local: dimension shafts and arrowheads */
  /* THE SHEET — a second, LIGHT set, and the only one in this file that is not
     the app's. A schedule is a construction document and is drawn as one: white
     stock on the dark desk, because the tool is dark and the deliverable is
     not, and the difference is the point.
     They are prefixed rather than themed, because both sets are on screen at
     the same time — the sheet sits inside the dark chrome — so a media query or
     a `:root` swap could not tell them apart. */
  --sheet-stock: #ffffff;
  --sheet-stock-alt: #faf9f6;   /* the zebra row */
  --sheet-raised: #f7f6f3;      /* blocks, the sheet footer */
  --sheet-parchment: #edead5;   /* title strips, bar tracks */
  --sheet-ink: #0b0805;         /* line work and table headers */
  --sheet-ink-2: #2f2b25;       /* body */
  --sheet-ink-3: #4a463e;       /* secondary */
  --sheet-ink-4: #8a8578;       /* labels, muted */
  --sheet-rule: #e4e4e4;        /* row rules */
  /* The pen for a connection the document does NOT state — the broken line E-000
     tabulates and E-602's riser draws across its gap. Between rule and ink-4: it must
     read as a line somebody chose not to draw, not as a faint one. */
  --sheet-broken: #b9b3a4;
  --sheet-rule-parchment: #d8d3bb;
  /* Status, in the PRINT set. The screen colours above are too light to print,
     and a schedule is a thing that gets printed. */
  --sheet-pass: #2f7d46;
  --sheet-warn: #b45309;
  --sheet-fail: #b3261e;
  --sheet-info: #2b5cc4;
  /* type — the brand's three faces (ADR-0052): Space Grotesk titles, Inter body, Space Mono
     for numbers that MEAN something. Newsreader is the tool's, never a deliverable's. */
  --font-display: 'Newsreader', Georgia, serif;
  --font-heading: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif;
  --font-ui: 'Inter', ui-sans-serif, system-ui, sans-serif;
  --font-mono: 'Space Mono', ui-monospace, SFMono-Regular, monospace;
  /* Set by the Schedule page's fit script, read by the sheet on the desk. Declared here
     because it is a token apps/web asks for; its VALUE is owned by that script, and 1 is
     the true size a sheet prints at when nothing has measured the desk yet. */
  --sheet-zoom: 1;
  --font-sheet-display: var(--font-heading);
  /* radius */
  --r-sm: 2px;
  --r-md: 4px;
  --r-full: 9999px;
  /* motion */
  --dur-fast: 150ms;
  --dur-base: 200ms;
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
}
