{
  "schemaVersion": "1.0",
  "id": "highscore-jolt",
  "version": "1.1.0",
  "name": "Highscore Jolt",
  "tier": "free",
  "summary": "Bold gaming UI: one electric teal action color on cool green-grey neutrals, large tight-tracked Atkinson display type and flat, legible surfaces.",
  "tags": {
    "industries": [
      "gaming",
      "esports",
      "consumer-tech"
    ],
    "moods": [
      "bold",
      "energetic",
      "disciplined",
      "confident"
    ],
    "density": "comfortable",
    "contrast": "standard"
  },
  "rationale": {
    "overview": "Highscore Jolt is for gaming platforms, esports hubs and launchers where players need a clear next action fast. A single teal (brand, hue ~190) carries all interactive emphasis. Display type at 40–56px sets the voice. Neutrals, status colors and surfaces stay restrained so the UI does not compete with game art or live video.",
    "color": "All scales share one chroma curve: low chroma at 50–100, a peak at 400–500, and a steady taper to 950. Neutrals are tinted green-grey at hue ~170 at every step, so no step drifts toward warm or pure grey. In light mode, primary is brand-600 #0a7a8c: white labels reach 5.0:1, and primary on background reaches 4.7:1. In dark mode, primary is brand-400 #34c4d9 with brand-950 labels at 8.0:1. Danger is a magenta-crimson at hue ~350, far from teal in both modes, so destructive actions never read as brand. Success is shifted cooler to an emerald at hue ~155 to sit beside teal. Warning stays amber for unambiguous caution. Foreground/background pairs are about 6.6:1 or higher, and muted-foreground is at least 6.6:1 on both background and muted in both modes.",
    "typography": "Atkinson Hyperlegible covers display and UI text. Its distinct letterforms keep usernames, scores and controller labels unambiguous. The scale steps 12 / 14 / 16 / 18 / 20, then rises on a 1.4 ratio: 20 → 28 → 40 → 56. Tracking tightens as size grows: -0.025em at 56px, -0.02em at 40px, -0.015em at 28px. Body sizes stay at 0 tracking with 1.5–1.6 line height. Atkinson ships only weights 400 and 700, and the system uses only those two. JetBrains Mono (400/500) is reserved for match IDs, build numbers, key bindings and code.",
    "layout": "Comfortable density on a 4px grid. Buttons and inputs are 44px tall for touch and controller focus. Content columns cap at 1280px. Leaderboard rows are 48px with right-aligned tabular numbers.",
    "elevation": "Surfaces are flat and separated by 1px border and tonal shifts. In dark mode, background is neutral-950 and card is neutral-900, so cards read as lifted without shadow. Cards use only shadow.sm. Menus, popovers and dialogs use shadow.md and shadow.lg to mark temporary layers.",
    "shapes": "Buttons and inputs use radius.md (8px). Cards use radius.lg (12px). Badges use radius.full. Primary buttons are never pill-shaped, which keeps the engineered edge."
  },
  "primitives": {
    "color": {
      "brand": {
        "50": "#ebfbfd",
        "100": "#cff3f8",
        "200": "#a3e7f1",
        "300": "#6bd8e8",
        "400": "#34c4d9",
        "500": "#12a3b9",
        "600": "#0a7a8c",
        "700": "#08616f",
        "800": "#074d59",
        "900": "#05363f",
        "950": "#032228"
      },
      "neutral": {
        "50": "#f4f8f7",
        "100": "#e6eeec",
        "200": "#d0dbd8",
        "300": "#b2c2be",
        "400": "#8ea09c",
        "500": "#6d7f7b",
        "600": "#556662",
        "700": "#43524e",
        "800": "#2b3835",
        "900": "#1b2623",
        "950": "#0e1715"
      },
      "success": {
        "50": "#eafbf3",
        "100": "#cff5e3",
        "200": "#a3e9c9",
        "300": "#6dd6a8",
        "400": "#36bf86",
        "500": "#1aa26c",
        "600": "#128557",
        "700": "#0f6a46",
        "800": "#0c5338",
        "900": "#083c29",
        "950": "#042418"
      },
      "warning": {
        "50": "#fff9e8",
        "100": "#fff0c7",
        "200": "#fbd98a",
        "300": "#f0bf55",
        "400": "#d9a33a",
        "500": "#bd8415",
        "600": "#9c6a06",
        "700": "#7d5204",
        "800": "#5f3d02",
        "900": "#432a00",
        "950": "#2a1a00"
      },
      "danger": {
        "50": "#fff3f5",
        "100": "#ffe3e8",
        "200": "#ffc4cf",
        "300": "#ff9bb0",
        "400": "#f2658a",
        "500": "#dc3a6a",
        "600": "#c42552",
        "700": "#a31a42",
        "800": "#7f1333",
        "900": "#5c0c25",
        "950": "#3a0617"
      }
    },
    "font": {
      "display": {
        "family": "Atkinson Hyperlegible",
        "fallback": "system-ui, sans-serif",
        "source": "google",
        "weights": [
          400,
          700
        ]
      },
      "sans": {
        "family": "Atkinson Hyperlegible",
        "fallback": "system-ui, sans-serif",
        "source": "google",
        "weights": [
          400,
          700
        ]
      },
      "mono": {
        "family": "JetBrains Mono",
        "fallback": "ui-monospace, monospace",
        "source": "google",
        "weights": [
          400,
          500
        ]
      }
    },
    "radius": {
      "none": 0,
      "sm": 4,
      "md": 8,
      "lg": 12,
      "xl": 20,
      "full": 9999
    },
    "space": {
      "0": 0,
      "1": 4,
      "2": 8,
      "3": 12,
      "4": 16,
      "5": 20,
      "6": 24,
      "8": 32,
      "10": 40,
      "12": 48,
      "16": 64,
      "20": 80,
      "24": 96,
      "0.5": 2,
      "1.5": 6
    },
    "shadow": {
      "sm": "0 1px 2px rgba(14, 23, 21, 0.08)",
      "md": "0 6px 16px -4px rgba(14, 23, 21, 0.16)",
      "lg": "0 20px 44px -10px rgba(14, 23, 21, 0.28)"
    }
  },
  "typography": {
    "display-lg": {
      "font": "display",
      "size": 56,
      "lineHeight": 1.04,
      "weight": 700,
      "letterSpacing": -0.025
    },
    "display-md": {
      "font": "display",
      "size": 40,
      "lineHeight": 1.1,
      "weight": 700,
      "letterSpacing": -0.02
    },
    "heading-lg": {
      "font": "display",
      "size": 28,
      "lineHeight": 1.2,
      "weight": 700,
      "letterSpacing": -0.015
    },
    "heading-md": {
      "font": "sans",
      "size": 20,
      "lineHeight": 1.3,
      "weight": 700,
      "letterSpacing": -0.01
    },
    "heading-sm": {
      "font": "sans",
      "size": 16,
      "lineHeight": 1.4,
      "weight": 700,
      "letterSpacing": 0
    },
    "body-lg": {
      "font": "sans",
      "size": 18,
      "lineHeight": 1.6,
      "weight": 400,
      "letterSpacing": 0
    },
    "body-md": {
      "font": "sans",
      "size": 16,
      "lineHeight": 1.6,
      "weight": 400,
      "letterSpacing": 0
    },
    "body-sm": {
      "font": "sans",
      "size": 14,
      "lineHeight": 1.5,
      "weight": 400,
      "letterSpacing": 0
    },
    "label": {
      "font": "sans",
      "size": 14,
      "lineHeight": 1.25,
      "weight": 700,
      "letterSpacing": 0.01
    },
    "caption": {
      "font": "sans",
      "size": 12,
      "lineHeight": 1.4,
      "weight": 700,
      "letterSpacing": 0.02
    },
    "code": {
      "font": "mono",
      "size": 14,
      "lineHeight": 1.5,
      "weight": 400,
      "letterSpacing": 0
    }
  },
  "semantic": {
    "light": {
      "background": "{color.neutral.50}",
      "foreground": "{color.neutral.950}",
      "card": "#ffffff",
      "card-foreground": "{color.neutral.950}",
      "popover": "#ffffff",
      "popover-foreground": "{color.neutral.950}",
      "primary": "{color.brand.600}",
      "primary-foreground": "#ffffff",
      "secondary": "{color.neutral.100}",
      "secondary-foreground": "{color.neutral.900}",
      "muted": "{color.neutral.100}",
      "muted-foreground": "{color.neutral.700}",
      "accent": "{color.brand.100}",
      "accent-foreground": "{color.brand.900}",
      "destructive": "{color.danger.600}",
      "destructive-foreground": "#ffffff",
      "success": "{color.success.700}",
      "success-foreground": "#ffffff",
      "warning": "{color.warning.200}",
      "warning-foreground": "{color.warning.900}",
      "border": "{color.neutral.200}",
      "input": "{color.neutral.300}",
      "ring": "{color.brand.600}"
    },
    "dark": {
      "background": "{color.neutral.950}",
      "foreground": "{color.neutral.50}",
      "card": "{color.neutral.900}",
      "card-foreground": "{color.neutral.50}",
      "popover": "{color.neutral.900}",
      "popover-foreground": "{color.neutral.50}",
      "primary": "{color.brand.400}",
      "primary-foreground": "{color.brand.950}",
      "secondary": "{color.neutral.800}",
      "secondary-foreground": "{color.neutral.100}",
      "muted": "{color.neutral.800}",
      "muted-foreground": "{color.neutral.300}",
      "accent": "{color.brand.900}",
      "accent-foreground": "{color.brand.100}",
      "destructive": "{color.danger.400}",
      "destructive-foreground": "{color.danger.950}",
      "success": "{color.success.400}",
      "success-foreground": "{color.success.950}",
      "warning": "{color.warning.400}",
      "warning-foreground": "{color.warning.950}",
      "border": "{color.neutral.800}",
      "input": "{color.neutral.700}",
      "ring": "{color.brand.400}"
    }
  },
  "components": {
    "button": {
      "height": 44,
      "paddingX": "{space.5}",
      "radius": "{radius.md}",
      "typography": "{typography.label}",
      "fontWeight": 700
    },
    "input": {
      "height": 44,
      "paddingX": "{space.3}",
      "radius": "{radius.md}",
      "typography": "{typography.body-md}",
      "borderWidth": 1
    },
    "card": {
      "padding": "{space.6}",
      "radius": "{radius.lg}",
      "shadow": "{shadow.sm}",
      "borderWidth": 1
    },
    "badge": {
      "height": 24,
      "paddingX": "{space.2}",
      "radius": "{radius.full}",
      "typography": "{typography.caption}"
    }
  },
  "guidance": {
    "do": [
      "Use one primary button (brand-600 light, brand-400 dark) per view; render other actions as secondary or ghost buttons at the same 44px height.",
      "Set page and hero headlines in display-lg (56px, -0.025em) or display-md (40px, -0.02em), weight 700, and keep them to two lines or fewer.",
      "Use only weights 400 and 700 for Atkinson Hyperlegible; reserve 500 for JetBrains Mono key bindings.",
      "Pair every success, warning and destructive badge or alert with an icon or text label so status never depends on color alone.",
      "Set scores, ranks and timers with font-feature-settings 'tnum', right-aligned, in 48px leaderboard rows.",
      "Show a 2px ring-token outline with 2px offset on :focus-visible for every button, input, tab and leaderboard row."
    ],
    "dont": [
      "Don't use primary or accent teal for errors, destructive confirmations or negative stat deltas; use destructive (danger-600 light, danger-400 dark).",
      "Don't set display-lg, display-md or heading-lg in all caps or with positive letterSpacing.",
      "Don't place body-md paragraphs longer than two lines on the accent surface; limit accent to selected rows, active tabs and highlights.",
      "Don't introduce #000000 or untinted greys; take every surface, border and text color from the neutral ramp.",
      "Don't apply shadow.md or shadow.lg to cards; cards get a 1px border plus shadow.sm, and larger shadows are for menus, popovers and dialogs.",
      "Don't set body text or headings in JetBrains Mono; limit it to the code style for IDs, build numbers and key bindings."
    ]
  }
}
