Brand Guidelines

Colours, typography, assets, and usage rules for Pixel Rugby.

Contents

Colour Palette

Primary

Brand Green
#1e6e2e
Primary Green
#288135
Pitch Green
#2d8c3c
Gold
#FFD700
Extrusion Green
#1e5f2a

Gameplay

Pitch Stripe
#268534
HUD Black
#000000
Dark Gold
#DAA520
Rugby Ball
#c0392b

UI Feedback

Success
#27ae60
Error / Delete
#cc0000
White
#ffffff
Light Panel
#f5d0b0

Typography

In-Game — Press Start 2P Download Font
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 !@#$%&*
Website — System Font Stack
-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif

The quick brown fox jumps over the lazy dog.
Bold weight for headings and labels.
ContextFontNotes
Game canvas & HUDPress Start 2PAll text uppercase. Loaded from /assets/PressStart2P.ttf
Buttons & labelsPress Start 2P8 – 18 px depending on button size
Website pagesSystem font stackBody 16 px, line-height 1.5
Code/monoSFMono-Regular, Consolas, monospaceFor code snippets and hex values

Button Styles

In-game buttons follow a pixel-art aesthetic with chunky borders and a stamped block extrusion (solid dark-green #1e5f2a filled at every offset from 1 to depth) instead of a translucent drop shadow — matching the title, carousel, and card extrusions. Selected (primary) buttons also breathe with a subtle ~1.2% scale pulse to draw the eye. Extrusion depth scales up in portrait so the stamped look reads at touch sizes.

TypeSize (P / D)BorderRadiusExtrusionUse
Action button (selected)400×80 / 178×383 px gold #FFD7005 px4 px (5 px portrait) solid #1e5f2aSelected / primary action (Kick Off, Continue, Play Round X)
Action button400×80 / 178×383 px white #fff5 px4 px (5 px portrait) solid #1e5f2aUnselected action
Footer text button142×48 / 90×282 px white #fff3 px3 px (4 px portrait) solid #1e5f2aSmall secondary actions (< Back, Shuffle)
Footer icon button64×48 / 38×282 px white #fff3 px3 px (4 px portrait) solid #1e5f2aIcon-only footer / homescreen actions (info, controller, trophy, gear, hamburger, users, fast-forward, sun/rain, pools)
Destructive buttonvaries (icon + label paired)2 px white #fff3 px3 px solid #7a0000Red #cc0000 face. Warning glyph prefixed to the label via drawDeleteButton(). Delete All Data, Clear, Delete Career.

Side padding: SAFE_X + (p ? 20 : 10). Bottom margin: p ? 16 : 15. Adjacent footer icons share a p ? 14 : 10 px gap so they read as a uniform strip.

UI Icons

All glyphs are authored on a 24×24 pixel grid and rendered as Path2D fills (solid white over the button face, or solid #fff over a red face for destructive variants). Adding a new icon means adding a new _X_ICON_SVG + _drawXIcon(cx, cy, size) pair next to the others in game.js.

IconConstantUsed by
Settings (gear)_SETTINGS_ICON_SVGTitle-screen footer (gear button); WC / 6N / 4N tournament screens (in-tournament settings menu), their team-select carousels, and their mode-intro screens — opens the main Settings modal (trimmed to Difficulty / Sounds / Language)
About (i)_ABOUT_ICON_SVGTitle-screen footer (info button)
Tutorial (TV)_TUTORIAL_ICON_SVGTitle-screen footer (controller / TV button)
Trophy_HIGH_SCORES_ICON_SVGTitle-screen footer; arcade carousel "best score" pill ([trophy] <score>); team-select / mode-intro Records shortcut (replaces the old "Results" text button)
Hamburger_MENU_ICON_SVGCareer table footer — opens the Career menu modal; league select carousel and league mode-intro screens (foreshadowing the wider in-career menu)
Pools (grid)_POOLS_ICON_SVGGlobal Cup bracket footer — opens the all-pools view
Warning (! frame)_WARNING_ICON_SVGPrefixed to red destructive-button labels via drawDeleteButton() — Delete All Data, Clear, Delete Career
Users (My Team)_USERS_ICON_SVGCareer table footer — opens the My Team customization modal. Also painted on every in-tournament screen (WC / 6N / 4N) left of the gear, opening the run-scoped tournament squad editor (same modal, in-memory edits that revert on exit)
Backspace (Clear)_CLEAR_ICON_SVGHigh Scores destructive Clear button (red face)
Fast-forward_FORWARD_ICON_SVGMatch-intro footer — opens the Simulate-match confirm modal
Sun_SUN_ICON_SVGMatch-intro weather toggle — clear conditions
Rain_RAIN_ICON_SVGMatch-intro weather toggle — rainy conditions
Full Guide (book)_FULL_GUIDE_ICON_SVGAbout modal — link to /guide
Derby (crossed swords)drawDerbyIcon()Match-intro Derby banner

Inside an icon button, the glyph is rendered at round(buttonH * 0.55) centered both axes.

Confirmation Modals

Destructive or irreversible actions open a centered confirm overlay before committing. All confirm modals share the same chrome so the pattern is recognizable across modes.

PropertyValue
Backdroprgba(0,0,0,0.6) full-viewport fill
PanelWhite card via drawPixelCard, radius:0, 2 px white border. Portrait VIEW_W − 60 × 180; desktop 300 × 140.
TitlePress Start 2P bold, 14 px portrait / 11 px desktop, #222
Subline10 / 8 px #666 — short clarifier (e.g. "You will lose your progress.")
ButtonsTwo side-by-side: destructive (default-state, red face for permanent wipes) on the left, primary Cancel on the right. 120×44 portrait / 90×30 desktop with a 12 / 8 px gap.
Keyboardy / Enter / Space commits; any other key cancels. Modal absorbs all clicks/keys until dismissed.

Examples: Exit Tournament (wcConfirmExit), Simulate Match? (simConfirmVisible), Clear High Scores (two-step: "Clear your <mode> history?""Are you sure? This cannot be undone." in red bold — applies to all tabs, not just Global Cup).

Match-Intro Banners

The "Match of the Day," "Derby," and venue banners on the match-intro screen sit on a white face with a 3 px (2 px desktop) solid #1e5f2a diagonal extrusion — no soft outline, no drop shadow. Banner text and the gold star / sword icon are also rendered in dark green #1e5f2a so the banner reads as a clean stamped block on the pitch.

Global Cup Title Bar

Every Global Cup screen (pool view, all-pools, knockout bracket) renders the title bar via the drawWCHostBar(year, hostIdx) helper instead of drawBar. Composition: [host-flag] {YEAR} GLOBAL CUP centered, with the same stamped extrusion as a regular bar title. Flag height = round(fontSize × 1.15) portrait / −1 px on desktop so it visually matches the cap-height of the Press Start 2P glyphs; flag width preserves the standard 1.4:1 aspect. Falls back to a plain {YEAR} GLOBAL CUP bar when no host is set.

Career Modal Overlays

All career-mode modals (Career menu, History, Records, Rules, Sportsbook, My Team, Help, Club Info) use a uniform chrome:

Logo & Assets

App Icons

App icon
Primary Icon
apple-touch-icon.png
Download
Alt icon
Alt Icon
apple-touch-icon-alt.png
Download
Lite icon
Lite Icon
lite-app-icon.png
Download

The Lite Icon is what /lite installs to a home screen: the face cut as a white-outlined sticker — rounded corners, the die-cut look — on the primary icon's own green, #369143. Same family, so the two builds are recognisably one game, but not the same tile twice when both are installed. Generated from the builder rather than drawn — scripts/gen-lite-icon.js calls the same Flyhalfie.build() the export does, so it cannot drift from the sticker this page offers below.

Favicon

Favicon
Favicon
favicon.png — 32x32
Download
Lite favicon
Lite Favicon
lite-favicon.png — 256x256, transparent
Download

The Lite favicon is transparent and takes a black sticker outline where the Lite app icon takes white. That is the substrate talking, not an inconsistency: an outline exists to separate the sticker from what is behind it, and on the app icon that is a known green, while a transparent favicon lands on whatever chrome the browser has. Black is the only one of the three that survives a white tab bar and a dark one alike. Its corners stay square for the same kind of reason — at the 16px a tab actually renders, the border is about a pixel wide and rounding does not survive the downscale, while the sharp corners hold the silhouette's shape slightly better.

Flyhalfie Builder

Start here for any kit. Every one of the 80 national and club kits, any hair style including the scrum cap, any hair and skin colour, with or without the ball — the builder draws it live and exports all six cuts as SVG and PNG, plus animated GIFs of the run cycle and of the mascot turning. This page used to carry a static card for each kit; the builder makes all of them and more, so the cuts below are just the canonical base artwork.

It also finishes them on the way out: a sticker outline in white or black, regular or thin, with square or rounded corners, any output size, a background baked in, and a square canvas. And it builds app icons — the framing apple-touch-icon.png uses, redrawn with whatever kit and appearance you picked, plus a store-ready set for the App Store, Google Play, Android adaptive layers and favicons.

Open the builder →

Mascot — Flyhalfie (Flat)

The mascot without extrusion. Same placement as the 3D cuts — the ball sits level and the near arm is squared to it — so flat and extruded artwork agree.

Full Player
Full Player
flyhalfie.svg — 2000 × 3402
Bust
Bust
flyhalfie-bust-flat.svg — 1426 × 2437
Face
Face
flyhalfie-face-flat.svg — 1281 × 1394

Flyhalfie 3D — Base Cuts

Extruded builds of the mascot with per-block side faces. Every cut ships as SVG (scales cleanly) and PNG (transparent background).

Full Player
Full Player
flyhalfie-3d.svg — 1952 × 3374
Bust
Bust
flyhalfie-bust.svg — 1522 × 2486
Face
Face
flyhalfie-face.svg — 1329 × 1443
Rugby Ball
Rugby Ball
rugby-ball-3d.svg — 777 × 656

Flyhalfie — Scrum Cap

Every cut in a scrum cap, laid out cell for cell from the in-game scrumcap style and coloured with Mexico's capColor (#cc0000). The chin strap is that red at 78%, matching the sprite. Each card links the extruded and flat builds in both formats.

Full Player in a scrum cap
Full Player
flyhalfie-3d-cap.svg — 1952 × 3219
Bust in a scrum cap
Bust
flyhalfie-bust-cap.svg — 1522 × 2331
Face in a scrum cap
Face
flyhalfie-face-cap.svg — 1269 × 1288

Extruded Flags — All Nations

All 100 nation flags, built from the same band data the game uses and given the same extrusion. Only the bottom and right edges lie on the boundary, so each takes the colour of whichever band reaches it — the tricolours and stripes carry through to the side faces. 930 × 630 PNG, plus SVG.

Algeria flag
Algeria
ALG
Andorra flag
Andorra
AND
Argentina flag
Argentina
ARG
Australia flag
Australia
AUS
Austria flag
Austria
AUT
Bahamas flag
Bahamas
BAH
Barbados flag
Barbados
BRB
Belgium flag
Belgium
BEL
Bermuda flag
Bermuda
BER
Botswana flag
Botswana
BOT
Brazil flag
Brazil
BRA
Bulgaria flag
Bulgaria
BUL
Cameroon flag
Cameroon
CMR
Canada flag
Canada
CAN
Cayman Islands flag
Cayman Islands
CAY
Chile flag
Chile
CHL
China flag
China
CHN
Colombia flag
Colombia
COL
Cook Islands flag
Cook Islands
COK
Costa Rica flag
Costa Rica
CRC
Croatia flag
Croatia
CRO
Czechia flag
Czechia
CZE
Denmark flag
Denmark
DEN
England flag
England
ENG
Fiji flag
Fiji
FIJ
Finland flag
Finland
FIN
France flag
France
FRA
Georgia flag
Georgia
GEO
Germany flag
Germany
GER
Ghana flag
Ghana
GHA
Greece flag
Greece
GRE
Guyana flag
Guyana
GUY
Hong Kong flag
Hong Kong
HKG
Hungary flag
Hungary
HUN
India flag
India
IND
Indonesia flag
Indonesia
INA
Iran flag
Iran
IRN
Ireland flag
Ireland
IRL
Israel flag
Israel
ISR
Italy flag
Italy
ITA
Ivory Coast flag
Ivory Coast
CIV
Jamaica flag
Jamaica
JAM
Japan flag
Japan
JPN
Kazakhstan flag
Kazakhstan
KAZ
Kenya flag
Kenya
KEN
Korea flag
Korea
KOR
Latvia flag
Latvia
LAT
Lithuania flag
Lithuania
LTU
Luxembourg flag
Luxembourg
LUX
Madagascar flag
Madagascar
MAD
Malaysia flag
Malaysia
MAS
Malta flag
Malta
MAL
Mauritius flag
Mauritius
MRI
Mexico flag
Mexico
MEX
Moldova flag
Moldova
MDA
Monaco flag
Monaco
MON
Morocco flag
Morocco
MAR
Namibia flag
Namibia
NAM
Netherlands flag
Netherlands
NED
New Zealand flag
New Zealand
NZL
Nigeria flag
Nigeria
NGR
Niue flag
Niue
NIU
Norway flag
Norway
NOR
Pakistan flag
Pakistan
PAK
Papua New Guinea flag
Papua New Guinea
PNG
Paraguay flag
Paraguay
PAR
Peru flag
Peru
PER
Philippines flag
Philippines
PHI
Poland flag
Poland
POL
Portugal flag
Portugal
POR
Romania flag
Romania
ROU
Rwanda flag
Rwanda
RWA
Samoa flag
Samoa
SAM
Scotland flag
Scotland
SCO
Senegal flag
Senegal
SEN
Serbia flag
Serbia
SRB
Singapore flag
Singapore
SGP
South Africa flag
South Africa
RSA
Spain flag
Spain
ESP
Sri Lanka flag
Sri Lanka
SRI
St Lucia flag
St Lucia
LCA
Sweden flag
Sweden
SWE
Switzerland flag
Switzerland
SUI
Tahiti flag
Tahiti
TAH
Thailand flag
Thailand
THA
Tonga flag
Tonga
TON
Trinidad & Tobago flag
Trinidad & Tobago
TRI
Tunisia flag
Tunisia
TUN
Turkey flag
Turkey
TUR
Uganda flag
Uganda
UGA
Ukraine flag
Ukraine
UKR
United Arab Emirates flag
United Arab Emirates
UAE
United States flag
United States
USA
Uruguay flag
Uruguay
URU
Uzbekistan flag
Uzbekistan
UZB
Venezuela flag
Venezuela
VEN
Wales flag
Wales
WAL
Wallis & Futuna flag
Wallis & Futuna
WLF
Zambia flag
Zambia
ZAM
Zimbabwe flag
Zimbabwe
ZIM

Visual Identity

AttributeValue
AestheticSNES / Tecmo Bowl / Retro Bowl era pixel-art sports game
Theme colour#1e6e2e (PWA title bar)
Background colour#2d8c3c (PWA splash)
Text styleAll uppercase in-game
Pitch patternAlternating stripes — #2d8c3c / #268534
Crowd & weatherAnimated pixel crowd, dynamic weather effects

Character Palette

Skin Tones

Light
#f5d0b0
Medium
#e8c89e
Tan
#c8a07a
Brown
#a0724e
Dark
#6b4226

Hair Colours

Light Blonde
#d4a830
Dark Blonde
#8b6914
Red
#a23c1e
Brown
#5c3a1e
Dark
#333333
Black
#222222
Very Dark
#111111

Hair Styles

Twelve lengths are available, in the order the in-game style picker cycles them.

StyleDescription
Normal
The default. A three-row volume on top of the head.
Short
A flat-top crop.
Buzzcut
The same shape shaved down to 20%-opacity stubble over the scalp.
Long
Normal's top silhouette plus a back cascade: a sideburn extension and four taper rows falling past the shoulder, ending in a single-pixel tail.
Mullet
A solid crop on top, a taper at the temple, and two columns of length straight down the back, narrowing to one at the collar. Long puts its length beside the face; the mullet puts it behind the head.
Viking
A top knot with faded sides: Short's tight crown, no forehead fringe because the hair is combed into the knot, and Fade's taper at the temple. The knot's fourth cell is the tie, painted in the worn shirt colour (team.colors[0]).
Curly
Widens the silhouette a row and pokes two single-pixel curl bumps up above the crown.
Messy
Raises the whole mop a row, squares off the sides, and adds side volume at the temple.
Fade
Paints no solid base. It lays 80% → 80% → 70% → 40% → 20% opacity bands over skin pads on rows -1 through 3, so the hair tapers cleanly into the scalp (burst-fade / taper-fade silhouette).
Headband
Replaces the forehead fringe rather than sitting under it, which is what a real band does to a hairline. It paints in the scrum cap colour rather than the shirt — see the note below the table.
Scrum Cap
A helmet-shaped silhouette: crown, forehead band, an ear flap on the visible side, and a thin three-pixel chin strap pinching across the jaw onto the neck. The strap paints in a darker version of the cap colour via _darkenHex so it reads as a strap rather than part of the cap.
Bald
Swaps the hair pixels for scalp.

Cap and band colour. Scrum Cap and Headband share one resolution chain, because capColor is picked per nation to contrast with the jersey. Per-player capColor wins, then team-level capColor, then the home primary. The game inserts one more step ahead of those two which this page does not have: a side in its change kit resolves to awayCapColor, or failing that to the home shirt colour, so a cap tuned against the home jersey cannot disappear into the away one. This page has no notion of a pre-swap home and draws only a home kit; /nations and /clubs resolve the away branch by hand, passing awayCapColor || colors[0] to their away sprite. Most teams in teams.json set team.capColor explicitly to a kit accent (France red, Ireland orange, Scotland purple, Wales green, Italy light blue, Australia bottle green, New Zealand dark grey). The Headband card below uses a demo team with a blue cap and a red shirt so the two read as separate.

Setting a style. Per player via team.players[i].hairStyle, or globally on My Team characters. Unnamed darker-skinned slots (tan / brown / dark) auto-default to Short on even slot indices, or Buzzcut with Very Dark #111 hair on odd ones, instead of Normal — except the fly-half slot (index 2), which auto-defaults to Fade so the playmaker reads as distinct in the squad row.

Sprites

All game characters and objects are hand-drawn pixel art rendered on a canvas. Sprites use integer coordinates scaled by a factor to keep crisp edges at any size.

Player Sprite

The base player is 10 pixels wide by 18 pixels tall, scaled by a factor of 1.8 in-game. Each player is composed of hair, head, jersey, shorts, an ankle-high sock band (defaults to the player's skin so legs read bare; override with socksColor for a colored sock), and boots.

PartSize (px)Colour Source
Hair6 × 3Team hair config (dark, brown, blonde, red)
Head / Face5 × 3Skin tone palette
Eye1 × 1#000
Jersey8 × 6team.colors[0] primary, team.colors[1] accent
Shorts6 × 2team.shortsColor or team.colors[1]
Legs6 × 2Skin tone palette
Boots6 × 1#222

Running Animation

Players cycle through 4 frames at 150 ms per frame (~6.6 fps). Arms and legs alternate stride positions.

Jersey Styles

Teams can have solid, striped, quartered, harlequin, halves, sash, diagonal, slopes, cross, wavy or checkered jerseys using their primary and secondary colours. Diagonal is half a collar with a band falling off it: the right half of the collar row, then one column outward per row until it runs off the edge of the shirt. It is the only pattern that stops short of the hem, and it stops because it runs out of shirt rather than because it was trimmed. Slopes is that same angle repeated — three parallel bands two cells wide, running the opposite way to the sash so the two never read as versions of each other. Cross is a Nordic cross — a bar across the chest and an upright through it, set left of centre, which is what makes it read as a flag rather than as a plus sign. Harlequin is a true 2x2 quarters and the only pattern taking four: colors[0] top-left, colors[1] top-right, patternColor bottom-left and bandColor bottom-right. Note quartered is not four quarters — it is a diagonal two-tone split, which is why harlequin is its own pattern rather than an extra colour on that one. Tricolour is the exception that takes a third: shirt colour on the shoulders, secondary across the chest, and a bandColor along the hem — used for flag-banded shirts like Luxembourg and Andorra.

Rugby Ball

The ball is 8 pixels wide by 5 pixels tall, scaled by 2.2. It has a white body, red side panels, dark outline, and a grey center seam.

Crowd Characters

Crowd members are 8 × 9 pixels with animated arms that wave based on match excitement. About 85% wear home team colours.

Usage Guidelines

Do
  • Use bright, cheerful greens and golds
  • Keep the retro pixel-art aesthetic consistent
  • Use Press Start 2P for all in-game text
  • Uppercase all in-game text
  • Use the SVG mascot for scalable contexts
  • Use stamped block extrusions (solid dark-green #1e5f2a, diagonal offset) on buttons, cards, and bar titles — never translucent drop shadows
Don't
  • Use dark navy or muted UI tones
  • Mix modern/flat UI with the pixel aesthetic
  • Use thin borders or translucent rgba drop shadows in-game — solid extrusions only
  • Display game text in lowercase
  • Stretch or distort the mascot or app icons
  • Use gradients on in-game buttons

Scenes

Every backdrop in the game is a scene, drawn in code rather than shipped as art. There are no backdrop images left: thirteen ids in a day and a night pair used to be 26 webp files, 4.6 MB and about 42% of the app payload. Drawing them costs kilobytes, needs no decode, and gives each one an OVERCAST state the images never had — a pair can only be day or night, so a match in the rain used to show a blue sky behind the weather.

The same scene appears at two distances, which is what the two lines under each one mean. A ground has no room for the deep crowd bank a stadium draws, so the space above its terracing is filled with a scene close up, the field just beyond the touchline. Every larger venue shows one far away instead, on the horizon behind the stands, reached through a backdrop id: TEAM_SKYLINE gives a team an id, and SKYLINE_SCENE says which scene that id draws.

Almost every ground and mid venue draws the treeline, set one nation at a time rather than by a rule. A small venue shows its backdrop behind a shallow stand for the whole match, in a strip about a hundred pixels deep, and a specific landscape does not survive that — a town at that size is a smudge, and urban-town, the least built-up of them, drew nothing but sky. The treeline reads as somewhere at any height, which is what it was drawn to be. They are all written as the treeline in the table, so any one can be moved off it: twelve venues show trees-city, a city rising behind the same wood; Austria takes the European terrace; Dunmore and Monaco the riviera; Atlantis and Bermuda the empty coast; the Cook Islands, Fiji, Niue, Papua New Guinea, Samoa, the Solomons, Tonga and Wallis & Futuna the Pacific ridge; Algeria, Morocco, Namibia and Tunisia the high desert; Andorra, Georgia, Norway and Switzerland the Alps; Croatia, Greece, Malta and Portugal the hill town; Chile and seven of the career league's clubs the suburb; and Electra, Singapore and Metro Rugby stand in the street under the towers. A stadium shows no backdrop at all. Its stands fill the frame from the pitch to the top of the screen, and the one moment a skyline ever appeared there was the opening camera push-in, which was removed. The stadium entries on the cards below are a record of what each would draw rather than something you can see, and the README’s table shows a dash for them for that reason. The four urban density scenes were deleted outright on the same argument: every venue that asked for one was a stadium, so the whole family was art the game could not reach.

Two tables decide a backdrop and only one of them answers for any given venue. TEAM_SKYLINE answers at a mid venue and above, TEAM_GROUND_SCENE at a ground. This paragraph used to say the second was no longer read by the game, which was true for about a fortnight in August 2026 while the treeline was a rule rather than a table, and wrong by the time anyone read it. Because only one table answers, a disagreement between the two is invisible until a nation changes tier and then its backdrop silently moves continent. That has now happened once and been caught twice, so the build checks the two agree wherever both name a code.

The ids are kept rather than folded into the scene names, because several share one scene and the id carries meaning the scene name does not — college says what those four Newland clubs are, and would become an indistinguishable second european without it.

Every scene comes in three lights. Only the DAY set is authored; OVERCAST and NIGHT are derived from it by one transform — darken, and mix toward a single atmospheric colour — so eleven scenes and 302 colours under 109 names stay in step from one table instead of three. Sky, lit windows and haze are listed exceptions: a night sky is deep blue and an overcast one is nearly white, so the darkening rule would take it the wrong way, and a light that is ON gets brighter after dark. In play a venue picks OVERCAST in rain or snow and DAY otherwise. NIGHT is switched on at a mid venue and not at a ground, and the dividing line is the floodlights: pylons were added to the mid tier and draw only after dark, while a ground has none, so a dark sky over a pitch nothing is lighting would read as a mistake there.

Pitch-Side Ad Boards

A strip of LED-style sponsor boards runs along the top touchline, in front of the crowd. Every board is a consistent 4:1 rectangle (height = board width / 4); boards tile the view at ~120 px wide in portrait and ~88 px on desktop, so they read identically on any screen. All boards show the same sponsor at once and rotate together in a synchronized vertical hard-roll (LED-ring style). Slots alternate brand → slogan → brand → second slogan; a sponsor with no slogan just shows its wordmark/logo on every slot. A sponsor can also carry a logos array of full-bleed board images that cycle by slot, so a campaign can alternate art across the strip (one entry repeats everywhere). Career-only sponsors (Bank of Newland and Newland Air) appear solely in career/league matches; every other board shows in all modes. Text is Press Start 2P, uppercased; image logos are pixelated in-game to match the art.