This document defines the visual identity of Playlytics V3.
Every UI decision references this document. No colors, fonts, or spacing values are hardcoded without being defined here first.
- Clean and readable above all else
- Dark theme by default
- Results communicate meaning through color, not just text
- No decorative elements that do not serve a purpose
- Looks professional, not flashy
Dark
- Easier on the eyes during extended sessions
- Common in gaming and developer tooling
- Provides strong contrast for severity colors
| Name | Hex | Usage |
|---|---|---|
| Background | #1E1E2E | Main window background |
| Surface | #2A2A3E | Card and panel backgrounds |
| Surface Hover | #313145 | Hovered elements |
| Border | #3A3A5C | Borders and dividers |
| Name | Hex | Usage |
|---|---|---|
| Text Primary | #EDEDED | Main readable text |
| Text Secondary | #A0A0B0 | Subtext, labels, hints |
| Text Muted | #606070 | Disabled or inactive text |
| Severity | Background | Border | Text |
|---|---|---|---|
| SUCCESS | #1E3A2F | #2ECC71 | #2ECC71 |
| INFO | #1A2A3A | #3498DB | #3498DB |
| WARNING | #3A2E1A | #F39C12 | #F39C12 |
| ERROR | #3A1E1E | #E74C3C | #E74C3C |
| Name | Hex | Usage |
|---|---|---|
| Accent | #7C6AF7 | Primary buttons, highlights |
| Accent Alt | #5E5AC4 | Pressed button state |
System default monospace for input fields. System default sans-serif for all other text.
Reasoning: Avoids font loading complexity. Tkinter handles system fonts reliably across platforms.
| Element | Size | Weight |
|---|---|---|
| App Title | 20 | Bold |
| Section Header | 14 | Bold |
| Card Title | 12 | Bold |
| Card Message | 11 | Normal |
| Card Suggestion | 10 | Normal |
| Input Label | 11 | Normal |
| Input Field | 11 | Normal |
| Button | 11 | Bold |
| Footer / Muted | 9 | Normal |
| Property | Value |
|---|---|
| Min Width | 600px |
| Min Height | 500px |
| Default Width | 700px |
| Default Height | 600px |
| Resizable | Yes |
| Title | Playlytics V3 |
| Property | Value |
|---|---|
| Window Padding | 20px |
| Card Padding | 12px |
| Card Gap | 8px |
| Section Gap | 16px |
| Label Gap | 6px |
Layout: Vertical stack of labeled input fields.
Fields:
- Kills (integer input)
- Deaths (integer input)
- Accuracy (float input, percentage)
- Gun Type (text input or dropdown)
Button:
- Label: Analyze
- Color: Accent (#7C6AF7)
- Width: Full width of form
- Position: Below all input fields
Validation errors appear below the relevant field or as an ERROR card in the results area.
Each RuleResult is displayed as one card.
Card Structure: ┌─────────────────────────────────────┐ │ [Severity Icon] Rule Name │ │ │ │ Message text here │ │ │ │ 💡 Suggestion text here (optional) │ └─────────────────────────────────────┘
Card Border: Left border only, 4px wide, severity color.
Card Background: Severity background color.
Card Text: Message in Text Primary color. Suggestion in Text Secondary color. Suggestion prefixed with 💡
| Severity | Icon |
|---|---|
| SUCCESS | ✅ |
| INFO | ℹ️ |
| WARNING | |
| ERROR | ❌ |
Scrollable vertical list of result cards. Appears below or beside the input form. Empty state shows a placeholder message:
"Enter your match stats and press Analyze."
Displayed as a summary line above the result cards.
Format: K/D Ratio: 2.50
Color: Text Primary Size: 13, Bold
┌─────────────────────────────────────────┐
│ Playlytics V3 v3.0.0│
├─────────────────────────────────────────┤
│ │
│ Kills [ ] │
│ Deaths [ ] │
│ Accuracy [ ] │
│ Gun Type [ ] │
│ │
│ [ Analyze ] │
│ │
├─────────────────────────────────────────┤
│ │
│ K/D Ratio: — │
│ │
│ ┌─────────────────────────────────┐ │
│ │ ✅ Strong Performance │ │
│ │ Keep up the good work. │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ ⚠️ Survival Needs Work │ │
│ │ Consider avoiding open areas. │ │
│ │ 💡 Stay in cover more often. │ │
│ └─────────────────────────────────┘ │
│ │
└─────────────────────────────────────────┘
No results shown. Placeholder text displayed in results area. K/D shows a dash.
Not required for V3.0.0. Analysis is synchronous and fast enough.
ERROR severity card displayed. Input fields remain editable. User can correct and reanalyze.
All result cards displayed. K/D ratio shown. Results scrollable if they exceed the visible area.
- All text meets minimum contrast ratio against backgrounds
- Severity communicated through both color and icon
- No information conveyed by color alone
- Font sizes readable without zooming
- Light theme
- Custom fonts
- Animations or transitions
- Themes selector
- Responsive scaling beyond window resize
- Logo or custom icon (placeholder only)
These may be added in V3.1.0 or V3.2.0 if genuinely needed.
This document is the single source of truth for all visual decisions in Playlytics V3. Any UI element not defined here requires this document to be updated before implementation.