{
  "schemaVersion": "1.0",
  "id": "sideline-broadsheet",
  "version": "1.1.0",
  "name": "Sideline Broadsheet",
  "tier": "free",
  "summary": "Magazine-style sports UI: IBM Plex Serif headlines, one cerise accent and cool green-grey ink-on-paper neutrals in spacious layouts.",
  "tags": {
    "industries": [
      "sports",
      "media",
      "publishing"
    ],
    "moods": [
      "editorial",
      "confident",
      "crisp",
      "calm"
    ],
    "density": "spacious",
    "contrast": "standard"
  },
  "rationale": {
    "overview": "Sideline Broadsheet is for sports products that read like a long-form magazine: match reports, athlete profiles, season recaps and editorial scoreboards. Hierarchy comes from type size, white space and a single cerise accent, not from neon or italics. Each view has one serif headline, one filled primary action and at least space.16 (64px) between sections.",
    "color": "Cerise (brand, HSL hue ~325) is the only chromatic voice. It marks the primary button, inline links, focus rings and the accent surface. Neutrals carry a deliberate cool green tint (hue ~165, low chroma) through all 11 steps, so paper (neutral.50 #f5f8f7) and ink (neutral.950 #131a19) belong to the same family and cerise reads as its complement. Destructive is vermilion (danger.600 light, danger.400 dark). It sits about 40° of hue away from cerise, so errors never read as brand. Success is a cool emerald that matches the green-tinted neutrals. Warning is amber, used only as a pale fill (warning.200) with dark text (warning.900) in light mode. Light-mode contrast: primary-foreground on primary is 5.9:1, primary on background 5.5:1, muted-foreground (neutral.700) on muted 6.5:1 and on background 7.1:1, and ring (brand.500) on background 3.9:1. Dark-mode contrast: primary-foreground (brand.950) on brand.400 is 6.1:1, muted-foreground (neutral.300) on muted (neutral.800) 6.1:1, destructive-foreground on danger.400 6.0:1, and success-foreground on success.400 6.7:1.",
    "typography": "The display tiers follow a perfect fourth (1.333): display-lg 64, display-md 48, heading-lg 36 and heading-md 27. Text sizes are body-lg 20, heading-sm 18, body-md 16, body-sm and label 14, and caption 12. IBM Plex Serif sets display-lg, display-md and heading-lg at 600–700. Tracking tightens as size grows: -0.025em at 64px, -0.02em at 48px and -0.015em at 36px. IBM Plex Sans handles all functional text, including heading-md and heading-sm, navigation, tables, forms, buttons and body copy. Body line heights are 1.6 for body-lg and body-md and 1.5 for body-sm. IBM Plex Mono (code, 14px) is for scores, timestamps, split times and stat columns, where figures must align. All weights used (400, 500, 600, 700) ship in the Plex families on Google Fonts.",
    "layout": "Spacious density on a 4px grid. Section gaps use space.16–space.24 (64–96px). Reading columns cap at 680px and page containers at 1240px. Buttons and inputs are 44px tall, which meets touch-target size and keeps a calm vertical rhythm.",
    "elevation": "Mostly flat, like a printed page. Cards use a 1px border (neutral.200 light, neutral.800 dark) plus shadow-sm. Shadow-md is for menus and popovers, and shadow-lg is for dialogs only. In dark mode, cards lift by surface step instead of shadow: background is neutral.950 and card and popover are neutral.900.",
    "shapes": "Small radii read as precise and printed: radius.md (4px) for buttons and inputs, radius.lg (6px) for cards, and radius.xl (10px) for dialogs. Radius.full is reserved for badges such as LIVE, FINAL and POSTPONED."
  },
  "primitives": {
    "color": {
      "brand": {
        "50": "#fff1f8",
        "100": "#ffe0f0",
        "200": "#ffc2e1",
        "300": "#fb97cb",
        "400": "#ee66b0",
        "500": "#d93c92",
        "600": "#b92477",
        "700": "#951a5f",
        "800": "#72114a",
        "900": "#520837",
        "950": "#330122"
      },
      "neutral": {
        "50": "#f5f8f7",
        "100": "#eaefee",
        "200": "#d8dfdd",
        "300": "#bdc7c4",
        "400": "#9ba8a5",
        "500": "#7b8a87",
        "600": "#5f6e6b",
        "700": "#4a5755",
        "800": "#364140",
        "900": "#232c2b",
        "950": "#131a19"
      },
      "success": {
        "50": "#e8fbf0",
        "100": "#cdf5df",
        "200": "#9fe6bf",
        "300": "#6dd1a0",
        "400": "#3fb67f",
        "500": "#1f9a64",
        "600": "#12804f",
        "700": "#0b663f",
        "800": "#064e30",
        "900": "#033721",
        "950": "#012113"
      },
      "warning": {
        "50": "#fff8e5",
        "100": "#ffeeb8",
        "200": "#fbdc7f",
        "300": "#eec24a",
        "400": "#d9a51b",
        "500": "#b98600",
        "600": "#976b00",
        "700": "#765300",
        "800": "#593e00",
        "900": "#3d2a00",
        "950": "#261a00"
      },
      "danger": {
        "50": "#fff3f0",
        "100": "#ffe2db",
        "200": "#ffc3b5",
        "300": "#ff9780",
        "400": "#f46a4d",
        "500": "#dc4426",
        "600": "#bb3015",
        "700": "#961f0a",
        "800": "#721403",
        "900": "#510b00",
        "950": "#330500"
      }
    },
    "font": {
      "display": {
        "family": "IBM Plex Serif",
        "fallback": "Georgia, serif",
        "source": "google",
        "weights": [
          500,
          600,
          700
        ]
      },
      "sans": {
        "family": "IBM Plex Sans",
        "fallback": "system-ui, sans-serif",
        "source": "google",
        "weights": [
          400,
          500,
          600
        ]
      },
      "mono": {
        "family": "IBM Plex Mono",
        "fallback": "ui-monospace, monospace",
        "source": "google",
        "weights": [
          400,
          500
        ]
      }
    },
    "radius": {
      "none": 0,
      "sm": 2,
      "md": 4,
      "lg": 6,
      "xl": 10,
      "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(19, 26, 25, 0.06)",
      "md": "0 6px 16px -4px rgba(19, 26, 25, 0.14)",
      "lg": "0 20px 48px -12px rgba(19, 26, 25, 0.24)"
    }
  },
  "typography": {
    "display-lg": {
      "font": "display",
      "size": 64,
      "lineHeight": 1.04,
      "weight": 700,
      "letterSpacing": -0.025
    },
    "display-md": {
      "font": "display",
      "size": 48,
      "lineHeight": 1.08,
      "weight": 700,
      "letterSpacing": -0.02
    },
    "heading-lg": {
      "font": "display",
      "size": 36,
      "lineHeight": 1.15,
      "weight": 600,
      "letterSpacing": -0.015
    },
    "heading-md": {
      "font": "sans",
      "size": 27,
      "lineHeight": 1.25,
      "weight": 600,
      "letterSpacing": -0.008
    },
    "heading-sm": {
      "font": "sans",
      "size": 18,
      "lineHeight": 1.4,
      "weight": 600,
      "letterSpacing": 0
    },
    "body-lg": {
      "font": "sans",
      "size": 20,
      "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": 500,
      "letterSpacing": 0.01
    },
    "caption": {
      "font": "sans",
      "size": 12,
      "lineHeight": 1.4,
      "weight": 500,
      "letterSpacing": 0.03
    },
    "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.500}"
    },
    "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": 600
    },
    "input": {
      "height": 44,
      "paddingX": "{space.4}",
      "radius": "{radius.md}",
      "typography": "{typography.body-md}",
      "borderWidth": 1
    },
    "card": {
      "padding": "{space.8}",
      "radius": "{radius.lg}",
      "shadow": "{shadow.sm}",
      "borderWidth": 1
    },
    "badge": {
      "height": 24,
      "paddingX": "{space.2}",
      "radius": "{radius.full}",
      "typography": "{typography.caption}"
    }
  },
  "guidance": {
    "do": [
      "Set headlines, pull quotes and scoreboard titles in IBM Plex Serif using display-lg (64px), display-md (48px) or heading-lg (36px). Use IBM Plex Sans for every button, input, label and table.",
      "Give each view one filled primary button (brand.600 light, brand.400 dark) and style inline links with the primary token. Render all other actions as secondary or ghost buttons.",
      "Set scores, times and stat tables in typography.code (IBM Plex Mono, 14px) and right-align numeric columns.",
      "Cap article text at 680px wide using body-lg (20px, line-height 1.6), and keep at least space.16 (64px) between page sections.",
      "Separate cards with a 1px border token and shadow-sm. Use shadow-md for menus and popovers and shadow-lg only for dialogs.",
      "Pair every status color (success, warning, destructive) with an icon or a text label such as LIVE, FINAL or POSTPONED, set in caption on a radius.full badge.",
      "Show focus as a 2px ring token outline with a 2px offset on buttons, inputs and links, in both modes.",
      "In dark mode, use neutral.950 for the page, neutral.900 for cards and popovers, and neutral.800 for borders, so surfaces lift without shadows."
    ],
    "dont": [
      "Don't use cerise for errors, losses or negative deltas. Use the destructive (vermilion) token, which is deliberately a different hue.",
      "Don't set IBM Plex Serif below heading-lg (36px), in all caps, or in buttons, labels and table cells.",
      "Don't use pure black (#000000) or warm greys. Keep every surface, border and text color on the green-grey neutral ramp.",
      "Don't round buttons or inputs beyond radius.md, or cards beyond radius.lg. Reserve radius.full for badges.",
      "Don't place more than one cerise filled element in a single card or hero.",
      "Don't use the accent surface (brand.100 light, brand.900 dark) for passages longer than two lines. Keep it for highlights, selected table rows and pull-quote backgrounds.",
      "Don't use warning.400 as a text color on light backgrounds. In light mode, warning is a warning.200 fill with warning.900 text.",
      "Don't use less than space.8 (32px) between stacked content blocks."
    ]
  }
}
