/**
 * Shared design tokens for SVG card rendering.
 * Mirror of the values in web/src/app/globals.css so social-card output
 * matches the in-app brand exactly.
 */

const COLORS = Object.freeze({
  bg0:   '#06060B',
  bg1:   '#0E0E16',
  bg2:   '#15151F',
  bg3:   '#1A1A26',
  text0: '#E8E8F0',
  text1: '#7A7A8E',
  text2: '#4A4A5E',
  border: '#1E1E2E',
  borderHi: '#2A2A3E',
  acc0:  '#0F3D2E',
  acc1:  '#1A5A42',
  gradeAplus: '#00FFB8',
  gradeA:     '#00D4A0',
  gradeB:     '#4A9EFF',
  gradeC:     '#FFB347',
  gradeD:     '#FF5252',
  crimson:    '#8B0000',
  nba:  '#E94B3C',
  mlb:  '#1E90FF',
  wnba: '#F7944A',
  nfl:  '#013369',
  nhl:  '#A0A0B0',
  tennis: '#C5B358',
  mma:  '#D4AF37',
  boxing: '#8B0000',
  golf: '#2E7D32',
});

const FONTS = Object.freeze({
  mono: "'IBM Plex Mono','JetBrains Mono','SF Mono',ui-monospace,monospace",
  sans: "'Instrument Sans','Helvetica Neue',-apple-system,sans-serif",
});

const SPORT_LABEL_COLOR = Object.freeze({
  nba:    COLORS.nba,
  wnba:   COLORS.wnba,
  mlb:    COLORS.mlb,
  nfl:    COLORS.nfl,
  nhl:    COLORS.nhl,
  tennis: COLORS.tennis,
  mma:    COLORS.mma,
  boxing: COLORS.boxing,
  golf:   COLORS.golf,
});

function gradeColor(grade) {
  if (!grade) return COLORS.text1;
  const head = String(grade).trim().toUpperCase();
  if (head.startsWith('A+')) return COLORS.gradeAplus;
  if (head.startsWith('A'))  return COLORS.gradeA;
  if (head.startsWith('B'))  return COLORS.gradeB;
  if (head.startsWith('C'))  return COLORS.gradeC;
  if (head.startsWith('D') || head.startsWith('F')) return COLORS.gradeD;
  return COLORS.text1;
}

module.exports = { COLORS, FONTS, SPORT_LABEL_COLOR, gradeColor };
