/* ============================================================
   FRNTCOURT brand tokens — the single definition
   ============================================================
   Loaded FIRST by every page: marketing, app, admin, org, login,
   preview, and the server-rendered /team/:slug shell. Nothing else
   defines a brand colour.

   LIGHT. Paper white, one ink, one accent, hairline rules. There is
   no dark counterpart and no theme switch — a second palette is a
   second product to keep honest, and the last one drifted on four of
   the eleven names it shared with styles.css before it was merged
   away.

   Naming rule: these are *primitives*, plus the two scales every
   surface needs — the typeface and the radius. Both used to live in
   styles.css, which marketing never loads, so marketing hardcoded its
   own and the documented scale stopped describing the product. Spacing,
   z-index and the type-size scale are still styles.css's, because
   nothing outside the app consumes them. If that changes, they move
   here too rather than getting copied.

   Every value below is measured against the surface it actually
   lands on. The ratios in the comments are real; if you change a
   value, re-measure it — preview.html computes the whole table live.
   ============================================================ */
:root {
  /* ── Court Orange ─────────────────────────────────────────────
     The accent survives the flip unchanged. It is 3.21:1 on white,
     which is AA for large text and for non-text marks (rules,
     fills, underlines, icons) but NOT for body copy. Anything
     orange and small must use --accent-text. */
  --orange:         #F46027;
  --orange-hover:   #F78C5A;
  --orange-press:   #E04D18;
  --orange-deep:    #C23D10;
  --orange-light:   rgba(244,96,39,0.10);

  /* Orange you are allowed to read. 5.29:1 on white. */
  --accent-text:    #C23D10;

  /* Foreground for text/icons sitting ON brand orange. White on
     #F46027 is 3.21:1 and fails; Court Black is 5.92:1. This is the
     one rule the reference mock got wrong and we did not copy. */
  --on-orange:      #0E1018;

  /* ── Paper — surfaces ─────────────────────────────────────────
     Cards are white on white and separated by a hairline, not by a
     fill. --bg-warm / --elevated are the only greys, and they are
     for insets (progress troughs, thumbnails, disabled chips). */
  --bg:             #FFFFFF;
  --bg-light:       #FAFAFA;
  --bg-warm:        #F5F5F5;
  --card:           #FFFFFF;
  --surface:        #FFFFFF;
  --elevated:       #F5F5F5;
  --overlay:        #ECECEC;
  --input-bg:       #FFFFFF;

  /* ── Ink ─────────────────────────────────────────────────────
     #111111 is 18.9:1 on white — near-black, not black, so large
     display type does not vibrate. --muted is 4.94:1, the lowest
     value here that still passes AA for body copy. */
  --text:           #111111;
  --text-secondary: #45464A;
  --text-light:     #707072;
  --muted:          #707072;

  /* Decorative grey — 2.58:1. Dates, counters, watermark numerals.
     Never a label anyone has to read. */
  --text-faint:     #A1A1A3;

  /* ── Rules ───────────────────────────────────────────────────
     Solid greys, not alpha. On white an alpha border and a solid
     one look identical; on a grey inset the alpha one disappears. */
  --border:         #E2E2E2;
  --border-subtle:  #EDEDED;
  --border-strong:  #D0D0D2;
  --input-border:   #D4D4D6;

  /* ── Semantic — the saturated value, for marks ────────────────
     Each is dark enough to carry white text, because every one of
     them is used as a filled badge somewhere. The dark theme could
     use bright #22C55E for this; on paper that is 2.28:1. */
  --green:          #15803D;   /* 5.02:1 */
  --success:        #15803D;
  --gold:           #C9A94E;   /* brand gold — decorative only, 2.27:1 */
  --warning:        #A17C1A;   /* 3.88:1 — marks and icons */
  --error:          #DC2626;   /* 4.83:1 */
  --danger:         #DC2626;
  --info:           #2563EB;   /* 5.17:1 */

  /* ── Semantic text — the darkened pair ───────────────────────
     For text sitting on a 10% tint of its own hue. Same idea as the
     dark theme's lightened pair, mirrored. */
  --success-text:   #15803D;
  --error-text:     #B91C1C;
  --danger-text:    #B91C1C;
  --warning-text:   #7D6322;   /* 5.71:1 on white, 5.23:1 on --bg-warm */
  --info-text:      #1D4ED8;

  /* ── Semantic tint — the background the *-text values sit on ─ */
  --success-bg:     rgba(21,128,61,0.10);
  --error-bg:       rgba(220,38,38,0.10);
  --danger-bg:      rgba(220,38,38,0.10);
  --warning-bg:     rgba(161,124,26,0.12);
  --info-bg:        rgba(37,99,235,0.10);

  /* Modal scrim. Stays a dark wash on a light product — a scrim's job
     is to push the page back, and a light wash over light content
     pushes nothing. */
  --scrim:          rgba(17,17,17,0.45);

  /* ── Inverted band ───────────────────────────────────────────
     The one place the product goes dark: the record band, the
     closing CTA, the reel chrome. Scoped by .band--dark, never by a
     theme attribute. */
  --ink:            #111111;
  --ink-deep:       #0A0A0A;
  --on-ink:         #FFFFFF;
  --on-ink-muted:   #BDBDBD;   /* 8.6:1 on #111 */
  --ink-line:       #333336;

  /* Two steps up from ink, for the reel's title and end cards — the only
     surfaces that gradient. These replaced #141620 and #1C1F2E, which
     were the old Mid Penn navy (blue cast +12 and +18); they are the
     luminance-matched neutrals, so the frames read the same weight with
     none of the tint. Named because leaving them as literals is how the
     last palette drifted. */
  --ink-lift:       #161616;
  --ink-lift-2:     #202020;
  /* Dimmer than --on-ink-muted, for meta text on a video frame where the
     brighter grey competes with the footage. Replaced navy #8892A4. */
  --on-ink-dim:     #919191;

  /* ── Type ────────────────────────────────────────────────────
     One family, no webfont. The three-face stack (Barlow Condensed
     display / Space Grotesk labels / DM Sans body) is retired: three
     families meant every new component had to pick one, and they
     picked inconsistently. Weight, size and tracking carry the
     hierarchy now — 900 uppercase with negative tracking for display,
     700 uppercase with positive tracking for labels, 500 for body.

     The family lives here rather than in styles.css because marketing
     pages load tokens.css and never load styles.css. --font-display /
     --font-sans / --font-body are kept as aliases so the ~200 call
     sites that name a role still read correctly; they all resolve to
     the same face, and new code should just use --font. */
  /* ── Radius ──────────────────────────────────────────────────
     Here rather than in styles.css for the same reason as the font:
     marketing loads neither styles.css nor its scale, so it wrote its
     own 14px card corner and the documented scale quietly stopped
     describing the product. --radius-card is that 14px, named — it is
     the corner on every marketing card and on the reference mock's,
     and 2px from --radius-lg is a real difference at card size even
     though it looks like a rounding error in a list. */
  --radius-xs:     4px;     /* micro: badges, tiny chips */
  --radius-sm:     6px;     /* small: inputs, filter chips */
  --radius:       10px;     /* default: panels, insets */
  --radius-card:  14px;     /* cards, everywhere, both surfaces */
  --radius-lg:    16px;     /* large: sheets, bottom drawers */
  --radius-full:  9999px;   /* pill: buttons, tags, full-round badges */

  --font:           "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-display:   var(--font);
  --font-sans:      var(--font);
  --font-body:      var(--font);
  --font-mono:      'JetBrains Mono', 'Fira Code', 'Courier New', monospace;
}

/* --dark is deliberately NOT defined here.
   Marketing CSS uses it as the strong foreground; styles.css uses it
   as a background/gradient stop. Two opposite meanings under one name
   cannot be reconciled into a shared token, so each consumer keeps its
   own local alias and its own warning. Prefer --text or --bg in new
   code and let --dark die out. */
