Design Language Document: Tracing Insights F1 Web
This document provides a comprehensive overview of the design patterns, tokens, and code conventions used in the Tracing Insights F1 Web codebase. It is optimized for use by AI/LLMs during code generation.
1. Design Tokens
🎨 Color Palette
The system uses DaisyUI v4 semantic tokens within Tailwind CSS v3. The primary theme is mytheme, but team-specific themes are also defined.
Standard Semantic Tokens:
--p (primary): #00ff00 (Tracing Insights Green)
--s (secondary): #ff00ff
--a (accent): #F471B5
--n (neutral): #1E293B
--b1 (base-100): #002451 (Deep Navy)
--in (info): #0CA5E9
--su (success): green
--wa (warning): orange
--er (error): red
Team Themes (Sample Values):
mercedes: primary #00d2be
ferrari: primary #e6194b
mclaren: primary #f58231
redbull: primary #ffe119
Typography
The system uses a mix of display and body fonts.
- Display/Metal Heading:
Bebas Neue (font-metalfont, font-sans). High-impact, uppercase style for titles and callouts.
- Body Text:
Roboto (font-roboto). Used for general readability and paragraphs.
- Logo/Script:
Great Vibes (font-logofont). Used sparingly for branding.
Spacing & Borders
- Spacing Scale: Standard Tailwind scale (e.g.,
p-4, m-8, gap-6).
- Border Radius:
rounded-lg (default for cards), rounded-full (for pills/buttons), rounded-box (standard DaisyUI containers).
- Shadows:
shadow-xl (standard), shadow-primary/20 (glow effect for primary elements).
2. Layout System
Containers
- Primary Container:
container mx-auto max-w-1200
- Article/Detail:
mx-auto max-w-2xl (for reading focus)
Grid System
- Listings: Standard responsive grid pattern:
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
Breakpoints
The system adheres to standard Tailwind breakpoints:
sm: 640px
- md: 768px
lg: 1024px
xl: 1280px
3. Component Patterns
Cards (Tracing Insights Style)
Used for listing blog posts and analysis items.
- Structure:
card h-full bg-[#011627]/90 shadow-xl border border-primary/40 overflow-hidden
- Interaction:
hover:border-primary transition-all duration-300 transform hover:-translate-y-2 hover:shadow-primary/20 hover:shadow-2xl
- Internal Elements:
figure for images (with group-hover:scale-110), card-body for content.
- Standard:
btn (DaisyUI).
- Primary:
btn btn-primary text-base-100.
- Transitions:
transform transition hover:scale-105 hover:shadow-md.
Selects & Controls
- TomSelect Implementation: Standard selection UI used for year/event/driver filtering.
new TomSelect("#id", { plugins: ["dropdown_input", "remove_button"], ... });
Banners / Notifications
- Animations:
<section class="opacity-0 -translate-y-2.5 transition-all ease-out bg-black ...">
- States: Uses
.hidden or opacity-0 with JavaScript for toggling.
4. Motion & Interaction
Standard Motion
- Transitions:
transition-all duration-300 ease-in-out (applied to cards, links, and buttons).
- Banner Entrance:
opacity-0 -translate-y-2.5 transitioning to opacity-100 translate-y-0.
Micro-interactions
- Hover Scale:
group-hover:scale-110 for images in cards.
- Vertical Hover:
hover:-translate-y-2 for interactive cards.
- Pulse:
animate-ping (standard DaisyUI) for live indicators.
5. Code Conventions
Django Template Structure
- Base Extension:
{% extends "base.html" %}.
- Block Organization:
head: For page-specific meta tags and stylesheets.
content: Primary page body.
site_header: (Optional) Overrides for navigation.
Component Co-location
- Small reusable HTML snippets are located in
hf/templates/components/.
- JavaScript state often resides in
<script> tags at the bottom of templates or in hf/static/js/.
6. Usage Rules (LLM Instructions)
- Prefer Semi-Custom Cards: When creating cards, always wrap a DaisyUI
.card in a group and apply hover:-translate-y-2 border-primary/40 hover:border-primary.
- Standard Containers: For main page content, wrap in
<div class="container mx-auto max-w-1200">. For long-form text, use max-w-2xl.
- Typography Roles: Use
font-metalfont (Bebas Neue) for H1-H3 headers and font-roboto for body content.
- Semantic Colors Only: Never hardcode colors like
#00ff00. Use text-primary, bg-primary, or border-secondary.
- DaisyUI Hierarchy: Use
.tabs-boxed for tabbed navigation and .navbar for headers.
- Animated Entrance: For banners or new sections, use
opacity-0 -translate-y-2.5 with a DOMContentLoaded script to trigger opacity-100 translate-y-0.
⚠️ Inconsistencies
- Container Max-Widths: Inconsistent usage of
max-w-1200 vs max-w-7xl across listing pages. Rule: Prefer max-w-1200 for the main dashboard and max-w-2xl for articles.
- Card Styling: Some cards use
bg-[#011627]/90 while others use bg-base-100/20. Rule: Use bg-[#011627]/90 for primary content cards.
- Inconsistent Buttons: Some buttons use manual
bg-secondary instead of the DaisyUI .btn-secondary component class. Rule: Always use .btn.
Last modified on March 13, 2026