@formant/aesthetics 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +485 -0
- package/package.json +3 -2
package/DESIGN.md
ADDED
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
# Formant Design System
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Formant's interface is a mission-control environment where data is the primary light source. The Deep Command canvas (`#0A0F11`) creates a near-void -- not darkness for aesthetic effect, but the operational darkness of a control room at 3am, where every illuminated element represents a signal that demands attention. Information emerges from this void through carefully calibrated luminance: Fog Green borders at the threshold of perception, Terminal Amber warnings that cut through like instrument readings, and the steady pulse of Horizon Glow guiding operators through complexity. This is not a dark theme applied to a light design. This is darkness as the native medium of industrial intelligence.
|
|
6
|
+
|
|
7
|
+
The typography system uses three typefaces in strict roles. Space Grotesk handles all display and heading text -- a geometric sans with just enough character to feel architectural rather than generic. At headline sizes, it runs at weight 500-600 with tight letter-spacing (-0.02em), creating dense, confident blocks of text that read like engineering specifications rather than marketing copy. Inter serves as the body workhorse: weight 400 at 16px with 1.6 line-height for comfortable reading on dark backgrounds. JetBrains Mono completes the system as the data voice -- used for eyebrow labels, status tags, and telemetry readouts at 10-11px with 0.1-0.2em tracking and uppercase transform, creating the stenciled, instrument-panel aesthetic of a spacecraft HUD.
|
|
8
|
+
|
|
9
|
+
The color system is deliberately narrow: nine named colors, each with an atmospheric origin. Deep Command and Slate Mist handle 70-80% of all surface area. Fog Green, Ethereal Teal, and Horizon Glow manage the atmospheric middle layer -- borders, active states, and interactive elements. Terminal Amber and Interface Iris appear in under 5% of the UI, reserved exclusively for moments requiring human attention: warnings, AI states, and system intelligence indicators. The border system is entirely opacity-based, using System Neutral at 10-40% opacity to create structure without visual noise -- like wireframes drawn in fog.
|
|
10
|
+
|
|
11
|
+
**Key Characteristics:**
|
|
12
|
+
- Dark-mode-native: `#0A0F11` (Deep Command) base, `#202428` (Slate Mist) cards, never light backgrounds
|
|
13
|
+
- Three-typeface system: Space Grotesk (display), Inter (body), JetBrains Mono (data/labels)
|
|
14
|
+
- Nine-color palette with atmospheric names: Deep Command, Slate Mist, Fog Green, Ethereal Teal, Horizon Glow, Terminal Amber, Interface Iris, Formant White, System Neutral
|
|
15
|
+
- Opacity-based border system: `rgba(163,171,169, 0.1)` to `rgba(163,171,169, 0.4)` -- never solid borders
|
|
16
|
+
- JetBrains Mono uppercase with wide tracking for eyebrow labels -- the mission-control HUD voice
|
|
17
|
+
- Horizon Glow (`#ACC3B3`) as the sole interactive accent -- muted green, not a saturated primary
|
|
18
|
+
- Terminal Amber (`#E8AB7F`) reserved strictly for warnings and attention-demanding labels
|
|
19
|
+
- Interface Iris (`#8B8CF4`) reserved strictly for AI states and system intelligence
|
|
20
|
+
- Fade-up entrance animations (0.7s ease, 24px translateY) with staggered 80ms delays
|
|
21
|
+
- CSS custom properties importable from `formant-properties.css` (Version 2026.1)
|
|
22
|
+
|
|
23
|
+
## 2. Color Palette & Roles
|
|
24
|
+
|
|
25
|
+
### Primary Neutrals (70-80% of all usage)
|
|
26
|
+
|
|
27
|
+
- **Deep Command** (`#0A0F11`, `rgb(10, 15, 17)`) -- `--formant-deep-command`: The void. Primary backgrounds, base layer, the darkness from which all data emerges. Not pure black -- an imperceptible blue-cool undertone that prevents harshness.
|
|
28
|
+
- **Slate Mist** (`#202428`, `rgb(32, 36, 40)`) -- `--formant-slate-mist`: One step above the void. Card backgrounds, secondary surfaces, elevated panels. The lightest a surface should get.
|
|
29
|
+
- **Formant White** (`#F2F3F4`, `rgb(242, 243, 244)`) -- `--formant-formant-white`: Primary text, headlines, and high-emphasis content. Not pure white -- the slight warm cast prevents eye strain on dark backgrounds.
|
|
30
|
+
- **System Neutral** (`#A3ABA9`, `rgb(163, 171, 169)`) -- `--formant-system-neutral`: Body text, captions, secondary content. Also the base color for the opacity-based border system.
|
|
31
|
+
|
|
32
|
+
### Atmospheric Accents (40-60% of remaining usage)
|
|
33
|
+
|
|
34
|
+
- **Fog Green** (`#4B5E53`, `rgb(75, 94, 83)`) -- `--formant-fog-green`: Borders, dividers, muted accents, field name labels in data displays. The structural color -- present everywhere, visible nowhere.
|
|
35
|
+
- **Ethereal Teal** (`#2C4142`, `rgb(44, 65, 66)`) -- `--formant-ethereal-teal`: Active states, hover backgrounds on panels, subtle surface elevation. The "something is happening here" indicator.
|
|
36
|
+
- **Horizon Glow** (`#ACC3B3`, `rgb(172, 195, 179)`) -- `--formant-horizon-glow`: Primary CTAs, interactive elements, success states, links. The sole accent for user-driven actions. Muted, not saturated -- it guides without demanding.
|
|
37
|
+
|
|
38
|
+
### Functional UI Accents (under 5% of all usage)
|
|
39
|
+
|
|
40
|
+
- **Terminal Amber** (`#E8AB7F`, `rgb(232, 171, 127)`) -- `--formant-terminal-amber`: Warnings, eyebrow text, alarm labels, attention-demanding states. The amber glow of a critical instrument reading.
|
|
41
|
+
- **Interface Iris** (`#8B8CF4`, `rgb(139, 140, 244)`) -- `--formant-interface-iris`: AI states, system intelligence indicators, auto-resolution patterns. Reserved for moments where the system acts autonomously.
|
|
42
|
+
|
|
43
|
+
### Semantic Token Mappings
|
|
44
|
+
|
|
45
|
+
**Backgrounds:**
|
|
46
|
+
- `--formant-bg-primary`: Deep Command (`#0A0F11`)
|
|
47
|
+
- `--formant-bg-secondary`: Slate Mist (`#202428`)
|
|
48
|
+
- `--formant-bg-elevated`: Slate Mist (`#202428`)
|
|
49
|
+
|
|
50
|
+
**Text:**
|
|
51
|
+
- `--formant-text-primary`: Formant White (`#F2F3F4`)
|
|
52
|
+
- `--formant-text-secondary`: System Neutral (`#A3ABA9`)
|
|
53
|
+
- `--formant-text-muted`: System Neutral at 60% opacity (`rgba(163, 171, 169, 0.6)`)
|
|
54
|
+
|
|
55
|
+
**Interactive:**
|
|
56
|
+
- `--formant-accent-primary`: Horizon Glow (`#ACC3B3`)
|
|
57
|
+
- `--formant-accent-secondary`: Ethereal Teal (`#2C4142`)
|
|
58
|
+
- `--formant-accent-warning`: Terminal Amber (`#E8AB7F`)
|
|
59
|
+
- `--formant-accent-ai`: Interface Iris (`#8B8CF4`)
|
|
60
|
+
|
|
61
|
+
**Borders (opacity-based system on System Neutral base):**
|
|
62
|
+
- `--formant-border-subtle`: `rgba(163, 171, 169, 0.1)` -- barely visible, structural
|
|
63
|
+
- `--formant-border-default`: `rgba(163, 171, 169, 0.2)` -- standard dividers
|
|
64
|
+
- `--formant-border-strong`: `rgba(163, 171, 169, 0.4)` -- emphasized boundaries
|
|
65
|
+
|
|
66
|
+
**Status:**
|
|
67
|
+
- Success: Horizon Glow (`#ACC3B3`)
|
|
68
|
+
- Warning: Terminal Amber (`#E8AB7F`)
|
|
69
|
+
- Error: Terminal Amber (`#E8AB7F`)
|
|
70
|
+
- Info: Interface Iris (`#8B8CF4`)
|
|
71
|
+
- AI Active: Interface Iris (`#8B8CF4`)
|
|
72
|
+
|
|
73
|
+
## 3. Typography Rules
|
|
74
|
+
|
|
75
|
+
### Font Families
|
|
76
|
+
- **Display / Headlines**: `'Space Grotesk', sans-serif` -- `--formant-font-heading` -- loaded via Google Fonts at weights 300, 500, 600, 700
|
|
77
|
+
- **Body / Interface**: `'Inter', sans-serif` -- `--formant-font-body` -- loaded via Google Fonts at weights 300, 400, 500, 600
|
|
78
|
+
- **Monospace / Data**: `'JetBrains Mono', monospace` -- `--formant-font-mono` -- loaded via Google Fonts at weights 300, 400, 500
|
|
79
|
+
|
|
80
|
+
### Weight Tokens
|
|
81
|
+
- `--formant-weight-light`: 300
|
|
82
|
+
- `--formant-weight-regular`: 400
|
|
83
|
+
- `--formant-weight-medium`: 500
|
|
84
|
+
- `--formant-weight-semibold`: 600
|
|
85
|
+
- `--formant-weight-bold`: 700
|
|
86
|
+
|
|
87
|
+
### Tracking Tokens
|
|
88
|
+
- `--formant-tracking-tight`: -0.02em (display headlines)
|
|
89
|
+
- `--formant-tracking-normal`: 0
|
|
90
|
+
- `--formant-tracking-wide`: 0.02em
|
|
91
|
+
- `--formant-tracking-wider`: 0.08em
|
|
92
|
+
- `--formant-tracking-mono`: 0.1em (JetBrains Mono labels)
|
|
93
|
+
|
|
94
|
+
### Line Height Tokens
|
|
95
|
+
- `--formant-leading-tight`: 1.2 (headlines)
|
|
96
|
+
- `--formant-leading-normal`: 1.6 (body text)
|
|
97
|
+
- `--formant-leading-relaxed`: 1.75 (long-form reading)
|
|
98
|
+
|
|
99
|
+
### Hierarchy
|
|
100
|
+
|
|
101
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Color | Notes |
|
|
102
|
+
|------|------|------|--------|-------------|----------------|-------|-------|
|
|
103
|
+
| Display | Space Grotesk | 96px (clamp 32-96px) | 300 | 1.2 (tight) | -0.02em | Formant White | Hero headlines, maximum impact |
|
|
104
|
+
| H1 | Space Grotesk | 52px (clamp 24-52px) | 500 | 1.2 (tight) | -0.02em | Formant White | Page titles, section headers |
|
|
105
|
+
| H2 | Space Grotesk | 32px (clamp 20-32px) | 500 | 1.2 (tight) | normal | Formant White | Sub-section headings |
|
|
106
|
+
| H3 | Space Grotesk | 20px | 600 | 1.2 (tight) | normal | Horizon Glow | Feature titles, card headers -- accent colored |
|
|
107
|
+
| Body Large | Inter | 17px | 400 | 1.75 (relaxed) | normal | System Neutral | Introductions, section descriptions, max-width 600px |
|
|
108
|
+
| Body | Inter | 16px | 400 | 1.6 | normal | System Neutral | Standard reading text |
|
|
109
|
+
| Body Medium | Inter | 14-16px | 500 | 1.6 | normal | System Neutral | Navigation, emphasized body |
|
|
110
|
+
| Body Semibold | Inter | 14-16px | 600 | 1.6 | normal | Formant White | Strong emphasis, active states |
|
|
111
|
+
| Caption | Inter | 12px | 400 | 1.6 | normal | System Neutral | Metadata, descriptions |
|
|
112
|
+
| Eyebrow | JetBrains Mono | 10px | 400 | 1.4 | 0.2em | Terminal Amber | `text-transform: uppercase`. Section labels, category markers |
|
|
113
|
+
| Tag Label | JetBrains Mono | 11px | 400 | 1.4 | 0.1em | (varies by tag type) | `text-transform: uppercase`. Status tags, badges |
|
|
114
|
+
| Data Label | JetBrains Mono | 10px | 400 | 1.4 | 0.1em | System Neutral | `text-transform: uppercase`. Column headers in data displays |
|
|
115
|
+
| Data Value | JetBrains Mono | 13px | 400 | 2.2 | normal | Formant White | Telemetry readouts, data table values |
|
|
116
|
+
| Data Field | JetBrains Mono | 13px | 400 | 2.2 | normal | Fog Green | Field names in terminal-style data |
|
|
117
|
+
| Button | Inter | 13px | 500 | 1.0 | 0.04em | (varies) | `text-transform: uppercase`. All button text |
|
|
118
|
+
|
|
119
|
+
### Principles
|
|
120
|
+
- **Three voices, strict roles**: Space Grotesk is the architectural voice (headlines that feel engineered). Inter is the human voice (body text that reads clearly on dark backgrounds). JetBrains Mono is the machine voice (data, labels, and system status).
|
|
121
|
+
- **H3 is the accent headline**: Unlike H1/H2 which use Formant White, H3 uses Horizon Glow (`#ACC3B3`) at weight 600 -- the one place in the type hierarchy where color enters the heading system.
|
|
122
|
+
- **Eyebrows are Terminal Amber**: The JetBrains Mono eyebrow pattern (10px, uppercase, 0.2em tracking, Terminal Amber) prefixed by a 24px horizontal rule is the section-opening pattern. Every major content block begins this way.
|
|
123
|
+
- **Data display is its own typographic world**: JetBrains Mono at 13px with 2.2 line-height creates generously spaced terminal-style readouts where field names (Fog Green) and values (Formant White) are clearly distinguished.
|
|
124
|
+
|
|
125
|
+
## 4. Component Stylings
|
|
126
|
+
|
|
127
|
+
### Buttons
|
|
128
|
+
|
|
129
|
+
**Primary (Horizon Glow)**
|
|
130
|
+
- Background: `#ACC3B3`
|
|
131
|
+
- Text: `#0A0F11` (Deep Command)
|
|
132
|
+
- Padding: 12px 24px
|
|
133
|
+
- Radius: 3px
|
|
134
|
+
- Font: Inter 13px weight 500, `text-transform: uppercase`, `letter-spacing: 0.04em`
|
|
135
|
+
- Hover: background shifts to `#ffffff`
|
|
136
|
+
- Use: Primary CTA ("Request Architecture Audit ->")
|
|
137
|
+
|
|
138
|
+
**Secondary (Outlined)**
|
|
139
|
+
- Background: transparent
|
|
140
|
+
- Text: `#ACC3B3` (Horizon Glow)
|
|
141
|
+
- Padding: 12px 24px
|
|
142
|
+
- Radius: 3px
|
|
143
|
+
- Border: `1px solid #ACC3B3`
|
|
144
|
+
- Font: Inter 13px weight 500, `text-transform: uppercase`, `letter-spacing: 0.04em`
|
|
145
|
+
- Hover: background tints to Horizon Glow at ~10% opacity
|
|
146
|
+
- Use: Secondary actions ("Deploy Physical Agent")
|
|
147
|
+
|
|
148
|
+
**Ghost (Neutral)**
|
|
149
|
+
- Background: transparent
|
|
150
|
+
- Text: `#A3ABA9` (System Neutral)
|
|
151
|
+
- Padding: 12px 24px
|
|
152
|
+
- Radius: 3px
|
|
153
|
+
- Border: `1px solid #A3ABA9`
|
|
154
|
+
- Font: Inter 13px weight 500, `text-transform: uppercase`, `letter-spacing: 0.04em`
|
|
155
|
+
- Hover: text and border lighten
|
|
156
|
+
- Use: Tertiary actions ("View Documentation")
|
|
157
|
+
|
|
158
|
+
**Accent (Warning)**
|
|
159
|
+
- Background: `#E8AB7F` (Terminal Amber)
|
|
160
|
+
- Text: `#0A0F11` (Deep Command)
|
|
161
|
+
- Padding: 12px 24px
|
|
162
|
+
- Radius: 3px
|
|
163
|
+
- Font: Inter 13px weight 500, `text-transform: uppercase`, `letter-spacing: 0.04em`
|
|
164
|
+
- Hover: background lightens
|
|
165
|
+
- Use: Alert-driven actions ("Alert: Critical")
|
|
166
|
+
|
|
167
|
+
### Status Tags
|
|
168
|
+
|
|
169
|
+
**Mist Tag (Resolved/Verified)**
|
|
170
|
+
- Background: `rgba(75, 94, 83, 0.3)` (Fog Green at 30%)
|
|
171
|
+
- Text: `#ACC3B3` (Horizon Glow)
|
|
172
|
+
- Border: `1px solid rgba(75, 94, 83, 0.4)`
|
|
173
|
+
- Padding: 4px 12px
|
|
174
|
+
- Radius: 2px
|
|
175
|
+
- Font: JetBrains Mono 11px, `text-transform: uppercase`, `letter-spacing: 0.1em`
|
|
176
|
+
|
|
177
|
+
**Teal Tag (Investigating)**
|
|
178
|
+
- Background: `rgba(44, 65, 66, 0.4)` (Ethereal Teal at 40%)
|
|
179
|
+
- Text: `#ACC3B3` (Horizon Glow)
|
|
180
|
+
- Padding: 4px 12px
|
|
181
|
+
- Radius: 2px
|
|
182
|
+
- Font: JetBrains Mono 11px, `text-transform: uppercase`, `letter-spacing: 0.1em`
|
|
183
|
+
|
|
184
|
+
**Amber Tag (Warning)**
|
|
185
|
+
- Background: `rgba(232, 171, 127, 0.1)` (Terminal Amber at 10%)
|
|
186
|
+
- Text: `#E8AB7F` (Terminal Amber)
|
|
187
|
+
- Padding: 4px 12px
|
|
188
|
+
- Radius: 2px
|
|
189
|
+
- Font: JetBrains Mono 11px, `text-transform: uppercase`, `letter-spacing: 0.1em`
|
|
190
|
+
|
|
191
|
+
**Iris Tag (AI Active)**
|
|
192
|
+
- Background: `rgba(139, 140, 244, 0.1)` (Interface Iris at 10%)
|
|
193
|
+
- Text: `#8B8CF4` (Interface Iris)
|
|
194
|
+
- Padding: 4px 12px
|
|
195
|
+
- Radius: 2px
|
|
196
|
+
- Font: JetBrains Mono 11px, `text-transform: uppercase`, `letter-spacing: 0.1em`
|
|
197
|
+
|
|
198
|
+
### System Alerts
|
|
199
|
+
|
|
200
|
+
**Info Alert**
|
|
201
|
+
- Background: `rgba(44, 65, 66, 0.3)` (Ethereal Teal at 30%)
|
|
202
|
+
- Text: `#ACC3B3` (Horizon Glow)
|
|
203
|
+
- Left indicator: 6px circle, Horizon Glow
|
|
204
|
+
- Font: Inter 14px, weight 400
|
|
205
|
+
- Use: Non-critical system messages, AI confidence reports
|
|
206
|
+
|
|
207
|
+
**Warning Alert**
|
|
208
|
+
- Background: `rgba(232, 171, 127, 0.08)` (Terminal Amber at 8%)
|
|
209
|
+
- Text: `#E8AB7F` (Terminal Amber)
|
|
210
|
+
- Left indicator: 6px circle, Terminal Amber
|
|
211
|
+
- Font: Inter 14px, weight 400
|
|
212
|
+
- Use: Pressure spikes, threshold breaches, human-attention-required
|
|
213
|
+
|
|
214
|
+
**AI Alert**
|
|
215
|
+
- Background: `rgba(139, 140, 244, 0.08)` (Interface Iris at 8%)
|
|
216
|
+
- Text: `#8B8CF4` (Interface Iris)
|
|
217
|
+
- Left indicator: 6px circle, Interface Iris
|
|
218
|
+
- Font: Inter 14px, weight 400
|
|
219
|
+
- Use: Pattern recognition, autonomous resolution, AI-driven actions
|
|
220
|
+
|
|
221
|
+
### Form Inputs
|
|
222
|
+
|
|
223
|
+
- Background: `#0A0F11` (Deep Command)
|
|
224
|
+
- Border: `1px solid rgba(163, 171, 169, 0.2)`, radius 3px
|
|
225
|
+
- Text: Inter 14px, Formant White (`#F2F3F4`)
|
|
226
|
+
- Placeholder: `rgba(163, 171, 169, 0.5)` (System Neutral at 50%)
|
|
227
|
+
- Focus: border changes to `#ACC3B3` (Horizon Glow)
|
|
228
|
+
- Label: JetBrains Mono 10px, System Neutral, `text-transform: uppercase`, `letter-spacing: 0.15em`
|
|
229
|
+
|
|
230
|
+
### Data Display (Terminal Style)
|
|
231
|
+
|
|
232
|
+
- Font: JetBrains Mono 13px, line-height 2.2
|
|
233
|
+
- Header row: System Neutral (`#A3ABA9`), `letter-spacing: 0.1em`
|
|
234
|
+
- Field names: Fog Green (`#4B5E53`)
|
|
235
|
+
- Standard values: Formant White (`#F2F3F4`)
|
|
236
|
+
- Status values: color-coded -- Horizon Glow (resolved/online), Interface Iris (AI-verified/auto), Terminal Amber (compounding/warning)
|
|
237
|
+
- Row separation: implicit through generous line-height, no visible dividers
|
|
238
|
+
|
|
239
|
+
### Navigation
|
|
240
|
+
|
|
241
|
+
- Position: fixed, height 64px
|
|
242
|
+
- Background: `rgba(10, 15, 17, 0.85)` (Deep Command at 85% opacity)
|
|
243
|
+
- Backdrop: `blur(16px)`
|
|
244
|
+
- Links: Inter 14px weight 500, System Neutral text
|
|
245
|
+
- Active/hover: text shifts to Formant White
|
|
246
|
+
- CTA: Primary button (Horizon Glow) right-aligned
|
|
247
|
+
- Logo: Formant geometric mark left-aligned
|
|
248
|
+
- Responsive: nav links hidden below 900px
|
|
249
|
+
|
|
250
|
+
### Image Treatment
|
|
251
|
+
|
|
252
|
+
- Product screenshots and atmospheric photography on dark backgrounds
|
|
253
|
+
- Cinematic wide-angle shots: misty landscapes, command consoles, operational environments
|
|
254
|
+
- Video: background loop in hero, hover-to-play in visual library sections
|
|
255
|
+
- Still photography: desaturated, atmospheric -- the "Generative Horizon" visual pillar
|
|
256
|
+
|
|
257
|
+
## 5. Layout Principles
|
|
258
|
+
|
|
259
|
+
### Spacing System
|
|
260
|
+
|
|
261
|
+
| Token | Value | Pixels | Use |
|
|
262
|
+
|-------|-------|--------|-----|
|
|
263
|
+
| `--formant-space-1` | 0.25rem | 4px | Micro gaps, icon padding |
|
|
264
|
+
| `--formant-space-2` | 0.5rem | 8px | Tight element spacing |
|
|
265
|
+
| `--formant-space-3` | 0.75rem | 12px | Tag/badge internal padding |
|
|
266
|
+
| `--formant-space-4` | 1rem | 16px | Standard element spacing |
|
|
267
|
+
| `--formant-space-5` | 1.25rem | 20px | Comfortable spacing |
|
|
268
|
+
| `--formant-space-6` | 1.5rem | 24px | Card internal padding |
|
|
269
|
+
| `--formant-space-8` | 2rem | 32px | Section sub-spacing |
|
|
270
|
+
| `--formant-space-10` | 2.5rem | 40px | Major element gaps |
|
|
271
|
+
| `--formant-space-12` | 3rem | 48px | Section transitions |
|
|
272
|
+
| `--formant-space-16` | 4rem | 64px | Section padding (mobile) |
|
|
273
|
+
| `--formant-space-20` | 5rem | 80px | Section padding (tablet) |
|
|
274
|
+
| `--formant-space-24` | 6rem | 96px | Section padding (desktop) |
|
|
275
|
+
|
|
276
|
+
### Grid & Container
|
|
277
|
+
|
|
278
|
+
- Max content width: 1200px, centered with `margin: 0 auto`
|
|
279
|
+
- Horizontal padding: 40px (20px on mobile)
|
|
280
|
+
- Hero: full viewport height (min 700px), centered single-column
|
|
281
|
+
- Feature sections: 2-3 column grids for cards
|
|
282
|
+
- Architecture layers: full-width stacked bands
|
|
283
|
+
- Data displays: full-width terminal-style blocks
|
|
284
|
+
|
|
285
|
+
### Section Pattern
|
|
286
|
+
|
|
287
|
+
Every major content section follows this structure:
|
|
288
|
+
1. **Section label**: JetBrains Mono 10px, Terminal Amber, uppercase, 0.2em tracking, prefixed by a 24px horizontal rule
|
|
289
|
+
2. **Section title**: Space Grotesk 500, 32-52px (clamp), Formant White, tight leading
|
|
290
|
+
3. **Section description**: Inter 17px, System Neutral, max-width 600px, 1.75 line-height
|
|
291
|
+
4. **Content area**: specific to section type
|
|
292
|
+
|
|
293
|
+
### Whitespace Philosophy
|
|
294
|
+
|
|
295
|
+
- **Darkness IS the whitespace**: On Formant's Deep Command canvas, empty space isn't white -- it's the operational void between signal sources. The dark background provides natural section separation without dividers.
|
|
296
|
+
- **Compressed headlines, expanded surroundings**: Space Grotesk at 52px with -0.02em tracking is dense and authoritative, but sits within 120px vertical section padding. The contrast between typographic density and spatial generosity creates the "architectural authority" of the brand.
|
|
297
|
+
- **Section isolation**: Each content section is separated by 120px vertical padding with no visible borders or dividers. Horizontal gradient dividers (`linear-gradient(90deg, transparent, rgba(163,171,169,0.2), transparent)`) appear only between major thematic shifts.
|
|
298
|
+
|
|
299
|
+
### Border Radius Scale
|
|
300
|
+
|
|
301
|
+
| Token | Value | Use |
|
|
302
|
+
|-------|-------|-----|
|
|
303
|
+
| `--formant-radius-none` | 0px | Sharp edges, dividers |
|
|
304
|
+
| `--formant-radius-sm` | 2px | Tags, badges, small elements |
|
|
305
|
+
| `--formant-radius-md` | 4px | Standard containers, code blocks |
|
|
306
|
+
| `--formant-radius-lg` | 6px | Larger cards, panels |
|
|
307
|
+
| `--formant-radius-xl` | 8px | Featured cards, hero elements |
|
|
308
|
+
| `--formant-radius-full` | 9999px | Circular avatars, status dots |
|
|
309
|
+
|
|
310
|
+
## 6. Depth & Elevation
|
|
311
|
+
|
|
312
|
+
| Level | Treatment | Use |
|
|
313
|
+
|-------|-----------|-----|
|
|
314
|
+
| Void (Level 0) | No shadow, `#0A0F11` background | Page background, deepest canvas |
|
|
315
|
+
| Surface (Level 1) | `#202428` background, `1px solid rgba(163,171,169,0.1)` border | Cards, panels, elevated containers |
|
|
316
|
+
| Interactive (Level 2) | `rgba(44,65,66,0.2)` background tint on hover | Hover states, active panels, icon cards |
|
|
317
|
+
| Glow (Level 3) | `0 0 20px rgba(172,195,179,0.15)` | `--formant-shadow-glow`. Featured elements, primary CTAs on hover |
|
|
318
|
+
| Standard (Level 1b) | `0 1px 2px rgba(0,0,0,0.05)` | `--formant-shadow-sm`. Subtle micro-elevation |
|
|
319
|
+
| Elevated (Level 2b) | `0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06)` | `--formant-shadow-md`. Dropdowns, popovers |
|
|
320
|
+
| Prominent (Level 3b) | `0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05)` | `--formant-shadow-lg`. Modals, dialogs |
|
|
321
|
+
|
|
322
|
+
**Shadow Philosophy**: On Formant's dark surfaces, traditional dark shadows are nearly invisible. Depth is communicated through two mechanisms: (1) background luminance stepping -- each level increases surface brightness from Deep Command (`#0A0F11`) through Slate Mist (`#202428`) to Ethereal Teal tints, and (2) the Horizon Glow shadow (`rgba(172,195,179,0.15)`), a brand-colored glow that makes featured elements emit the same muted green light as the primary accent. This creates a mission-control aesthetic where active elements literally glow against the operational void. Borders at varying opacities (10-40%) serve as the primary structural depth indicator, not shadows.
|
|
323
|
+
|
|
324
|
+
## 7. Do's and Don'ts
|
|
325
|
+
|
|
326
|
+
### Do
|
|
327
|
+
- Use Deep Command (`#0A0F11`) as the base background for all surfaces -- dark-first is non-negotiable
|
|
328
|
+
- Use the three-typeface system strictly: Space Grotesk for headlines, Inter for body, JetBrains Mono for data/labels
|
|
329
|
+
- Apply JetBrains Mono uppercase with 0.1-0.2em tracking for ALL labels, tags, and eyebrows -- the HUD voice
|
|
330
|
+
- Use Terminal Amber (`#E8AB7F`) for eyebrow labels prefixed by a horizontal rule -- the section-opening pattern
|
|
331
|
+
- Use opacity-based borders (`rgba(163,171,169, 0.1-0.4)`) instead of solid colored borders
|
|
332
|
+
- Reserve Horizon Glow (`#ACC3B3`) for interactive elements and CTAs only -- it's the guide, not decoration
|
|
333
|
+
- Reserve Terminal Amber for warnings and attention states -- it's the alarm, not an accent
|
|
334
|
+
- Reserve Interface Iris (`#8B8CF4`) strictly for AI-driven states -- it signals machine intelligence
|
|
335
|
+
- Use `#F2F3F4` (Formant White) for primary text, not pure `#ffffff`
|
|
336
|
+
- Keep border-radius between 2-8px -- the system is architectural, not playful
|
|
337
|
+
- Use the section pattern: eyebrow -> headline -> description -> content
|
|
338
|
+
- Use Formant's brand vocabulary: "The Interface" not "Dashboard", "Physical Agent" not "Robot"
|
|
339
|
+
- Capitalize architectural entities: THE BRAIN, THE BODY, THE CONTEXT
|
|
340
|
+
- Import `formant-properties.css` for all design tokens
|
|
341
|
+
|
|
342
|
+
### Don't
|
|
343
|
+
- Don't use light/white backgrounds -- Formant has no light mode
|
|
344
|
+
- Don't use saturated, bright accent colors -- the palette is muted and atmospheric
|
|
345
|
+
- Don't use bold (700) for Space Grotesk body text -- max weight for body is 600
|
|
346
|
+
- Don't use solid colored borders on dark backgrounds -- always use the opacity-based system
|
|
347
|
+
- Don't apply Terminal Amber or Interface Iris decoratively -- they are functional status colors only
|
|
348
|
+
- Don't use pill-shaped buttons (9999px radius) -- buttons use 3px radius, architecturally sharp
|
|
349
|
+
- Don't use "friendly" or bright SaaS aesthetics -- Formant is mission-control, not consumer software
|
|
350
|
+
- Don't use sentence case for labels or tags -- JetBrains Mono labels are always uppercase
|
|
351
|
+
- Don't say "Dashboard" -- say "The Interface" (active command, not passive viewing)
|
|
352
|
+
- Don't say "Robot" -- say "Physical Agent" (intelligent entity, not hardware)
|
|
353
|
+
- Don't say "Automation" -- say "Bounded Autonomy" (human-in-the-loop, not replacement)
|
|
354
|
+
- Don't say "Demo" -- say "Architecture Audit" (diagnostic engagement, not a pitch)
|
|
355
|
+
- Don't use large radius (12px+) on cards or containers -- the aesthetic is architectural precision
|
|
356
|
+
- Don't use positive letter-spacing on Space Grotesk headlines -- tracking is tight (-0.02em) or normal
|
|
357
|
+
- Don't introduce warm colors (orange, yellow, red) beyond Terminal Amber -- the palette is cool-atmospheric
|
|
358
|
+
|
|
359
|
+
## 8. Responsive Behavior
|
|
360
|
+
|
|
361
|
+
### Breakpoints
|
|
362
|
+
|
|
363
|
+
| Name | Width | Key Changes |
|
|
364
|
+
|------|-------|-------------|
|
|
365
|
+
| Mobile | <600px | Single column, voice principles stack, palette rows stack, icon grid 3-col, container padding 20px, section padding 80px |
|
|
366
|
+
| Tablet | 600-900px | Two-column grids begin, video grid 2-col, stills grid 2-col, voice principles 2-col |
|
|
367
|
+
| Desktop | >900px | Full layout, multi-column grids, nav links visible, container padding 40px, section padding 120px |
|
|
368
|
+
|
|
369
|
+
### Touch Targets
|
|
370
|
+
- Buttons: 12px 24px padding provides comfortable 48px+ touch height
|
|
371
|
+
- Navigation links: 14px font with adequate spacing
|
|
372
|
+
- Tags: 4px 12px padding at minimum
|
|
373
|
+
- Icon cards: generous padding with hover feedback (`translateY(-3px)`)
|
|
374
|
+
|
|
375
|
+
### Collapsing Strategy
|
|
376
|
+
- Hero: Display 96px -> 32px via `clamp()`, maintains viewport height (min 700px)
|
|
377
|
+
- H1: 52px -> 24px via `clamp()`
|
|
378
|
+
- H2: 32px -> 20px via `clamp()`
|
|
379
|
+
- Navigation: horizontal links + CTA -> nav links hidden below 900px
|
|
380
|
+
- Feature grids: 3-column -> 2-column -> single column stacked
|
|
381
|
+
- Architecture layers: maintain full-width stacked layout at all sizes
|
|
382
|
+
- Data displays: maintain terminal-style formatting, may horizontally scroll
|
|
383
|
+
- Section padding: 120px -> 80px on mobile
|
|
384
|
+
- Container padding: 40px -> 20px on mobile
|
|
385
|
+
|
|
386
|
+
### Image & Video Behavior
|
|
387
|
+
- Hero video: maintains full-viewport background at all sizes
|
|
388
|
+
- Visual library: grid collapses from multi-column to single-column
|
|
389
|
+
- Still photography: maintains atmospheric aspect ratios, stacks vertically
|
|
390
|
+
- Videos: hover-to-play on desktop, tap-to-play on mobile
|
|
391
|
+
|
|
392
|
+
### Animation Behavior
|
|
393
|
+
- Fade-up animations maintained across all breakpoints
|
|
394
|
+
- IntersectionObserver threshold: 10% visible, -40px root margin
|
|
395
|
+
- Stagger delay: groups of 4 elements, 80ms incremental delay
|
|
396
|
+
- Transition: `opacity 0.7s ease, transform 0.7s ease`
|
|
397
|
+
|
|
398
|
+
## 9. Agent Prompt Guide
|
|
399
|
+
|
|
400
|
+
### Quick Color Reference
|
|
401
|
+
- Page background: Deep Command (`#0A0F11`)
|
|
402
|
+
- Card background: Slate Mist (`#202428`)
|
|
403
|
+
- Heading text: Formant White (`#F2F3F4`)
|
|
404
|
+
- Body text: System Neutral (`#A3ABA9`)
|
|
405
|
+
- Muted text: System Neutral at 60% (`rgba(163,171,169,0.6)`)
|
|
406
|
+
- Primary CTA: Horizon Glow (`#ACC3B3`)
|
|
407
|
+
- Warning: Terminal Amber (`#E8AB7F`)
|
|
408
|
+
- AI state: Interface Iris (`#8B8CF4`)
|
|
409
|
+
- Border (subtle): `rgba(163,171,169,0.1)`
|
|
410
|
+
- Border (default): `rgba(163,171,169,0.2)`
|
|
411
|
+
- Border (strong): `rgba(163,171,169,0.4)`
|
|
412
|
+
- Glow shadow: `0 0 20px rgba(172,195,179,0.15)`
|
|
413
|
+
|
|
414
|
+
### Example Component Prompts
|
|
415
|
+
|
|
416
|
+
- **Hero section**: "Create a hero on `#0A0F11` background, full viewport height (min 700px). Eyebrow label: JetBrains Mono 10px, `#E8AB7F`, uppercase, letter-spacing 0.2em, preceded by a 24px horizontal rule in Terminal Amber. Headline: Space Grotesk 52px weight 500, line-height 1.2, letter-spacing -0.02em, `#F2F3F4`. Description: Inter 17px weight 400, line-height 1.75, `#A3ABA9`, max-width 600px. Primary CTA button: `#ACC3B3` bg, `#0A0F11` text, 12px 24px padding, 3px radius, Inter 13px weight 500 uppercase."
|
|
417
|
+
|
|
418
|
+
- **Card**: "Design a card on `#202428` background with `1px solid rgba(163,171,169,0.1)` border, 4px radius. Hover: border changes to `rgba(172,195,179,0.3)`, background shifts to `rgba(44,65,66,0.2)`, `scale(1.01)`. Title: Space Grotesk 20px weight 600, `#ACC3B3`. Body: Inter 14px weight 400, `#A3ABA9`."
|
|
419
|
+
|
|
420
|
+
- **Status tag**: "Build an AI status tag: `rgba(139,140,244,0.1)` background, `#8B8CF4` text, 4px 12px padding, 2px radius, JetBrains Mono 11px, uppercase, letter-spacing 0.1em. Text: 'AI ACTIVE'."
|
|
421
|
+
|
|
422
|
+
- **System alert**: "Create a warning alert: `rgba(232,171,127,0.08)` background, `#E8AB7F` text. Left indicator: 6px circle in Terminal Amber. Body: Inter 14px weight 400. Text: 'Pressure spike detected on Line 7. Operator review required.'"
|
|
423
|
+
|
|
424
|
+
- **Navigation**: "Create navigation: fixed position, 64px height, `rgba(10,15,17,0.85)` background with `backdrop-filter: blur(16px)`. Links: Inter 14px weight 500, `#A3ABA9` text, hover to `#F2F3F4`. Primary CTA right-aligned: Horizon Glow button. Bottom border: `1px solid rgba(163,171,169,0.1)`."
|
|
425
|
+
|
|
426
|
+
- **Data display**: "Build a terminal-style data display: JetBrains Mono 13px, line-height 2.2. Header row: `#A3ABA9`, letter-spacing 0.1em. Field names: `#4B5E53` (Fog Green). Values: `#F2F3F4`. Status values: `#ACC3B3` for 'RESOLVED', `#8B8CF4` for 'AI-VERIFIED', `#E8AB7F` for 'WARNING'."
|
|
427
|
+
|
|
428
|
+
- **Section opener**: "Create a section opener: (1) JetBrains Mono 10px, `#E8AB7F`, uppercase, 0.2em tracking, with a 24px horizontal rule prefix in the same color. (2) Space Grotesk weight 500, 32px (clamp 20-32px), `#F2F3F4`, line-height 1.2. (3) Inter 17px weight 400, `#A3ABA9`, line-height 1.75, max-width 600px."
|
|
429
|
+
|
|
430
|
+
### Iteration Guide
|
|
431
|
+
1. Always start with `#0A0F11` -- every surface begins from darkness
|
|
432
|
+
2. Three typefaces, strict roles: Space Grotesk (announce), Inter (explain), JetBrains Mono (label/data)
|
|
433
|
+
3. Borders are opacity-based: `rgba(163,171,169, 0.1/0.2/0.4)` -- never solid colors on dark
|
|
434
|
+
4. Only three accent colors exist: Horizon Glow (interaction), Terminal Amber (warning), Interface Iris (AI)
|
|
435
|
+
5. Buttons are 3px radius, uppercase Inter 13px -- architecturally sharp, never pill-shaped
|
|
436
|
+
6. Tags are 2px radius, uppercase JetBrains Mono 11px -- the machine voice
|
|
437
|
+
7. Every section begins with the eyebrow pattern: horizontal rule + JetBrains Mono + Terminal Amber
|
|
438
|
+
8. Import `formant-properties.css` to get all tokens as CSS custom properties
|
|
439
|
+
9. Use Formant vocabulary: The Interface, Physical Agent, Bounded Autonomy, Architecture Audit
|
|
440
|
+
10. The glow shadow (`0 0 20px rgba(172,195,179,0.15)`) is the signature depth effect -- use it on featured CTAs and highlighted elements
|
|
441
|
+
|
|
442
|
+
## 10. Voice, Tone & Brand Vocabulary
|
|
443
|
+
|
|
444
|
+
### Voice Principles
|
|
445
|
+
|
|
446
|
+
1. **Architectural Authority**: Speak with the precision of an engineer and the vision of an architect. Short, punchy, declarative sentences. Treat core entities (THE BRAIN, THE BODY, THE CONTEXT) as proper architectural constructs.
|
|
447
|
+
2. **Cinematic Clarity**: Atmospheric yet grounded language. Use metaphors of light, mist, and horizons. Frame the future of operations as a single, unified pulse.
|
|
448
|
+
3. **Mission Control Tone**: Calm, steady, grounded. Do not perform urgency or certainty. Frame challenges as a "Visibility Crisis" -- a loss of human meaning, not just data.
|
|
449
|
+
4. **Compounding Intelligence**: Position the system as an irreplaceable asset that learns over time. "Success isn't hired -- it's configured."
|
|
450
|
+
5. **Neutral Convener**: Formant is the essential meeting point. Speak with authority but without ego.
|
|
451
|
+
|
|
452
|
+
### Brand Glossary
|
|
453
|
+
|
|
454
|
+
| Formant Term | Replaces | Meaning |
|
|
455
|
+
|---|---|---|
|
|
456
|
+
| **The Interface** | "Dashboard" | Active command -- not passive viewing |
|
|
457
|
+
| **Physical Agent** | "Robot" | Elevates hardware to intelligent entity |
|
|
458
|
+
| **Bounded Autonomy** | "Automation" | Control, safety, human-in-the-loop precision |
|
|
459
|
+
| **Algorithmic Propagation** | "Deployment" | Speed of intelligence, not hardware logistics |
|
|
460
|
+
| **Architecture Audit** | "Demo" / "Sales Call" | Diagnostic engagement, not a pitch |
|
|
461
|
+
| **Systemic Command** | (end-state) | From operational chaos to total command |
|
|
462
|
+
|
|
463
|
+
## 11. Icon System
|
|
464
|
+
|
|
465
|
+
### Specifications
|
|
466
|
+
- Format: SVG, 64x64 viewBox
|
|
467
|
+
- Stroke: 2px weight, `stroke-linecap: round`
|
|
468
|
+
- Style: Open and atmospheric -- no fills in UI contexts
|
|
469
|
+
- Default color: Horizon Glow (`#ACC3B3`)
|
|
470
|
+
- Warning icons: Terminal Amber (`#E8AB7F`)
|
|
471
|
+
- AI icons: Interface Iris (`#8B8CF4`)
|
|
472
|
+
|
|
473
|
+
### Size Scale
|
|
474
|
+
|
|
475
|
+
| Size | Pixels | Use |
|
|
476
|
+
|------|--------|-----|
|
|
477
|
+
| Inline | 16px | Inline with text |
|
|
478
|
+
| Label | 24px | Next to UI labels |
|
|
479
|
+
| Button | 32px | Inside buttons |
|
|
480
|
+
| Card | 48px | Card illustrations |
|
|
481
|
+
| Feature | 64px | Feature section icons |
|
|
482
|
+
| Hero | 96px | Hero-level display |
|
|
483
|
+
|
|
484
|
+
### Available Icons
|
|
485
|
+
Physical Agent, Fleet, Mission, Guardrail, The Brain, Context, The Interface, Anomaly (amber), Resolution, Telemetry, Blueprint, Digital Twin, Operator, Horizon, Command, Propagate, FDE, Alarm (amber), Savings, Bounded Autonomy (iris)
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formant/aesthetics",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Classless CSS framework based on the Formant Design System. Styles standard HTML elements without requiring any classes.",
|
|
5
5
|
"main": "formant-aesthetics.css",
|
|
6
6
|
"files": [
|
|
7
7
|
"formant-aesthetics.css",
|
|
8
|
-
"README.md"
|
|
8
|
+
"README.md",
|
|
9
|
+
"DESIGN.md"
|
|
9
10
|
],
|
|
10
11
|
"scripts": {
|
|
11
12
|
"serve": "npx serve .",
|