Skip to content

Design System

Every visual decision on BaseballScorecard.org follows these rules. If something looks different from the rest of the site, it's a bug.

Brand Colors

Primary Green
#377049
Stone Dark
#1c1918
Stone Mid
#868278
Stone Light
#faf9f6
Out Red
#a04a49
Pitcher Blue
#2a6d8d
Challenge Purple
#7B2D8E

Light Mode Palette

SwatchTokenHexUsage
--sc-text#1c1918Primary text, diamond outlines
--sc-text-light#6b6462Secondary text, stats
--sc-bg#faf9f6Page background
--sc-cell-bg-empty#e8e6e1Empty cells, headers
--sc-cell-bg-future#f2f0ecFuture inning cells
--grid-line#868278All borders and dividers
--sc-scored#377049Scored runners, active states
--sc-out#a04a49Out paths, strikes
--sc-sub#44403aSubstitution indicators
--sc-pitcher-line#2a6d8dPitcher change lines
--sc-challenge#7B2D8EABS challenge badges
--sc-active-cell#e0f0e4Live batter highlight

Dark Mode Palette

SwatchTokenHexUsage
--sc-text#f5f2e9Primary text
--sc-bg#1c1918Page background
--sc-cell-bg#292524Play cell background
--grid-line#7e7a76Borders
--sc-sub#d4d0c8Substitution indicators

All colors are CSS custom properties. Theme switching toggles data-theme on <html>. No JavaScript needed for the swap.

Diamond Rendering

Single (1B)
Double (2B)
Triple (3B)
HR
Home Run
Scored (not HR)

These SVGs use var(--sc-text) and var(--sc-bg), so they automatically switch between light and dark mode.

Pitch Call Colors

Ball
B
Strike
C S F T
In Play
X D E
ABS Challenge
W / L

Substitution Line Pattern

All sub indicators use the same dotted square pattern.

PH (left side)
Pinch Hitter: before the at-bat
PR (right side)
Pinch Runner: after the at-bat
42 / 68 / 5K
Pitcher change line with stats (strikes / pitches / Ks)

5px squares, 4px gaps, consistent everywhere.

Indicator Icons

2
Out Badge
RBI Diamond
A
Sub Letter

All indicators share the same base size for visual consistency. The HR diamond is intentionally larger.

Loading Bar

Rainbow gradient, 4px height, appears after 1s delay

Typography

ElementSizeWeightNotes
Team name header2.25em700Scales to 1.25em on mobile
Lineup player nameclamp(1.1rem, 0.8vw + 1rem, 1.5rem)800/600800 starter, 600 sub
Table data1em400All tables
Table header1em700Column headers
Section title1.1em700Spanning headers
Walk notationlargeSize * 1.0900BB, IBB, HBP, CI
Out notationlargeSize * 0.6400G6-3, F8, L7
K notationlargeSize * 0.7400K, backwards K

Rules

  • Never combine bold AND italic
  • Team abbreviations never bold in tables
  • All table data left-aligned (never centered)
  • Only full team names in section headers are bold

Borders

UseStyleException
All structural borders1px solid var(--grid-line)
Square cornersborder-radius: 0No exceptions
Drop shadowsNever
Linescore RHE separator2.5px solid var(--text)Only thick border
Scorecard grid bold2.5pxRow/inning boundaries

Grid and Layout

LayoutDesktopMobile
W-L + Linescore35% / 65% side by sideStacked
Game Info / Weather / Umpires3 equal columnsStacked
Standings2-column grid1 column

body { overflow-x: hidden } prevents horizontal page scroll. Wide tables scroll within containers.

Team Logos

Displayed for educational purposes. All logos are the trademark and property of their respective owners.

NYY
Light mode
NYY
Dark mode
  • 30 teams, SVG format, stored locally at /img/logos/light/ and /img/logos/dark/
  • Auto-swap via CSS class toggling
  • vertical-align: middle for alignment with text

Accessibility

  • WCAG AA contrast on all text and UI
  • Skip-to-content link (first focusable element)
  • aria-label on all interactive elements
  • aria-live="polite" on auto-refresh status
  • Keyboard navigation for all controls
  • See Accessibility for the full statement

All logos are the trademark and property of their owners and not BaseballScorecard.org.