@whykusanagi/corrupted-theme 0.1.2 → 0.1.3
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/CHANGELOG.md +133 -0
- package/README.md +6 -0
- package/docs/CAPABILITIES.md +209 -0
- package/docs/CHARACTER_LEVEL_CORRUPTION.md +264 -0
- package/docs/CORRUPTION_PHRASES.md +529 -0
- package/docs/FUTURE_WORK.md +189 -0
- package/docs/IMPLEMENTATION_VALIDATION.md +401 -0
- package/docs/LLM_PROVIDERS.md +345 -0
- package/docs/PERSONALITY.md +128 -0
- package/docs/ROADMAP.md +266 -0
- package/docs/ROUTING.md +324 -0
- package/docs/STYLE_GUIDE.md +605 -0
- package/docs/brand/BRAND_OVERVIEW.md +413 -0
- package/docs/brand/COLOR_SYSTEM.md +583 -0
- package/docs/brand/DESIGN_TOKENS.md +1009 -0
- package/docs/brand/TRANSLATION_FAILURE_AESTHETIC.md +525 -0
- package/docs/brand/TYPOGRAPHY.md +624 -0
- package/docs/components/ANIMATION_GUIDELINES.md +901 -0
- package/docs/components/COMPONENT_LIBRARY.md +1061 -0
- package/docs/components/GLASSMORPHISM.md +602 -0
- package/docs/components/INTERACTIVE_STATES.md +766 -0
- package/docs/governance/CONTRIBUTION_GUIDELINES.md +593 -0
- package/docs/governance/DESIGN_SYSTEM_GOVERNANCE.md +451 -0
- package/docs/governance/VERSION_MANAGEMENT.md +447 -0
- package/docs/governance/VERSION_REFERENCES.md +229 -0
- package/docs/platforms/CLI_IMPLEMENTATION.md +1025 -0
- package/docs/platforms/COMPONENT_MAPPING.md +579 -0
- package/docs/platforms/NPM_PACKAGE.md +854 -0
- package/docs/platforms/WEB_IMPLEMENTATION.md +1221 -0
- package/docs/standards/ACCESSIBILITY.md +715 -0
- package/docs/standards/ANTI_PATTERNS.md +554 -0
- package/docs/standards/SPACING_SYSTEM.md +549 -0
- package/examples/button.html +1 -1
- package/examples/card.html +1 -1
- package/examples/form.html +1 -1
- package/examples/index.html +2 -2
- package/examples/layout.html +1 -1
- package/examples/nikke-team-builder.html +1 -1
- package/examples/showcase-complete.html +840 -15
- package/examples/showcase.html +1 -1
- package/package.json +4 -2
- package/src/css/components.css +676 -0
- package/src/lib/character-corruption.js +563 -0
- package/src/lib/components.js +283 -0
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
# Celeste Brand System - Typography
|
|
2
|
+
|
|
3
|
+
**Version**: 1.0.0
|
|
4
|
+
**Last Updated**: 2025-12-13
|
|
5
|
+
**Status**: 🔴 **CRITICAL FOUNDATION DOCUMENT**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Celeste's typography system balances **technical clarity** with **corrupted aesthetics**:
|
|
12
|
+
- **System fonts** for cross-platform consistency
|
|
13
|
+
- **Japanese character support** (Kanji, Katakana, Hiragana)
|
|
14
|
+
- **Monospace defaults** for CLI terminal
|
|
15
|
+
- **Responsive scale** (mobile to desktop)
|
|
16
|
+
- **Semantic hierarchy** (H1-H6, body, labels)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Font Families
|
|
21
|
+
|
|
22
|
+
### Base (Web/UI)
|
|
23
|
+
|
|
24
|
+
**Stack**:
|
|
25
|
+
```css
|
|
26
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
|
27
|
+
'Helvetica Neue', Arial, sans-serif;
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Rationale**:
|
|
31
|
+
- **System-native performance** (no web font loading)
|
|
32
|
+
- **Cross-platform consistency** (macOS, Windows, Android)
|
|
33
|
+
- **Excellent Unicode support** (including Japanese)
|
|
34
|
+
- **High readability** at small sizes
|
|
35
|
+
|
|
36
|
+
**Token**: `--font-family-base`
|
|
37
|
+
|
|
38
|
+
### Japanese Support
|
|
39
|
+
|
|
40
|
+
**Stack**:
|
|
41
|
+
```css
|
|
42
|
+
font-family: 'Hiragino Sans', 'Yu Gothic', 'Meiryo',
|
|
43
|
+
'MS PGothic', sans-serif;
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Fallback Chain**:
|
|
47
|
+
1. **Hiragino Sans** (macOS default, excellent rendering)
|
|
48
|
+
2. **Yu Gothic** (Windows 10+, modern)
|
|
49
|
+
3. **Meiryo** (Windows 7-10, readable)
|
|
50
|
+
4. **MS PGothic** (Legacy Windows, last resort)
|
|
51
|
+
5. **sans-serif** (System fallback)
|
|
52
|
+
|
|
53
|
+
**Token**: `--font-family-japanese`
|
|
54
|
+
|
|
55
|
+
**Combined Stack** (for mixed English/Japanese):
|
|
56
|
+
```css
|
|
57
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
|
58
|
+
'Hiragino Sans', 'Yu Gothic', 'Meiryo',
|
|
59
|
+
'Helvetica Neue', Arial, sans-serif;
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Monospace (CLI/Code)
|
|
63
|
+
|
|
64
|
+
**Stack**:
|
|
65
|
+
```css
|
|
66
|
+
font-family: 'SF Mono', 'Monaco', 'Consolas',
|
|
67
|
+
'Liberation Mono', monospace;
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Rationale**:
|
|
71
|
+
- **SF Mono** (macOS default, best terminal font)
|
|
72
|
+
- **Monaco** (macOS legacy)
|
|
73
|
+
- **Consolas** (Windows default)
|
|
74
|
+
- **Liberation Mono** (Linux fallback)
|
|
75
|
+
- **monospace** (System fallback)
|
|
76
|
+
|
|
77
|
+
**Token**: `--font-family-monospace`
|
|
78
|
+
|
|
79
|
+
**CLI Usage**: Terminal automatically uses system monospace font
|
|
80
|
+
- No font-family specification needed in Go/Bubble Tea
|
|
81
|
+
- UTF-8 must be enabled for Japanese character rendering
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Font Size Scale
|
|
86
|
+
|
|
87
|
+
### Responsive Typography (Web)
|
|
88
|
+
|
|
89
|
+
Using **rem units** (1rem = 16px base) for scalability.
|
|
90
|
+
|
|
91
|
+
| Token | Size (rem) | Size (px) | Use Case |
|
|
92
|
+
|-------|------------|-----------|----------|
|
|
93
|
+
| `font-size-xs` | 0.75rem | 12px | Captions, timestamps, metadata |
|
|
94
|
+
| `font-size-sm` | 0.875rem | 14px | Small labels, secondary text |
|
|
95
|
+
| `font-size-base` | 1rem | 16px | Body text (default) |
|
|
96
|
+
| `font-size-lg` | 1.125rem | 18px | Large body text, subheadings |
|
|
97
|
+
| `font-size-xl` | 1.25rem | 20px | H6, small headers |
|
|
98
|
+
| `font-size-2xl` | 1.5rem | 24px | H5 |
|
|
99
|
+
| `font-size-3xl` | 1.875rem | 30px | H4 |
|
|
100
|
+
| `font-size-4xl` | 2.25rem | 36px | H3 |
|
|
101
|
+
| `font-size-5xl` | 3rem | 48px | H2 |
|
|
102
|
+
| `font-size-6xl` | 3.75rem | 60px | H1, hero text |
|
|
103
|
+
|
|
104
|
+
**Responsive Scaling**:
|
|
105
|
+
```css
|
|
106
|
+
/* Mobile (320px-640px) */
|
|
107
|
+
html { font-size: 14px; } /* Base = 14px */
|
|
108
|
+
|
|
109
|
+
/* Tablet (641px-1024px) */
|
|
110
|
+
@media (min-width: 641px) {
|
|
111
|
+
html { font-size: 15px; } /* Base = 15px */
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Desktop (1025px+) */
|
|
115
|
+
@media (min-width: 1025px) {
|
|
116
|
+
html { font-size: 16px; } /* Base = 16px */
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
This ensures text scales proportionally across breakpoints.
|
|
121
|
+
|
|
122
|
+
### Fixed Typography (CLI)
|
|
123
|
+
|
|
124
|
+
Terminal font size is **controlled by terminal emulator**, not the application.
|
|
125
|
+
|
|
126
|
+
**Typical defaults**:
|
|
127
|
+
- **macOS Terminal.app**: 12pt Monaco
|
|
128
|
+
- **iTerm2**: 12pt SF Mono
|
|
129
|
+
- **Windows Terminal**: 12pt Consolas
|
|
130
|
+
- **VS Code Terminal**: 14pt Monaco
|
|
131
|
+
|
|
132
|
+
**Celeste CLI font size strategy**:
|
|
133
|
+
- Use terminal's default size
|
|
134
|
+
- Scale with relative units (line count, not px)
|
|
135
|
+
- Assume 80-120 character terminal width
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Font Weight Hierarchy
|
|
140
|
+
|
|
141
|
+
| Token | Weight | Numeric | Use Case |
|
|
142
|
+
|-------|--------|---------|----------|
|
|
143
|
+
| `font-weight-normal` | normal | 400 | Body text, default |
|
|
144
|
+
| `font-weight-medium` | medium | 500 | Slight emphasis, labels |
|
|
145
|
+
| `font-weight-semibold` | semibold | 600 | Section headers, buttons |
|
|
146
|
+
| `font-weight-bold` | bold | 700 | Strong emphasis, H3-H6 |
|
|
147
|
+
| `font-weight-black` | black | 900 | Hero text, H1-H2, dashboard titles |
|
|
148
|
+
|
|
149
|
+
**Usage Guidelines**:
|
|
150
|
+
- **Normal (400)**: All body text, paragraphs, descriptions
|
|
151
|
+
- **Medium (500)**: Input labels, navigation links, breadcrumbs
|
|
152
|
+
- **Semibold (600)**: Section headers, card titles, button text
|
|
153
|
+
- **Bold (700)**: Main headings (H3-H6), emphasis within text
|
|
154
|
+
- **Black (900)**: Hero headings (H1-H2), dashboard headers
|
|
155
|
+
|
|
156
|
+
**Japanese Text Weights**:
|
|
157
|
+
- Japanese fonts often have **limited weight options**
|
|
158
|
+
- Stick to 400 (normal) and 700 (bold) for maximum compatibility
|
|
159
|
+
- Avoid 900 (black) for Japanese-only text
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Line Height (Leading)
|
|
164
|
+
|
|
165
|
+
| Token | Value | Use Case |
|
|
166
|
+
|-------|-------|----------|
|
|
167
|
+
| `line-height-tight` | 1.2 | Headers (H1-H6), tight spacing |
|
|
168
|
+
| `line-height-normal` | 1.5 | Body text (default), optimal readability |
|
|
169
|
+
| `line-height-relaxed` | 1.8 | Long-form content, documentation |
|
|
170
|
+
|
|
171
|
+
**Guidelines**:
|
|
172
|
+
- **Headers**: Use `1.2` to maintain visual density
|
|
173
|
+
- **Body text**: Use `1.5` for comfortable reading
|
|
174
|
+
- **Long-form**: Use `1.8` for reduced eye strain
|
|
175
|
+
|
|
176
|
+
**CLI Line Height**:
|
|
177
|
+
- Terminal line height is **fixed** (typically 1.2-1.4)
|
|
178
|
+
- Not customizable in Go/Bubble Tea
|
|
179
|
+
- Design for 1-2 line spacing between sections
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Letter Spacing (Tracking)
|
|
184
|
+
|
|
185
|
+
| Token | Value | Use Case |
|
|
186
|
+
|-------|-------|----------|
|
|
187
|
+
| `letter-spacing-tighter` | -0.05em | Large headers (H1-H2) |
|
|
188
|
+
| `letter-spacing-tight` | -0.025em | Medium headers (H3-H4) |
|
|
189
|
+
| `letter-spacing-normal` | 0 | Body text (default) |
|
|
190
|
+
| `letter-spacing-wide` | 0.025em | Buttons, labels (all caps) |
|
|
191
|
+
| `letter-spacing-wider` | 0.05em | Emphasized all caps text |
|
|
192
|
+
|
|
193
|
+
**Guidelines**:
|
|
194
|
+
- **Large headers**: Tighten slightly (-0.05em) for visual balance
|
|
195
|
+
- **Body text**: No adjustment (0)
|
|
196
|
+
- **All caps**: Increase spacing (0.025em) for legibility
|
|
197
|
+
- **Japanese text**: No letter-spacing (always use 0)
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Typography Patterns
|
|
202
|
+
|
|
203
|
+
### Heading System
|
|
204
|
+
|
|
205
|
+
#### H1 (Hero)
|
|
206
|
+
|
|
207
|
+
```css
|
|
208
|
+
h1, .text-h1 {
|
|
209
|
+
font-size: var(--font-size-6xl); /* 60px / 3.75rem */
|
|
210
|
+
font-weight: var(--font-weight-black); /* 900 */
|
|
211
|
+
line-height: var(--line-height-tight); /* 1.2 */
|
|
212
|
+
letter-spacing: var(--letter-spacing-tighter); /* -0.05em */
|
|
213
|
+
color: var(--color-text-primary); /* #ffffff */
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Use case**: Page hero, landing page title
|
|
218
|
+
|
|
219
|
+
#### H2 (Section Title)
|
|
220
|
+
|
|
221
|
+
```css
|
|
222
|
+
h2, .text-h2 {
|
|
223
|
+
font-size: var(--font-size-5xl); /* 48px / 3rem */
|
|
224
|
+
font-weight: var(--font-weight-black); /* 900 */
|
|
225
|
+
line-height: var(--line-height-tight); /* 1.2 */
|
|
226
|
+
letter-spacing: var(--letter-spacing-tighter); /* -0.05em */
|
|
227
|
+
color: var(--color-accent-primary); /* #d94f90 */
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**Use case**: Dashboard title, main section headers
|
|
232
|
+
|
|
233
|
+
#### H3 (Subsection Title)
|
|
234
|
+
|
|
235
|
+
```css
|
|
236
|
+
h3, .text-h3 {
|
|
237
|
+
font-size: var(--font-size-4xl); /* 36px / 2.25rem */
|
|
238
|
+
font-weight: var(--font-weight-bold); /* 700 */
|
|
239
|
+
line-height: var(--line-height-tight); /* 1.2 */
|
|
240
|
+
letter-spacing: var(--letter-spacing-tight); /* -0.025em */
|
|
241
|
+
color: var(--color-text-primary); /* #ffffff */
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Use case**: Card titles, modal headers
|
|
246
|
+
|
|
247
|
+
#### H4-H6 (Smaller Headers)
|
|
248
|
+
|
|
249
|
+
```css
|
|
250
|
+
h4, .text-h4 {
|
|
251
|
+
font-size: var(--font-size-3xl); /* 30px / 1.875rem */
|
|
252
|
+
font-weight: var(--font-weight-bold); /* 700 */
|
|
253
|
+
line-height: var(--line-height-normal); /* 1.5 */
|
|
254
|
+
color: var(--color-text-primary);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
h5, .text-h5 {
|
|
258
|
+
font-size: var(--font-size-2xl); /* 24px / 1.5rem */
|
|
259
|
+
font-weight: var(--font-weight-semibold); /* 600 */
|
|
260
|
+
line-height: var(--line-height-normal);
|
|
261
|
+
color: var(--color-text-primary);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
h6, .text-h6 {
|
|
265
|
+
font-size: var(--font-size-xl); /* 20px / 1.25rem */
|
|
266
|
+
font-weight: var(--font-weight-semibold); /* 600 */
|
|
267
|
+
line-height: var(--line-height-normal);
|
|
268
|
+
color: var(--color-text-secondary); /* 70% opacity */
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Body Text
|
|
273
|
+
|
|
274
|
+
#### Default Body
|
|
275
|
+
|
|
276
|
+
```css
|
|
277
|
+
body, p, .text-base {
|
|
278
|
+
font-size: var(--font-size-base); /* 16px / 1rem */
|
|
279
|
+
font-weight: var(--font-weight-normal); /* 400 */
|
|
280
|
+
line-height: var(--line-height-normal); /* 1.5 */
|
|
281
|
+
color: var(--color-text-primary); /* #ffffff */
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
#### Small Text
|
|
286
|
+
|
|
287
|
+
```css
|
|
288
|
+
.text-sm {
|
|
289
|
+
font-size: var(--font-size-sm); /* 14px / 0.875rem */
|
|
290
|
+
font-weight: var(--font-weight-normal); /* 400 */
|
|
291
|
+
line-height: var(--line-height-normal); /* 1.5 */
|
|
292
|
+
color: var(--color-text-secondary); /* 70% opacity */
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
#### Captions/Metadata
|
|
297
|
+
|
|
298
|
+
```css
|
|
299
|
+
.text-xs {
|
|
300
|
+
font-size: var(--font-size-xs); /* 12px / 0.75rem */
|
|
301
|
+
font-weight: var(--font-weight-normal); /* 400 */
|
|
302
|
+
line-height: var(--line-height-normal); /* 1.5 */
|
|
303
|
+
color: var(--color-text-tertiary); /* 50% opacity */
|
|
304
|
+
}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Labels & Inputs
|
|
308
|
+
|
|
309
|
+
```css
|
|
310
|
+
label, .text-label {
|
|
311
|
+
font-size: var(--font-size-sm); /* 14px */
|
|
312
|
+
font-weight: var(--font-weight-medium); /* 500 */
|
|
313
|
+
line-height: var(--line-height-normal);
|
|
314
|
+
color: var(--color-text-primary);
|
|
315
|
+
letter-spacing: var(--letter-spacing-normal);
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Buttons
|
|
320
|
+
|
|
321
|
+
```css
|
|
322
|
+
button, .btn {
|
|
323
|
+
font-size: var(--font-size-base); /* 16px */
|
|
324
|
+
font-weight: var(--font-weight-semibold); /* 600 */
|
|
325
|
+
line-height: var(--line-height-tight); /* 1.2 */
|
|
326
|
+
letter-spacing: var(--letter-spacing-wide); /* 0.025em */
|
|
327
|
+
text-transform: none; /* Preserve original case */
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Japanese Typography
|
|
334
|
+
|
|
335
|
+
### Kanji/Kana Rendering
|
|
336
|
+
|
|
337
|
+
**Font Stack for Mixed Text**:
|
|
338
|
+
```css
|
|
339
|
+
body {
|
|
340
|
+
font-family:
|
|
341
|
+
-apple-system, BlinkMacSystemFont,
|
|
342
|
+
'Hiragino Sans', 'Yu Gothic',
|
|
343
|
+
'Segoe UI', Roboto, sans-serif;
|
|
344
|
+
}
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
**Line Height Considerations**:
|
|
348
|
+
- Japanese characters have **larger vertical height** than Latin
|
|
349
|
+
- Use `line-height: 1.8` for Japanese-heavy text
|
|
350
|
+
- Default `1.5` is acceptable for mixed English/Japanese
|
|
351
|
+
|
|
352
|
+
**Font Weight Limitations**:
|
|
353
|
+
- Many Japanese fonts only support **400 (normal)** and **700 (bold)**
|
|
354
|
+
- Avoid using 500, 600, 900 for Japanese-only text
|
|
355
|
+
- System will fall back to closest available weight
|
|
356
|
+
|
|
357
|
+
### Corruption Text Styling
|
|
358
|
+
|
|
359
|
+
```css
|
|
360
|
+
.corrupted-text {
|
|
361
|
+
font-size: inherit; /* Match surrounding text */
|
|
362
|
+
font-weight: inherit; /* Match surrounding weight */
|
|
363
|
+
color: var(--color-corruption-magenta); /* Pink for Katakana */
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.corrupted-text.kanji {
|
|
367
|
+
color: var(--color-corruption-purple); /* Purple for Kanji */
|
|
368
|
+
font-weight: 700; /* Make Kanji bold for emphasis */
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.corrupted-text.romaji {
|
|
372
|
+
color: var(--color-corruption-cyan); /* Cyan for Romaji */
|
|
373
|
+
font-style: italic; /* Optional: italicize Romaji */
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## CLI (Terminal) Typography
|
|
380
|
+
|
|
381
|
+
### Terminal Font Constraints
|
|
382
|
+
|
|
383
|
+
**Font Family**:
|
|
384
|
+
- **Not customizable** by application
|
|
385
|
+
- User sets terminal font (SF Mono, Consolas, etc.)
|
|
386
|
+
- Celeste CLI works with any monospace font
|
|
387
|
+
|
|
388
|
+
**Font Size**:
|
|
389
|
+
- **Not customizable** by application
|
|
390
|
+
- User sets terminal font size (10pt-16pt typical)
|
|
391
|
+
- Design for 12pt-14pt as baseline
|
|
392
|
+
|
|
393
|
+
**UTF-8 Encoding**:
|
|
394
|
+
- **REQUIRED** for Japanese characters
|
|
395
|
+
- Set in terminal preferences: `export LANG=en_US.UTF-8`
|
|
396
|
+
- Celeste CLI validates encoding on startup
|
|
397
|
+
|
|
398
|
+
### Terminal Text Hierarchy
|
|
399
|
+
|
|
400
|
+
**Dashboard Headers** (use ANSI bold + color):
|
|
401
|
+
```go
|
|
402
|
+
style := lipgloss.NewStyle().
|
|
403
|
+
Bold(true).
|
|
404
|
+
Foreground(lipgloss.Color("#d94f90"))
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
**Section Headers** (uppercase + block characters):
|
|
408
|
+
```
|
|
409
|
+
█ LIFETIME CORRUPTION:
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
**Body Text** (default terminal style):
|
|
413
|
+
```go
|
|
414
|
+
style := lipgloss.NewStyle().
|
|
415
|
+
Foreground(lipgloss.Color("#ffffff"))
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
**Metadata** (dimmed/gray):
|
|
419
|
+
```go
|
|
420
|
+
style := lipgloss.NewStyle().
|
|
421
|
+
Foreground(lipgloss.Color("240")) // ANSI gray
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
## Responsive Typography
|
|
427
|
+
|
|
428
|
+
### Mobile (320px-640px)
|
|
429
|
+
|
|
430
|
+
```css
|
|
431
|
+
@media (max-width: 640px) {
|
|
432
|
+
html {
|
|
433
|
+
font-size: 14px; /* Base = 14px */
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
h1 { font-size: 2rem; } /* 28px instead of 60px */
|
|
437
|
+
h2 { font-size: 1.5rem; } /* 21px instead of 48px */
|
|
438
|
+
h3 { font-size: 1.25rem; } /* 17.5px instead of 36px */
|
|
439
|
+
|
|
440
|
+
body {
|
|
441
|
+
line-height: 1.6; /* Slightly more spacing for mobile */
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### Tablet (641px-1024px)
|
|
447
|
+
|
|
448
|
+
```css
|
|
449
|
+
@media (min-width: 641px) and (max-width: 1024px) {
|
|
450
|
+
html {
|
|
451
|
+
font-size: 15px; /* Base = 15px */
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
h1 { font-size: 3rem; } /* 45px */
|
|
455
|
+
h2 { font-size: 2.5rem; } /* 37.5px */
|
|
456
|
+
h3 { font-size: 2rem; } /* 30px */
|
|
457
|
+
}
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Desktop (1025px+)
|
|
461
|
+
|
|
462
|
+
```css
|
|
463
|
+
@media (min-width: 1025px) {
|
|
464
|
+
html {
|
|
465
|
+
font-size: 16px; /* Base = 16px (default) */
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/* Use default font-size-* tokens */
|
|
469
|
+
}
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## Accessibility
|
|
475
|
+
|
|
476
|
+
### Font Size Minimum
|
|
477
|
+
|
|
478
|
+
**WCAG Success Criterion 1.4.4** (Resize Text):
|
|
479
|
+
- Text must be resizable up to **200%** without loss of content
|
|
480
|
+
- Use `rem` or `em` units (NOT fixed `px`)
|
|
481
|
+
- Celeste complies: All sizes use `rem` units
|
|
482
|
+
|
|
483
|
+
### Contrast Requirements
|
|
484
|
+
|
|
485
|
+
See `COLOR_SYSTEM.md` for full contrast specifications.
|
|
486
|
+
|
|
487
|
+
**Summary**:
|
|
488
|
+
- ✅ White text on `#0a0612`: **21:1** (AAA)
|
|
489
|
+
- ✅ All accent colors on dark bg: **>4.5:1** (AA minimum)
|
|
490
|
+
|
|
491
|
+
### Line Length
|
|
492
|
+
|
|
493
|
+
**Optimal readability**: 45-75 characters per line
|
|
494
|
+
|
|
495
|
+
**Implementation**:
|
|
496
|
+
```css
|
|
497
|
+
.content-block {
|
|
498
|
+
max-width: 65ch; /* ~65 characters */
|
|
499
|
+
margin: 0 auto;
|
|
500
|
+
}
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### Font Smoothing (Web)
|
|
504
|
+
|
|
505
|
+
```css
|
|
506
|
+
body {
|
|
507
|
+
-webkit-font-smoothing: antialiased;
|
|
508
|
+
-moz-osx-font-smoothing: grayscale;
|
|
509
|
+
text-rendering: optimizeLegibility;
|
|
510
|
+
}
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
## CSS Implementation
|
|
516
|
+
|
|
517
|
+
### Complete Typography System
|
|
518
|
+
|
|
519
|
+
```css
|
|
520
|
+
:root {
|
|
521
|
+
/* Font Families */
|
|
522
|
+
--font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
|
523
|
+
Roboto, 'Hiragino Sans', 'Yu Gothic',
|
|
524
|
+
'Helvetica Neue', Arial, sans-serif;
|
|
525
|
+
--font-family-japanese: 'Hiragino Sans', 'Yu Gothic', 'Meiryo',
|
|
526
|
+
'MS PGothic', sans-serif;
|
|
527
|
+
--font-family-monospace: 'SF Mono', 'Monaco', 'Consolas',
|
|
528
|
+
'Liberation Mono', monospace;
|
|
529
|
+
|
|
530
|
+
/* Font Sizes */
|
|
531
|
+
--font-size-xs: 0.75rem;
|
|
532
|
+
--font-size-sm: 0.875rem;
|
|
533
|
+
--font-size-base: 1rem;
|
|
534
|
+
--font-size-lg: 1.125rem;
|
|
535
|
+
--font-size-xl: 1.25rem;
|
|
536
|
+
--font-size-2xl: 1.5rem;
|
|
537
|
+
--font-size-3xl: 1.875rem;
|
|
538
|
+
--font-size-4xl: 2.25rem;
|
|
539
|
+
--font-size-5xl: 3rem;
|
|
540
|
+
--font-size-6xl: 3.75rem;
|
|
541
|
+
|
|
542
|
+
/* Font Weights */
|
|
543
|
+
--font-weight-normal: 400;
|
|
544
|
+
--font-weight-medium: 500;
|
|
545
|
+
--font-weight-semibold: 600;
|
|
546
|
+
--font-weight-bold: 700;
|
|
547
|
+
--font-weight-black: 900;
|
|
548
|
+
|
|
549
|
+
/* Line Heights */
|
|
550
|
+
--line-height-tight: 1.2;
|
|
551
|
+
--line-height-normal: 1.5;
|
|
552
|
+
--line-height-relaxed: 1.8;
|
|
553
|
+
|
|
554
|
+
/* Letter Spacing */
|
|
555
|
+
--letter-spacing-tighter: -0.05em;
|
|
556
|
+
--letter-spacing-tight: -0.025em;
|
|
557
|
+
--letter-spacing-normal: 0;
|
|
558
|
+
--letter-spacing-wide: 0.025em;
|
|
559
|
+
--letter-spacing-wider: 0.05em;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/* Base Styles */
|
|
563
|
+
body {
|
|
564
|
+
font-family: var(--font-family-base);
|
|
565
|
+
font-size: var(--font-size-base);
|
|
566
|
+
font-weight: var(--font-weight-normal);
|
|
567
|
+
line-height: var(--line-height-normal);
|
|
568
|
+
color: var(--color-text-primary);
|
|
569
|
+
-webkit-font-smoothing: antialiased;
|
|
570
|
+
-moz-osx-font-smoothing: grayscale;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
/* Headings */
|
|
574
|
+
h1 {
|
|
575
|
+
font-size: var(--font-size-6xl);
|
|
576
|
+
font-weight: var(--font-weight-black);
|
|
577
|
+
line-height: var(--line-height-tight);
|
|
578
|
+
letter-spacing: var(--letter-spacing-tighter);
|
|
579
|
+
color: var(--color-text-primary);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
h2 {
|
|
583
|
+
font-size: var(--font-size-5xl);
|
|
584
|
+
font-weight: var(--font-weight-black);
|
|
585
|
+
line-height: var(--line-height-tight);
|
|
586
|
+
letter-spacing: var(--letter-spacing-tighter);
|
|
587
|
+
color: var(--color-accent-primary);
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
h3 {
|
|
591
|
+
font-size: var(--font-size-4xl);
|
|
592
|
+
font-weight: var(--font-weight-bold);
|
|
593
|
+
line-height: var(--line-height-tight);
|
|
594
|
+
letter-spacing: var(--letter-spacing-tight);
|
|
595
|
+
color: var(--color-text-primary);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/* Body */
|
|
599
|
+
p {
|
|
600
|
+
font-size: var(--font-size-base);
|
|
601
|
+
font-weight: var(--font-weight-normal);
|
|
602
|
+
line-height: var(--line-height-normal);
|
|
603
|
+
color: var(--color-text-primary);
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
/* Code/Monospace */
|
|
607
|
+
code, pre {
|
|
608
|
+
font-family: var(--font-family-monospace);
|
|
609
|
+
font-size: 0.9em;
|
|
610
|
+
}
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## Related Documents
|
|
616
|
+
|
|
617
|
+
- **BRAND_OVERVIEW.md** - High-level brand identity
|
|
618
|
+
- **DESIGN_TOKENS.md** - Complete token system
|
|
619
|
+
- **COLOR_SYSTEM.md** - Color palette with WCAG compliance
|
|
620
|
+
- **ACCESSIBILITY.md** - Complete accessibility guidelines
|
|
621
|
+
|
|
622
|
+
---
|
|
623
|
+
|
|
624
|
+
**Status**: ✅ **TYPOGRAPHY SYSTEM COMPLETE** - Ready for implementation
|