- Card
- Special · 90
- Score
- 91.8
- Position
- ST
- Owner
- First
Built for the
decisions behind
the squad.
A practical reference for FC Club Tracker: dark surfaces, exact-card clarity, deliberate actions, and honest status. The examples below use real HTML, CSS, and a little JavaScript so you can inspect them on desktop or phone.
This page documents the current visual language and proposes consistent component behavior. It is a design reference; changes to the application are separate work.
01 / FOUNDATIONS → 02 / COMPONENTSColor
Orange carries primary actions and active selection. Semantic colors communicate outcome and risk; neutral surfaces keep dense data readable.
Text hierarchy
Typography
Inter carries the interface; IBM Plex Mono makes IDs, scores, and timestamps easy to scan.
Numerical clarity
Use mono for numbers that people compare or copy. Keep prose in Inter.
Inter 400 / 500 / 600 / 700 / 800IBM Plex Mono 400 / 500 / 600Use “Player score” in prose and reserve abbreviated IDs for metadata.
Spacing & shape
A compact rhythm creates room for dense information without crowding the controls.
Spacing scale
Use the scale for padding, gaps, and section rhythm.
Radius & borders
Use 7–10px for controls and panels; full pills for compact status labels. Prefer a one-pixel border to heavy shadow.
border: 1px solid var(--border)Layout & navigation
Desktop uses a persistent left rail; narrow screens use a bottom bar. Panels collapse to one column when space gets tight.
Application shell
Real links and layout elements, scaled down for the reference.
Club overview
Your exact-card workspace at a glance.
ReadyResponsive grid
Four columns on wide screens, two on medium screens, one on narrow screens.
Actions
One primary action per decision area. Use clear verbs and preserve a visible secondary path.
Button hierarchy
Hover, focus, press, and disabled states are live.
Links & action copy
Use links for navigation, buttons for changes, and an ellipsis when an action opens a confirmation step.
“Commit import” is clearer than “Continue” at the final approval gate.
Forms & selection
Native inputs stay keyboard friendly. Labels, help, validation, and unknown values remain visible.
Fields
Try entering a search, changing a select, and submitting the example form.
Choices & progressive controls
Keep “Unknown” distinct from “No” when the underlying fact is missing.
Feedback & status
Use plain text alongside color. Tell users what happened and what they can do next.
Status badges
Compact labels for rows, cards, and summary areas.
Inline alerts
Placed near the decision or result they describe.
Club copies and audit history were saved.
Choose exact cards before you commit.
Check the connection and try again.
Steps, dialogs & toasts
Show where the user is, confirm destructive changes, and acknowledge lightweight success.
Data display
Scan by name first, then exact card, score, and ownership. Mobile rows become readable cards.
Player table
Table on desktop; stacked record on mobile. Values are illustrative.
| Player | Card | Score | Ownership | Status |
|---|---|---|---|---|
| Alex Morgan CLUB-000184 | Special · 90 OVR · ST | 91.8 | First owner | Ready |
| Sam Kerr CLUB-000185 | Gold · 89 OVR · ST | 87.4 | Unknown | Review |
Player card
Exact identity and key attributes without relying on an image.
Empty state
State the missing content and offer the next useful action.
Add a card from the Player Database or import a reviewed club export.
Real workflows
These patterns show how the component pieces work together around imports, history, and squad decisions.
Import review
Upload is followed by exact-card review and an explicit commit.
Preview changes before anything is saved.
Keep or remove each missing copy explicitly. Import never deletes it for you.
History timeline
Events expose provenance and keep changes understandable.
- Club copy added
Imported from a reviewed CSV batch.
- Ownership updated
First owner changed from unknown to yes.
- EVO noted
Evolution details attached to the same permanent club entry.
Tabs & comparison
Use tabs for related views of the same item.
Club Entry ID: CLUB-000184
Squad pitch
Position slots are real buttons; the pitch lines are CSS.
Accessible by default
Accessibility is part of the component contract, from keyboard states to honest status messages.
Interaction rules
- Visible focus: every interactive element gets a clear orange outline.
- Keyboard first: links, buttons, selects, tabs, and dialog work without a pointer.
- Native semantics: use button, input, select, table, dialog, and time for their actual roles.
- Text with color: “Review required” stays clear without orange or amber perception.
- Reduced motion: animation and smooth scrolling respect system preference.
Content rules
- Preserve uncertainty: show “Unknown” instead of guessing a value.
- State consequences: destructive actions say what is removed and what is kept.
- Make recovery clear: errors give the next usable action.
- Use exact identities: reveal release, card variant, and permanent Club Entry ID where decisions need them.
- Keep mobile complete: all critical data and controls must remain reachable at narrow widths.