···11+# Design System Spec
22+33+## Overview
44+55+This interface is a high-contrast, grid-based environment built on pure black (`#000000`) with a single electric accent. The visual system avoids template-like framing by replacing hard structure (lines, dividers, borders) with tonal layering and intentional asymmetry.
66+77+Design goal: focused, cinematic, and modern.
88+99+## Color and Surfaces
1010+1111+Space is defined by light and depth, not lines.
1212+1313+- **No-Line Rule:** Do not use 1px solid borders for sectioning. Separate regions by stepping between surface tokens (for example, `surface` to `surface_container_low`).
1414+- **Surface hierarchy:**
1515+- **Base layer:** `surface_container_lowest` (`#000000`) for deepest background and the void behind the app rail.
1616+- **Primary work surface:** `surface` (`#0e0e0e`) for the default content canvas.
1717+- **Elevated containers:** `surface_container` (`#191919`) and `surface_container_high` (`#1f1f1f`) for cards and interactive panels.
1818+- **Glass overlays:** Floating modals and high-priority overlays use `surface_container_highest` at 70% opacity with `backdrop-blur: 20px` for an obsidian-glass effect.
1919+- **Primary CTA texture:** Use a linear gradient (135deg) from `primary` (`#7dafff`) to `primary_dim` (`#0073de`), not a flat fill.
2020+2121+## Typography
2222+2323+Use **Google Sans** as both readability and structure.
2424+2525+- **Display and headline scale:** `display-lg` (3.5rem) and `headline-lg` (2rem) with tight tracking (`-0.02em`).
2626+- **Body and labels:** `body-md` (0.875rem) is the default body size. Use `on_surface_variant` (`#ababab`) for secondary text against `on_surface` titles.
2727+- **Asymmetric layout:** Avoid centered hero alignment. Keep headlines left-aligned and place supporting metadata in `label-sm` on the far right, using `spacing-8` (2rem) to preserve separation.
2828+2929+## Elevation and Depth
3030+3131+In a black UI, conventional drop shadows are low impact. Depth is created through tone and glow.
3232+3333+- **Layering principle:** Lift components by moving up the surface token scale (for example, `surface_container_low` on top of `surface`).
3434+- **Ambient glow:** For floating UI (tooltips, dropdowns), use a `primary` shadow at 5% opacity with a 40px blur.
3535+- **Ghost border fallback:** If a boundary is required for accessibility, use `outline_variant` (`#484848`) at 20% opacity.
3636+3737+## Component Rules
3838+3939+### App Rail
4040+4141+- Fixed-width rail on the far left using `surface_container_lowest`.
4242+- Icons use 1.5pt strokes.
4343+- Active icon color: `primary` (`#7dafff`); inactive: `on_surface_variant`.
4444+- No persistent labels; labels may appear on hover.
4545+4646+### Buttons
4747+4848+- **Primary:** Gradient fill (`primary` to `primary_dim`), text color `on_primary_fixed` (black), radius `full`.
4949+- **Secondary:** Fill `surface_container_highest`, text `on_surface`, no border, radius `md` (0.75rem).
5050+- **Tertiary:** Transparent background, text `primary`; use for low-emphasis actions (for example, Cancel).
5151+5252+### Cards and Lists
5353+5454+- Do not use horizontal dividers between list items.
5555+- Separate items with `spacing-2` (0.5rem) vertical space.
5656+- Use subtle hover state with `surface_bright` at 5% opacity.
5757+- Card radius must be `lg` (1rem) or `xl` (1.5rem).
5858+5959+### Input Fields
6060+6161+- Use minimalist containers with `surface_container_low`.
6262+- Focus state: 1px ghost border using `primary` at 50% opacity plus subtle glow.
6363+- Avoid thick, fully opaque outlines.
6464+6565+## Dos & Don'ts
6666+6767+### Do
6868+6969+- Preserve large areas of pure `#000000` to maintain visual breathing room.
7070+- Use `secondary_container` for chips/tags to create soft contrast.
7171+- Apply `full` roundedness to key interactive controls (for example, buttons and search bars) to balance the hard screen geometry.
7272+7373+### Do Not
7474+7575+- Use pure white (`#FFFFFF`) for long-form body copy; use `on_secondary_container` (`#c9d1dd`) to reduce eye strain.
7676+- Use fully opaque borders.
7777+- Stack more than three surface-container depth levels; use a backdrop-blur overlay instead.