--- name: Rippr colors: surface: '#131314' surface-dim: '#131314' surface-bright: '#3a393a' surface-container-lowest: '#0e0e0f' surface-container-low: '#1c1b1c' surface-container: '#201f20' surface-container-high: '#2a2a2b' surface-container-highest: '#353436' on-surface: '#e5e2e3' on-surface-variant: '#b9ccb2' inverse-surface: '#e5e2e3' inverse-on-surface: '#313031' outline: '#84967e' outline-variant: '#3b4b37' surface-tint: '#00e639' primary: '#ebffe2' on-primary: '#003907' primary-container: '#00ff41' on-primary-container: '#007117' inverse-primary: '#006e16' secondary: '#b9f1ff' on-secondary: '#00363f' secondary-container: '#00e0ff' on-secondary-container: '#005f6d' tertiary: '#fff8f4' on-tertiary: '#442b10' tertiary-container: '#ffd5ae' on-tertiary-container: '#7a5b3c' error: '#ffb4ab' on-error: '#690005' error-container: '#93000a' on-error-container: '#ffdad6' primary-fixed: '#72ff70' primary-fixed-dim: '#00e639' on-primary-fixed: '#002203' on-primary-fixed-variant: '#00530e' secondary-fixed: '#a5eeff' secondary-fixed-dim: '#00daf8' on-secondary-fixed: '#001f25' on-secondary-fixed-variant: '#004e5a' tertiary-fixed: '#ffdcbd' tertiary-fixed-dim: '#e7bf99' on-tertiary-fixed: '#2c1701' on-tertiary-fixed-variant: '#5d4124' background: '#131314' on-background: '#e5e2e3' surface-variant: '#353436' typography: display-telemetry: fontFamily: JetBrains Mono fontSize: 64px fontWeight: '700' lineHeight: 64px letterSpacing: -0.04em headline-lg: fontFamily: Sora fontSize: 32px fontWeight: '600' lineHeight: 40px headline-md: fontFamily: Sora fontSize: 24px fontWeight: '600' lineHeight: 32px body-lg: fontFamily: Inter fontSize: 18px fontWeight: '400' lineHeight: 28px body-md: fontFamily: Inter fontSize: 16px fontWeight: '400' lineHeight: 24px label-caps: fontFamily: JetBrains Mono fontSize: 12px fontWeight: '500' lineHeight: 16px letterSpacing: 0.1em display-telemetry-mobile: fontFamily: JetBrains Mono fontSize: 48px fontWeight: '700' lineHeight: 48px rounded: sm: 0.125rem DEFAULT: 0.25rem md: 0.375rem lg: 0.5rem xl: 0.75rem full: 9999px spacing: unit: 4px container-margin: 20px gutter: 12px stack-sm: 8px stack-md: 24px stack-lg: 48px --- ## Brand & Style The design system centers on a high-performance, dark-mode aesthetic tailored for real-time activity tracking. The brand personality is kinetic, precise, and undistracted. It utilizes a **Minimalist-Technical** style, stripping away non-essential chrome to focus entirely on telemetry and movement. The visual narrative is driven by a "HUD" (Heads-Up Display) concept: information is layered over the user's environment or activity maps using subtle glassmorphism and high-contrast data points. The emotional response should be one of focus and momentum, making the user feel like a precision instrument. ## Colors The palette is dominated by **Pitch Black (#0A0A0B)** to preserve OLED battery life and minimize ocular strain during night activities. - **Primary (Electric Neon):** Used exclusively for active states, completion goals, and primary "Go" actions. - **Secondary (Cyan Telemetry):** Reserved for secondary data streams, such as cadence or heart rate, to provide visual separation from primary distance/time metrics. - **Surface Strategy:** Backgrounds use deep charcoal. Overlays use a semi-transparent version of the surface color with a 20px background blur to create the HUD effect. ## Typography The typography system uses a functional split: **Sora** for UI headers and brand moments, **Inter** for standard interface text, and **JetBrains Mono** for all numerical data and telemetry. - **Data Legibility:** All numeric values must use the monospaced font to prevent "jumping" layouts during real-time updates. - **Visual Hierarchy:** Use `label-caps` for units (e.g., KM/H, BPM) placed immediately adjacent to large telemetry displays. - **Scale:** On mobile devices, telemetry data should prioritize width; if values exceed 5 digits, scale the font size down dynamically to fit the viewport width minus margins. ## Layout & Spacing This design system employs a **Fluid HUD Grid**. Elements are anchored to the corners of the screen to keep the center clear for maps or camera feeds. - **Grid Model:** A 6-column grid for mobile, 12-column for desktop. - **Padding:** Use a generous 20px "Safe Zone" margin on all edges of the screen to ensure interactive elements are reachable and not clipped by hardware notches or rounded device corners. - **Density:** High density for data readouts (8px spacing between related metrics) and low density for navigation/settings (24px+ spacing) to prevent accidental taps during motion. ## Elevation & Depth Depth is expressed through **translucency** rather than shadows. 1. **Level 0 (Base):** Pure black (#0A0A0B). 2. **Level 1 (Substrate):** Dark charcoal (#161618) with 0% transparency. 3. **Level 2 (HUD Panels):** Surface color at 60% opacity with a `backdrop-filter: blur(20px)`. 4. **Level 3 (Modals):** Surface color at 80% opacity with a subtle 1px inner border in a low-opacity white (10%) to define the edge against dark backgrounds. Shadows should be avoided entirely to maintain the "lightweight" digital feel. ## Shapes The shape language is **Technical-Precision**. - **Corners:** Use 0.25rem (4px) as the base radius for all containers to maintain a sharp, engineered appearance. - **Interactive Elements:** Buttons and inputs follow the same 4px rule. - **Progress Indicators:** Use sharp, non-rounded ends for progress bars to emphasize a "segmental" or "digital" look. - **Iconography:** Use 2px stroke weights with squared-off ends to match the monospaced typographic theme. ## Components ### Buttons - **Primary:** Solid Electric Neon background with Black text. No rounding beyond the base 4px. - **Ghost:** 1px Neon border with transparent background. Text matches border color. - **Telemetry Toggle:** Small, square buttons using monospaced labels. ### Cards & HUD Panels - All cards use the Level 2 Elevation (Glassmorphism). - Remove all drop shadows. Use a 1px stroke of #FFFFFF at 10% opacity for definition. ### Data Inputs - Underlined style only (no bounding box) for a lighter footprint. - Active state changes the underline to the Primary Neon color. - Use JetBrains Mono for all numeric input fields. ### Progress & Gauges - **Circular Gauges:** Use thin 4px strokes. The "track" should be 5% opacity white; the "fill" should be the Primary Neon. - **Pulse:** Active heart rate or GPS signals should use a "scanning" animation—a vertical line moving across the element—rather than a standard fade. ### Navigation - A bottom-anchored, floating "Dock" with a glassmorphic background. - Active icons are highlighted with a single Neon pixel-dot underneath.