---
version: alpha
name: WPEC
description: "Light interface measured from cbs12.com: Open Sans type, dark red accents, tonal surfaces and 100px corners."
colors:
  background: "#EDEDED"
  surface: "#EDEDED"
  on-surface: "#121212"
  on-background: "#121212"
  on-surface-strong: "#000000"
  on-surface-variant: "#222222"
  surface-container-low: "#FFFFFF"
  overlay: "#00000066"
  overlay-strong: "#00000040"
  primary: "#BE0000"
  on-primary: "#FFFFFF"
  secondary: "#3AB44B"
  tertiary: "#0766FF"
typography:
  headline-display:
    fontFamily: Open Sans
    fontSize: 33px
    fontWeight: 400
  headline-lg:
    fontFamily: Open Sans
    fontSize: 20px
    fontWeight: 800
    lineHeight: 1
  body-md:
    fontFamily: Open Sans
    fontSize: 14px
    fontWeight: 400
    lineHeight: 1.6
  body-lg:
    fontFamily: Open Sans
    fontSize: 16px
    fontWeight: 400
    lineHeight: 1.5
  body-sm:
    fontFamily: Open Sans
    fontSize: 11px
    fontWeight: 400
  caption:
    fontFamily: Open Sans
    fontSize: 10px
    fontWeight: 400
  label-lg:
    fontFamily: Open Sans
    fontSize: 15px
    fontWeight: 700
    lineHeight: 1.33
  label-md:
    fontFamily: Open Sans
    fontSize: 13px
    fontWeight: 700
    lineHeight: 1.54
  label-sm:
    fontFamily: Open Sans
    fontSize: 12px
    fontWeight: 700
    lineHeight: 1.5
rounded:
  sm: 30px
  md: 100px
  lg: 200px
spacing:
  xs: 2px
  sm: 5px
  md: 15px
  lg: 18px
  gutter: 10px
components:
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.on-primary}"
    typography: "{typography.label-sm}"
    rounded: 0px
    padding: 0px 18px
    height: 61px
  button-secondary:
    backgroundColor: "#484848"
    textColor: "{colors.on-primary}"
    typography: "{typography.body-md}"
    rounded: 0px
    padding: 15px
    height: 49px
  button-tertiary:
    backgroundColor: "{colors.on-surface-variant}"
    textColor: "{colors.on-surface-strong}"
    typography: "{typography.label-md}"
    rounded: 0px
    padding: 1px 6px
    height: 61px
  button-ghost:
    textColor: "{colors.primary}"
    typography: "{typography.body-md}"
    rounded: 0px
    padding: 0px
  input-field:
    textColor: "{colors.on-surface-variant}"
    typography: "{typography.label-md}"
    rounded: 0px
    padding: 0px
  card:
    textColor: "{colors.on-surface}"
    typography: "{typography.caption}"
    rounded: 0px
    padding: 0px
  link:
    textColor: "#FFFFFF80"
---

# WPEC Design System

## Overview

WPEC describes itself as: “WPEC CBS 12 provides local news, weather, sports, traffic and entertainment for West Palm Beach and nearby towns and communities in South Florida including the Palm Beaches and Treasure Coast, serving Stuart, Royal Palm ” The interface is light, built on **Mist (#EDEDED)** with **Charcoal (#121212)** text, and **Dark Red (#BE0000)** as the main accent.

Type is set in **Open Sans**. Headlines run large; body text is 14px. Depth comes from soft drop shadows. Corners are mostly 100px.

Measured from [cbs12.com](https://cbs12.com/) on November 6, 2026 at 1440×900 and 390×844 from 336 rendered elements. Values are computed styles from the live page, not the original source files.

## Colors

The palette has 11 roles.

- **Mist (#EDEDED):** Page background, seen 1 time. Token `background`.
- **Charcoal (#121212):** Primary text and headings, seen 4 times. Token `on-surface`.
- **Near Black (#000000):** Headings and emphasis, seen 6 times. Token `on-surface-strong`, CSS `--dd-primary-color`.
- **Charcoal (#222222):** Secondary text, seen 4 times. Token `on-surface-variant`, CSS `--bsDarkAlt2ButtonBg`.
- **White (#FFFFFF):** Raised areas one step from the page, seen 4 times. Token `surface-container-low`, CSS `--bsDarkAlt4ButtonHoverFg`.
- **Near Black 40% (#00000066):** Translucent fill for cards and controls, seen 4 times. Token `overlay`.
- **Near Black 25% (#00000040):** Stronger translucent fill, seen 2 times. Token `overlay-strong`.
- **Dark Red (#BE0000):** Primary buttons and calls to action, seen 20 times. Token `primary`.
- **White (#FFFFFF):** Text and icons on primary. Token `on-primary`.
- **Green (#3AB44B):** Accent in text, fills and borders, seen 14 times. Token `secondary`.
- **Vivid Blue (#0766FF):** Accent in text, fills and borders, seen 2 times. Token `tertiary`.

## Typography

**Open Sans** carries the whole interface. Fallback stack: `Open Sans, Open Sans Fallback`. Other loaded fonts: Montserrat.

- **headline-display:** Open Sans 33px at weight 400. Page title (h1).
- **headline-lg:** Open Sans 20px at weight 800, line height 1, uppercase. Section headings (h2).
- **body-md:** Open Sans 14px at weight 400, line height 1.6. Body text.
- **body-lg:** Open Sans 16px at weight 400, line height 1.5. Lead paragraphs.
- **body-sm:** Open Sans 11px at weight 400. Secondary and small text.
- **caption:** Open Sans 10px at weight 400. Captions and fine print.
- **label-lg:** Open Sans 15px at weight 700, line height 1.33. Large buttons and tabs.
- **label-md:** Open Sans 13px at weight 700, line height 1.54. Buttons, navigation and labels.
- **label-sm:** Open Sans 12px at weight 700, line height 1.5. Small labels and badges.

## Layout

Spacing does not follow a strict grid: 3% of measured values are multiples of 4px, so match the measured steps rather than rounding to a grid.

- **Scale:** xs 2px, sm 5px, md 15px, lg 18px.
- **Gaps:** 10px is the most common gap in flex and grid layouts.
- **Breakpoints:** 374px, 475px, 480px, 500px, 728px, 767px, 768px, 1023px, 1024px, 1499px, 1500px, 1899px, 1900px.

## Elevation & Depth

Raised elements use soft drop shadows. The most used recipes:

- `rgb(230, 236, 240) 0px 1px 0px 0px`
- `rgb(18, 18, 18) 0px 4px 30px 0px`
- `rgba(0, 0, 0, 0.2) 4px 5px 30.2px 0px`

## Shapes

Most elements use 100px corners. Measured radii, most used first:

- **md (100px):** 8 elements.
- **sm (30px):** 4 elements.
- **lg (200px):** 4 elements.

## Components

Measured from the rendered page. Token values reference the tokens above.

- **button-primary (“NEWS”):** #BE0000 fill, #FFFFFF text, 12px/700, padding 0px 18px.
- **button-secondary (“Question of the Day”):** #484848 fill, #FFFFFF text, 14px/700, padding 15px.
- **button-tertiary (“Open Search Input Field”):** #222222 fill, #000000 text, 13.3333px/400, padding 1px 6px.
- **button-ghost (“Cookie Preferences”):** transparent fill, #BE0000 text, 14px/400, padding 0px.
- **input-field (“Text field”):** transparent fill, #222222 text, 13px/400, padding 0px.
- **card:** transparent fill, #121212 text, 10px/400, padding 0px, shadow `rgb(230, 236, 240) 0px 1px 0px 0px`.
- **link:** transparent fill, #FFFFFF80 text, padding 0px.

## Do's and Don'ts

- Do use #EDEDED for the page and lift surfaces in small steps: #FFFFFF.
- Do keep text in 3 levels: #121212, #000000, #222222.
- Do reserve #BE0000 for primary actions and key highlights.
- Do reuse the measured spacing steps (5px, 15px, 18px).
- Do use 100px corners on most elements; larger surfaces also use 30px and 200px.
- Don't introduce new font families beyond Open Sans.
- Don't use #BE0000 for large backgrounds or body text.
- Don't make interface transitions slower than 0.3s.

## Motion

Interface transitions are quick: 0.2s, 0.1s, 0.3s. Longer ambient animations run 6.5s, 6s.

- **Easing:** `ease`, `ease-in-out`, `ease-in`.

Generated by [Sitepeel](https://sitepeel.dev/design-md/cbs12.com/), the free DESIGN.md generator (engine 2026.10.29+b828a475ee10).
