/**
 * Orchard design tokens — React Native / Expo
 * Source: orchard-tokens.json (do not hand-edit; regenerate).
 * Numeric where RN expects numbers (space, radius, fontSize). Colors are hex strings.
 */

export const color = {
  green: {
    "50": "#F5FCF5",
    "100": "#E8F7E7",
    "200": "#CFEECB",
    "300": "#AEE3A8",
    "400": "#86D57C",
    "500": "#5EC751",
    "600": "#4FAA45",
    "700": "#3F8D38",
    "800": "#2F6E2B",
    "900": "#20531F",
    "950": "#153E16",
  },
  orange: {
    "50": "#FFF8F4",
    "100": "#FEEFE5",
    "200": "#FDDDC7",
    "300": "#FCC6A2",
    "400": "#FAAA74",
    "500": "#F98D45",
    "600": "#D7783A",
    "700": "#B5642F",
    "800": "#924E23",
    "900": "#723B19",
    "950": "#592C11",
  },
  slate: {
    "0": "#FFFFFF",
    "50": "#F5F7F9",
    "100": "#EAEEF2",
    "200": "#D7DEE5",
    "300": "#B7C2CD",
    "400": "#8A97A5",
    "500": "#5F6D7C",
    "600": "#44515F",
    "700": "#2E3A47",
    "800": "#1B2836",
    "900": "#0E1C2B",
    "950": "#081119",
  },
  success: {
    "50": "#F3FAF5",
    "100": "#E4F3E8",
    "200": "#C5E4CE",
    "300": "#9ED2AC",
    "400": "#6EBC83",
    "500": "#3DA65A",
    "600": "#34904E",
    "700": "#2B7942",
    "800": "#216235",
    "900": "#184D29",
    "950": "#123D20",
  },
  warning: {
    "50": "#FEFBF4",
    "100": "#FDF5E4",
    "200": "#FCE9C6",
    "300": "#FADBA0",
    "400": "#F7C970",
    "500": "#F4B740",
    "600": "#D39E35",
    "700": "#B2852B",
    "800": "#8F6A20",
    "900": "#705216",
    "950": "#58400E",
  },
  danger: {
    "50": "#FDF4F4",
    "100": "#FBE5E6",
    "200": "#F7C8CA",
    "300": "#F2A4A6",
    "400": "#EC767A",
    "500": "#E5484D",
    "600": "#C63D42",
    "700": "#A73236",
    "800": "#87272A",
    "900": "#6A1D20",
    "950": "#541517",
  },
  info: {
    "50": "#F3F6FE",
    "100": "#E2EBFC",
    "200": "#C1D4F9",
    "300": "#97B7F5",
    "400": "#6393F0",
    "500": "#2F6FEB",
    "600": "#2860CD",
    "700": "#2252AF",
    "800": "#1B4290",
    "900": "#143573",
    "950": "#102A5E",
  },
} as const;

export const brand = {
  deep: "#0E1C2B",
  green: "#5EC751",
  orange: "#F98D45",
  grey: "#F5F5F5",
} as const;

export const space = {
  "0": 0,
  "1": 4,
  "2": 8,
  "3": 12,
  "4": 16,
  "5": 20,
  "6": 24,
  "8": 32,
  "10": 40,
  "12": 48,
  "16": 64,
} as const;

export const radius = {
  none: 0,
  sm: 8,
  md: 12,
  lg: 16,
  xl: 22,
  pill: 999,
} as const;

export const fontFamily = {
  // Load these via expo-font; keys match the loaded family names.
  display: "Fraunces_600SemiBold",
  displayRegular: "Fraunces_400Regular",
  ui: "InstrumentSans_400Regular",
  uiMedium: "InstrumentSans_500Medium",
  uiSemibold: "InstrumentSans_600SemiBold",
  uiBold: "InstrumentSans_700Bold",
} as const;

export const fontSize = {
  xs: 12,
  sm: 13,
  base: 14,
  md: 16,
  lg: 18,
  xl: 22,
  "2xl": 26,
  "3xl": 34,
  "4xl": 44,
  "5xl": 52,
} as const;

export const lineHeight = {
  tight: "1.02",
  snug: "1.12",
  normal: "1.5",
  relaxed: "1.6",
} as const;

export const shadow = {
  sm: {
    shadowColor: "#0E1C2B",
    shadowOpacity: 0.06,
    shadowRadius: 3,
    shadowOffset: {
      width: 0,
      height: 1,
    },
    elevation: 1,
  },
  md: {
    shadowColor: "#0E1C2B",
    shadowOpacity: 0.1,
    shadowRadius: 12,
    shadowOffset: {
      width: 0,
      height: 4,
    },
    elevation: 4,
  },
  lg: {
    shadowColor: "#0E1C2B",
    shadowOpacity: 0.14,
    shadowRadius: 28,
    shadowOffset: {
      width: 0,
      height: 16,
    },
    elevation: 12,
  },
} as const;

export const motion = {
  duration: {
    fast: "120ms",
    base: "180ms",
    slow: "280ms",
  },
  easing: {
    standard: "cubic-bezier(.2,.7,.2,1)",
    emphasized: "cubic-bezier(.2,.8,.2,1)",
  },
} as const;

// Money & rates must render with tabular figures:
export const tabularNums = { fontVariant: ["tabular-nums"] as const };

export const semantic = {
  light: {
    "text.primary": "#0E1C2B",
    "text.secondary": "#44515F",
    "text.muted": "#5F6D7C",
    "text.faint": "#8A97A5",
    "text.inverse": "#FFFFFF",
    "text.brand": "#3F8D38",
    "text.link": "#3F8D38",
    "bg.canvas": "#FBFCFD",
    "bg.surface": "#FFFFFF",
    "bg.subtle": "#F5F7F9",
    "bg.muted": "#EAEEF2",
    "bg.inverse": "#0E1C2B",
    "border.default": "#EAEEF2",
    "border.strong": "#D7DEE5",
    "border.focus": "#5EC751",
    "action.primary.bg": "#5EC751",
    "action.primary.bgHover": "#54B849",
    "action.primary.fg": "#0E1C2B",
    "action.secondary.bg": "#0E1C2B",
    "action.secondary.bgHover": "#17293A",
    "action.secondary.fg": "#FFFFFF",
    "action.ghost.fg": "#0E1C2B",
    "action.ghost.border": "#D7DEE5",
    "accent.bg": "#F98D45",
    "accent.fg": "#0E1C2B",
    "accent.subtle": "#FEEFE5",
    "accent.subtleFg": "#924E23",
    "status.success.fg": "#2B7942",
    "status.success.bg": "#E4F3E8",
    "status.success.solid": "#3DA65A",
    "status.warning.fg": "#8F6A20",
    "status.warning.bg": "#FDF5E4",
    "status.warning.solid": "#F4B740",
    "status.danger.fg": "#A73236",
    "status.danger.bg": "#FBE5E6",
    "status.danger.solid": "#C63D42",
    "status.info.fg": "#1B4290",
    "status.info.bg": "#E2EBFC",
    "status.info.solid": "#2F6FEB",
    "focus.ring": "rgba(94,199,81,.35)",
  },
  dark: {
    "text.primary": "#F5F7F9",
    "text.secondary": "#B7C2CD",
    "text.muted": "#8A97A5",
    "text.faint": "#5F6D7C",
    "text.inverse": "#0E1C2B",
    "text.brand": "#86D57C",
    "text.link": "#86D57C",
    "bg.canvas": "#081119",
    "bg.surface": "#0E1C2B",
    "bg.subtle": "#1B2836",
    "bg.muted": "#2E3A47",
    "bg.inverse": "#FFFFFF",
    "border.default": "rgba(255,255,255,.08)",
    "border.strong": "rgba(255,255,255,.16)",
    "border.focus": "#5EC751",
    "action.primary.bg": "#5EC751",
    "action.primary.bgHover": "#86D57C",
    "action.primary.fg": "#0E1C2B",
    "action.secondary.bg": "#FFFFFF",
    "action.secondary.bgHover": "#EAEEF2",
    "action.secondary.fg": "#0E1C2B",
    "action.ghost.fg": "#F5F7F9",
    "action.ghost.border": "rgba(255,255,255,.18)",
    "accent.bg": "#F98D45",
    "accent.fg": "#0E1C2B",
    "accent.subtle": "rgba(249,141,69,.16)",
    "accent.subtleFg": "#FCC6A2",
    "status.success.fg": "#9ED2AC",
    "status.success.bg": "rgba(61,166,90,.16)",
    "status.success.solid": "#3DA65A",
    "status.warning.fg": "#FADBA0",
    "status.warning.bg": "rgba(244,183,64,.16)",
    "status.warning.solid": "#F4B740",
    "status.danger.fg": "#F2A4A6",
    "status.danger.bg": "rgba(229,72,77,.16)",
    "status.danger.solid": "#E5484D",
    "status.info.fg": "#97B7F5",
    "status.info.bg": "rgba(47,111,235,.16)",
    "status.info.solid": "#2F6FEB",
    "focus.ring": "rgba(94,199,81,.45)",
  },
} as const;

export type ThemeMode = keyof typeof semantic;
export const tokens = { color, brand, space, radius, fontFamily, fontSize, lineHeight, shadow, motion, semantic };
export default tokens;
