/* ============================================================================
   ReconOne Suite — canonical brand layer.        DO NOT APP-CUSTOMISE THIS FILE.

   Every module in the suite (Purchasing/this app, POS, Storefront, Cloud) loads
   an identical copy of this file, then maps its OWN semantic tokens onto the
   --r1-* constants below. That is what keeps the suite looking like one product:
   the raw palette and the typefaces live in exactly one place, and an app never
   hard-codes a brand hex.

   To adopt it in another suite app:
     1. copy this file + the two woff2 files in fonts/ verbatim
     2. link it BEFORE the app's own stylesheet
     3. in that stylesheet, map app tokens to the constants, e.g.
          --accent: var(--r1-blue);  --amber: var(--r1-orange);
   Full spec, including which colour is allowed where: docs/RECONONE_DESIGN_SYSTEM.md

   THE RULE (2026-07, Marcus): blue is the primary colour; ORANGE IS THE WARNING
   TIER and nothing else — no orange buttons, no orange decoration. The single
   exception is the suite mark itself (--r1-mark), because a logo in a fixed
   corner is identity, not status.
   ========================================================================== */

/* ---- Typefaces: self-hosted. The shop floor must not depend on a Google CDN
   being reachable — a blocked font request used to mean a flash of fallback
   type on every page load. Latin subsets, variable weights. ---- */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("fonts/inter-var-latin.woff2") format("woff2");
}
@font-face {
  font-family: "Orbitron";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("fonts/orbitron-var-latin.woff2") format("woff2");
}

:root {
  /* ---- Primary: blue. Everything a user acts on. ----
     Two depths because a fill needs more contrast on white than on ink:
     -deep is for filled controls in light mode (5.1:1 with white text),
     -light is for text/icons sitting on a dark ground. */
  --r1-blue:        #2E7CF6;   /* the suite blue — fills on dark, borders, rules */
  --r1-blue-deep:   #2166E8;   /* filled controls in light mode (AA with white) */
  --r1-blue-light:  #6FADFF;   /* blue text/icons on ink */
  --r1-blue-ink:    #1D5FD0;   /* blue text on white (AA) */
  --r1-blue-soft:   rgba(46,124,246,.12);
  --r1-blue-soft-d: rgba(46,124,246,.18);   /* same tint, dark ground */

  /* ---- Warning: orange. Needs a human; nothing has failed yet.
     Low stock, stale/degraded feed, price moved, below free freight or order
     minimum, awaiting confirmation, held for quiet hours. Replaces amber. ---- */
  --r1-orange:      #FF6A00;   /* the suite orange — fills, rules, dots */
  --r1-orange-light:#FF8A3D;   /* orange text on ink */
  --r1-orange-ink:  #C25200;   /* orange text on white (AA, 4.7:1) */
  --r1-orange-soft: rgba(255,106,0,.12);

  /* ---- Good / Critical. Kept distinct from both accents so a status can never
     be misread as a control (or vice versa). ---- */
  --r1-green:       #1F9D5B;   /* light-mode depth */
  --r1-green-light: #37C97F;   /* dark-mode depth */
  --r1-green-soft:  rgba(31,157,91,.13);
  --r1-red:         #D64545;
  --r1-red-light:   #F2646A;
  --r1-red-soft:    rgba(214,69,69,.13);

  /* ---- Grounds ---- */
  --r1-ink:         #0D1117;   /* suite near-black: sidebars, mastheads */
  --r1-ink-2:       #161C24;   /* raised panel on ink */
  --r1-slate:       #2B313B;
  --r1-steel:       #6B7280;
  --r1-mist:        #F3F4F6;   /* suite light ground */

  /* ---- The mark. Logo only. Never a state, never themed. ---- */
  --r1-mark:        #FF6A00;

  /* ---- Type. Orbitron is a display face: wordmark, stat figures and small
     uppercase eyebrows ONLY. Body and UI text is Inter — Orbitron set at
     paragraph sizes is unreadable and is never correct here. ---- */
  --r1-font-ui:    "Inter", -apple-system, "Segoe UI", Roboto, system-ui, sans-serif;
  --r1-font-brand: "Orbitron", "Inter", -apple-system, "Segoe UI", Roboto, sans-serif;
}
