// MedBridge — design tokens. Single source of truth.
// Consumed by every component via the MB global.

const MB_PALETTES = {
  classic: {
    name: 'Classic',
    vertretung: { 700: '#0B5A55', 600: '#0F766E', 500: '#14938A', 100: '#D8EEEB', 50: '#EAF6F4' },
    ausbildung: { 700: '#8A3F07', 600: '#B45309', 500: '#D27319', 100: '#F6E4CB', 50: '#FBF1E2' },
  },
  cool: {
    name: 'Cool',
    vertretung: { 700: '#1C5E73', 600: '#247389', 500: '#3A8DA3', 100: '#D6E8EE', 50: '#E8F2F6' },
    ausbildung: { 700: '#7A4A19', 600: '#A0631F', 500: '#C18434', 100: '#F0E1CA', 50: '#F7ECD9' },
  },
  warm: {
    name: 'Warm',
    vertretung: { 700: '#15715A', 600: '#1B8E6E', 500: '#28A380', 100: '#D4EDE3', 50: '#E7F4ED' },
    ausbildung: { 700: '#8C3B16', 600: '#B5511E', 500: '#D17030', 100: '#F4E0CE', 50: '#FAEDDD' },
  },
  muted: {
    name: 'Muted',
    vertretung: { 700: '#2E6F66', 600: '#3F8F7B', 500: '#56A892', 100: '#DCE9E5', 50: '#ECF3F0' },
    ausbildung: { 700: '#7C5430', 600: '#A87332', 500: '#C29152', 100: '#EDDFCB', 50: '#F5ECDA' },
  },
};

const MB_DENSITIES = {
  compact:    { listGap: 8,  cardPad: 12, sectionGap: 16, rowH: 56 },
  comfortable:{ listGap: 12, cardPad: 16, sectionGap: 24, rowH: 64 },
  spacious:   { listGap: 16, cardPad: 20, sectionGap: 32, rowH: 72 },
};

const MB = {
  // Brand
  brand: { 800: '#142E5C', 700: '#1F4E8C', 600: '#2A66A8', 500: '#3D7FC2', 100: '#DCE7F4', 50: '#EEF3FA' },
  accent: { 700: '#0B7A82', 600: '#0E8E96', 500: '#14A6AE' },

  // Surface / Ink — slightly cool, neutral, calm
  surface: {
    canvas:    '#F4F6FA',  // app background
    canvas2:   '#EDF0F5',  // section background
    raised:    '#FFFFFF',  // cards
    sunken:    '#F8F9FC',  // inset / input bg
    overlay:   'rgba(15,27,45,0.45)',
  },
  ink: {
    primary:   '#0F1B2D',
    secondary: '#42526E',
    tertiary:  '#6B7A90',
    inverse:   '#FFFFFF',
    onColor:   '#FFFFFF',
  },
  line: {
    hair:   '#E5E9F0',  // subtle dividers
    border: '#D8DEE7',  // resting borders
    strong: '#A8B3C4',  // hover/focus borders
  },

  // Semantic
  success: { 700: '#1F7A4D', 600: '#26925E', 100: '#DAEFE3' },
  warning: { 700: '#9A6B0A', 600: '#B7811B', 100: '#F6E8C9' },
  danger:  { 700: '#9A2B2B', 600: '#BE3838', 100: '#F4D8D8' },
  info:    { 700: '#1F4E8C', 600: '#2A66A8', 100: '#DCE7F4' },
  sponsored: { fg: '#6B5A2E', bg: '#F2EDDF', border: '#E2D9BE' },

  // Specialty muted accents (one tone per specialty)
  specialty: {
    'Allgemeinmedizin': '#5B6F8A',
    'Innere Medizin':   '#7A5C8E',
    'Pädiatrie':        '#8E5C7C',
    'Gynäkologie':      '#A86373',
    'Chirurgie':        '#7B6648',
    'Anästhesie':       '#4E7388',
    'Radiologie':       '#5C7E8A',
    'Dermatologie':     '#8A7050',
    'HNO':              '#6B7C50',
    'Augenheilkunde':   '#558578',
    'Neurologie':       '#7A6E94',
    'Psychiatrie':      '#8A6F8C',
    'default':          '#6B7A90',
  },

  // Career stage icons + labels
  career: {
    'KPJ':           { label: 'KPJ-Studierende:r', short: 'KPJ' },
    'AssistAM':      { label: 'Assistenzarzt Allgemeinmedizin', short: 'Ass. AM' },
    'AssistSF':      { label: 'Assistenzarzt Sonderfach', short: 'Ass. SF' },
    'Niedergelassen':{ label: 'Niedergelassener Arzt', short: 'Niedergel.' },
    'Spitalsarzt':   { label: 'Spitalsarzt', short: 'Spital' },
  },

  // Shape
  radius: { sm: 6, md: 10, lg: 12, xl: 16, pill: 999 },
  shadow: {
    card:  '0 1px 2px rgba(15,27,45,0.04), 0 1px 4px rgba(15,27,45,0.04)',
    card2: '0 1px 2px rgba(15,27,45,0.05), 0 4px 16px rgba(15,27,45,0.06)',
    pop:   '0 8px 28px rgba(15,27,45,0.14), 0 1px 2px rgba(15,27,45,0.06)',
  },

  // Type — Source Sans 3
  font:   '"Source Sans 3", -apple-system, system-ui, sans-serif',
  type: {
    display: { size: 32, line: 1.15, weight: 600, tracking: -0.4 },
    h1:      { size: 26, line: 1.2,  weight: 600, tracking: -0.3 },
    h2:      { size: 20, line: 1.25, weight: 600, tracking: -0.2 },
    h3:      { size: 17, line: 1.3,  weight: 600, tracking: -0.1 },
    body:    { size: 16, line: 1.45, weight: 400, tracking:  0 },
    bodyB:   { size: 16, line: 1.45, weight: 600, tracking:  0 },
    label:   { size: 14, line: 1.35, weight: 600, tracking:  0 },
    caption: { size: 13, line: 1.35, weight: 400, tracking:  0 },
    micro:   { size: 11, line: 1.3,  weight: 600, tracking:  0.4 },
  },

  motion: { fast: 120, base: 180, slow: 240, ease: 'cubic-bezier(0.2,0.7,0.3,1)' },

  // Helper: build a derived type palette from a palette key
  fromPalette(paletteKey, densityKey) {
    const p = MB_PALETTES[paletteKey] || MB_PALETTES.classic;
    const d = MB_DENSITIES[densityKey] || MB_DENSITIES.spacious;
    return {
      ...this,
      vertretung: p.vertretung,
      ausbildung: p.ausbildung,
      paletteName: p.name,
      density: d,
    };
  },
};

Object.assign(window, { MB, MB_PALETTES, MB_DENSITIES });
