@whykusanagi/corrupted-theme 0.1.2 → 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/CHANGELOG.md +157 -0
- package/README.md +6 -0
- package/docs/CHARACTER_LEVEL_CORRUPTION.md +264 -0
- package/docs/CORRUPTION_PHRASES.md +529 -0
- package/docs/ROADMAP.md +266 -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/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 +16 -3
- 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,554 @@
|
|
|
1
|
+
# Anti-Patterns
|
|
2
|
+
|
|
3
|
+
> **Celeste Brand System** | Standards Documentation
|
|
4
|
+
> **Document**: What NOT to Do - Common Mistakes and Violations
|
|
5
|
+
> **Version**: 1.0.0
|
|
6
|
+
> **Last Updated**: 2025-12-13
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Table of Contents
|
|
11
|
+
|
|
12
|
+
1. [Overview](#overview)
|
|
13
|
+
2. [Corruption Anti-Patterns](#corruption-anti-patterns)
|
|
14
|
+
3. [Color Misuse](#color-misuse)
|
|
15
|
+
4. [Animation Abuse](#animation-abuse)
|
|
16
|
+
5. [Accessibility Violations](#accessibility-violations)
|
|
17
|
+
6. [Performance Issues](#performance-issues)
|
|
18
|
+
7. [Typography Mistakes](#typography-mistakes)
|
|
19
|
+
8. [Layout Problems](#layout-problems)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Overview
|
|
24
|
+
|
|
25
|
+
This document catalogs **forbidden patterns** and common mistakes in Celeste brand implementation. Following these guidelines prevents brand dilution and ensures quality consistency.
|
|
26
|
+
|
|
27
|
+
### Anti-Pattern Categories
|
|
28
|
+
|
|
29
|
+
- 🚫 **Corruption**: Leet speak, over-corruption, wrong character types
|
|
30
|
+
- 🚫 **Color**: Low contrast, wrong palette, color-only indicators
|
|
31
|
+
- 🚫 **Animation**: Too fast, seizure risk, no reduced-motion support
|
|
32
|
+
- 🚫 **Accessibility**: Missing alt text, keyboard traps, poor contrast
|
|
33
|
+
- 🚫 **Performance**: Too many glass elements, animation jank
|
|
34
|
+
- 🚫 **Typography**: Wrong fonts, poor line heights, bad hierarchy
|
|
35
|
+
- 🚫 **Layout**: Inconsistent spacing, broken responsive design
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Corruption Anti-Patterns
|
|
40
|
+
|
|
41
|
+
### 🚫 LEET SPEAK (Forbidden)
|
|
42
|
+
|
|
43
|
+
**The most critical rule**: NEVER use leet speak (number substitutions).
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
❌ WRONG: Leet Speak Examples
|
|
47
|
+
- c0rrupt (0 for o)
|
|
48
|
+
- l0ad (0 for o)
|
|
49
|
+
- st4t (4 for a)
|
|
50
|
+
- us3r (3 for e)
|
|
51
|
+
- d4t4 (4 for a)
|
|
52
|
+
- l33t (3 for e)
|
|
53
|
+
- h4ck (4 for a)
|
|
54
|
+
- 5y5t3m (5 for s, 3 for e)
|
|
55
|
+
|
|
56
|
+
✅ CORRECT: Character-Level Japanese Mixing
|
|
57
|
+
- c使rrupt (Japanese character IN word)
|
|
58
|
+
- l統ad (Japanese character IN word)
|
|
59
|
+
- st使t (Japanese character IN word)
|
|
60
|
+
- us計r (Japanese character IN word)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Why it's wrong**:
|
|
64
|
+
- Leet speak is 2000s internet culture, not AI corruption
|
|
65
|
+
- Numbers don't represent translation failure
|
|
66
|
+
- Violates brand aesthetic guidelines
|
|
67
|
+
- Makes brand look dated/unprofessional
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### 🚫 Over-Corruption (>40% Intensity)
|
|
72
|
+
|
|
73
|
+
```css
|
|
74
|
+
/* ❌ WRONG: Too corrupted, unreadable */
|
|
75
|
+
.header {
|
|
76
|
+
/* 60% corruption: "US使R MA埋AGE統ENT理" */
|
|
77
|
+
content: "US使R MA埋AGE統ENT理設定化変換"; /* Can't read this */
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* ✅ CORRECT: Readable corruption (25-35%) */
|
|
81
|
+
.header {
|
|
82
|
+
/* 30% corruption: "US使R MANAGE統ENT" */
|
|
83
|
+
content: "US使R MANAGE統ENT"; /* Still readable */
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Readability threshold**:
|
|
88
|
+
- 0-20%: Minimal (decorative only)
|
|
89
|
+
- 25-35%: **Optimal** (brand + readable)
|
|
90
|
+
- 40-50%: High (loading screens only)
|
|
91
|
+
- 50%+: **FORBIDDEN** (unreadable)
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### 🚫 Word-Level Replacement
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
❌ WRONG: Replace entire words
|
|
99
|
+
- "USER 管理" (English word + Japanese word)
|
|
100
|
+
- "STATISTICS 統計" (Side-by-side translation)
|
|
101
|
+
- "使用 MANAGEMENT" (Swapped words)
|
|
102
|
+
|
|
103
|
+
✅ CORRECT: Character-level mixing
|
|
104
|
+
- "US使R MANAGEMENT" (Japanese chars INSIDE English words)
|
|
105
|
+
- "STAT統STICS" (Mixed at character level)
|
|
106
|
+
- "M埋NAGEMENT" (Kanji embedded)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Why character-level is correct**:
|
|
110
|
+
- Represents AI failing mid-word
|
|
111
|
+
- More authentic "glitch" aesthetic
|
|
112
|
+
- Maintains partial readability
|
|
113
|
+
- Follows translation-failure philosophy
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### 🚫 Wrong Character Sets
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
❌ WRONG: Random Unicode (emoji, symbols, Cyrillic)
|
|
121
|
+
- "USER 😂ANAGEMENT" (Emoji corruption)
|
|
122
|
+
- "STAT☭STICS" (Symbol corruption)
|
|
123
|
+
- "MAИAGEMENT" (Cyrillic corruption)
|
|
124
|
+
|
|
125
|
+
✅ CORRECT: Japanese only (Kanji, Katakana, Hiragana)
|
|
126
|
+
- "US使R MANAGEMENT" (Kanji)
|
|
127
|
+
- "STATア統STICS" (Katakana + Kanji)
|
|
128
|
+
- "MAなAGEMENT" (Hiragana)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Allowed characters**:
|
|
132
|
+
- ✅ Kanji (Chinese characters used in Japanese)
|
|
133
|
+
- ✅ Katakana (angular Japanese script)
|
|
134
|
+
- ✅ Hiragana (curved Japanese script)
|
|
135
|
+
- ❌ Emoji, symbols, other languages
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### 🚫 Corrupting Critical UI
|
|
140
|
+
|
|
141
|
+
```html
|
|
142
|
+
<!-- ❌ WRONG: Corrupt critical instructions -->
|
|
143
|
+
<button>S使bm統t</button> <!-- User can't read action -->
|
|
144
|
+
<input placeholder="Em使il addr狀ss" /> <!-- Unclear what to enter -->
|
|
145
|
+
<p class="error">Er使r: F埋led t統 s狀ve</p> <!-- Can't understand error -->
|
|
146
|
+
|
|
147
|
+
<!-- ✅ CORRECT: Keep critical UI readable -->
|
|
148
|
+
<button>Submit</button> <!-- Clear action -->
|
|
149
|
+
<input placeholder="Email address" /> <!-- Clear field -->
|
|
150
|
+
<p class="error">Error: Failed to save</p> <!-- Clear error -->
|
|
151
|
+
|
|
152
|
+
<!-- ✅ OK: Corrupt decorative elements -->
|
|
153
|
+
<h1 class="hero-title">US使R MANAGE統ENT</h1> <!-- Brand moment, not critical -->
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Never corrupt**:
|
|
157
|
+
- Error messages
|
|
158
|
+
- Form labels/placeholders
|
|
159
|
+
- Button labels (unless obvious from context)
|
|
160
|
+
- Navigation links
|
|
161
|
+
- Critical instructions
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Color Misuse
|
|
166
|
+
|
|
167
|
+
### 🚫 Low Contrast
|
|
168
|
+
|
|
169
|
+
```css
|
|
170
|
+
/* ❌ WRONG: Pink on red (1.8:1 - fails WCAG) */
|
|
171
|
+
.btn {
|
|
172
|
+
background: #ef4444; /* Red */
|
|
173
|
+
color: #d94f90; /* Pink - TOO SIMILAR */
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/* ✅ CORRECT: Pink on dark (7.2:1 - passes AAA) */
|
|
177
|
+
.btn {
|
|
178
|
+
background: #0a0612; /* Dark purple-black */
|
|
179
|
+
color: #d94f90; /* Pink - HIGH CONTRAST */
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Minimum contrast ratios**:
|
|
184
|
+
- 4.5:1 for normal text (WCAG AA)
|
|
185
|
+
- 3:1 for large text (18px+)
|
|
186
|
+
- 3:1 for UI components
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
### 🚫 Color-Only Indicators
|
|
191
|
+
|
|
192
|
+
```html
|
|
193
|
+
<!-- ❌ WRONG: Color only (inaccessible to colorblind users) -->
|
|
194
|
+
<span style="color: #10b981;">Success</span>
|
|
195
|
+
<span style="color: #ef4444;">Error</span>
|
|
196
|
+
|
|
197
|
+
<!-- ✅ CORRECT: Color + icon + text -->
|
|
198
|
+
<span class="status-success">
|
|
199
|
+
<span class="icon">✓</span>
|
|
200
|
+
<span class="sr-only">Success:</span>
|
|
201
|
+
Operation completed
|
|
202
|
+
</span>
|
|
203
|
+
|
|
204
|
+
<span class="status-error">
|
|
205
|
+
<span class="icon">✗</span>
|
|
206
|
+
<span class="sr-only">Error:</span>
|
|
207
|
+
Operation failed
|
|
208
|
+
</span>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
### 🚫 Wrong Color Palette
|
|
214
|
+
|
|
215
|
+
```css
|
|
216
|
+
/* ❌ WRONG: Off-brand colors */
|
|
217
|
+
.btn {
|
|
218
|
+
background: #ff6b9d; /* Wrong pink (too bright) */
|
|
219
|
+
background: #9b4dca; /* Wrong purple (too dark) */
|
|
220
|
+
background: #00bfff; /* Wrong cyan (too light) */
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/* ✅ CORRECT: Official palette */
|
|
224
|
+
.btn {
|
|
225
|
+
background: #d94f90; /* Official pink */
|
|
226
|
+
background: #8b5cf6; /* Official purple */
|
|
227
|
+
background: #00d4ff; /* Official cyan */
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Animation Abuse
|
|
234
|
+
|
|
235
|
+
### 🚫 Too Fast (<100ms)
|
|
236
|
+
|
|
237
|
+
```css
|
|
238
|
+
/* ❌ WRONG: Too fast, jarring */
|
|
239
|
+
.btn {
|
|
240
|
+
transition: transform 0.05s ease; /* 50ms - TOO FAST */
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/* ✅ CORRECT: Appropriate speed */
|
|
244
|
+
.btn {
|
|
245
|
+
transition: transform 0.15s ease; /* 150ms - GOOD */
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### 🚫 Seizure Risk (Flashing)
|
|
252
|
+
|
|
253
|
+
```css
|
|
254
|
+
/* ❌ WRONG: Dangerous flashing (5Hz = 5 flashes/second) */
|
|
255
|
+
@keyframes dangerous {
|
|
256
|
+
0%, 100% { opacity: 1; }
|
|
257
|
+
50% { opacity: 0; }
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.flashy {
|
|
261
|
+
animation: dangerous 0.2s infinite; /* 5Hz - CAN TRIGGER SEIZURES */
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/* ✅ CORRECT: Safe flicker (<3Hz) */
|
|
265
|
+
@keyframes safe {
|
|
266
|
+
0%, 100% { opacity: 1; }
|
|
267
|
+
50% { opacity: 0.7; }
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.safe-flicker {
|
|
271
|
+
animation: safe 2s ease-in-out infinite; /* 0.5Hz - SAFE */
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**WCAG 2.3.1**: No more than 3 flashes per second
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
### 🚫 Ignoring Reduced Motion
|
|
280
|
+
|
|
281
|
+
```css
|
|
282
|
+
/* ❌ WRONG: No reduced-motion support */
|
|
283
|
+
.animated {
|
|
284
|
+
animation: spin 1s infinite; /* Always animates */
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/* ✅ CORRECT: Respect user preference */
|
|
288
|
+
.animated {
|
|
289
|
+
animation: spin 1s infinite;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
@media (prefers-reduced-motion: reduce) {
|
|
293
|
+
.animated {
|
|
294
|
+
animation: none; /* Disable for accessibility */
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
### 🚫 Too Many Animations
|
|
302
|
+
|
|
303
|
+
```css
|
|
304
|
+
/* ❌ WRONG: Animating everything */
|
|
305
|
+
* {
|
|
306
|
+
transition: all 0.3s ease; /* PERFORMANCE NIGHTMARE */
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/* ✅ CORRECT: Selective animations */
|
|
310
|
+
.btn, .card, .input {
|
|
311
|
+
transition: transform 0.15s ease; /* Only interactive elements */
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Accessibility Violations
|
|
318
|
+
|
|
319
|
+
### 🚫 Missing Alt Text
|
|
320
|
+
|
|
321
|
+
```html
|
|
322
|
+
<!-- ❌ WRONG: No alt text -->
|
|
323
|
+
<img src="dashboard.png">
|
|
324
|
+
|
|
325
|
+
<!-- ✅ CORRECT: Descriptive alt text -->
|
|
326
|
+
<img src="dashboard.png" alt="User dashboard showing statistics and activity">
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
### 🚫 Keyboard Trap
|
|
332
|
+
|
|
333
|
+
```javascript
|
|
334
|
+
// ❌ WRONG: Can't escape modal with keyboard
|
|
335
|
+
function openModal() {
|
|
336
|
+
modal.showModal();
|
|
337
|
+
// No Esc handler - USER TRAPPED
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// ✅ CORRECT: Esc closes modal
|
|
341
|
+
modal.addEventListener('keydown', (e) => {
|
|
342
|
+
if (e.key === 'Escape') {
|
|
343
|
+
closeModal();
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
### 🚫 Invisible Focus Indicator
|
|
351
|
+
|
|
352
|
+
```css
|
|
353
|
+
/* ❌ WRONG: Remove focus outline */
|
|
354
|
+
*:focus {
|
|
355
|
+
outline: none; /* ACCESSIBILITY VIOLATION */
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/* ✅ CORRECT: Visible focus indicator */
|
|
359
|
+
:focus-visible {
|
|
360
|
+
outline: 2px solid var(--color-accent);
|
|
361
|
+
outline-offset: 2px;
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Performance Issues
|
|
368
|
+
|
|
369
|
+
### 🚫 Too Many Glass Elements
|
|
370
|
+
|
|
371
|
+
```html
|
|
372
|
+
<!-- ❌ WRONG: Glass effect on every element (laggy scroll) -->
|
|
373
|
+
<div class="glass-card">
|
|
374
|
+
<div class="glass-panel">
|
|
375
|
+
<div class="glass-box">
|
|
376
|
+
<div class="glass-container">
|
|
377
|
+
<!-- 4 nested glass effects = VERY SLOW -->
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
</div>
|
|
382
|
+
|
|
383
|
+
<!-- ✅ CORRECT: Glass on container only -->
|
|
384
|
+
<div class="glass-card">
|
|
385
|
+
<div class="panel">
|
|
386
|
+
<div class="box">
|
|
387
|
+
<div class="container">
|
|
388
|
+
<!-- 1 glass effect = FAST -->
|
|
389
|
+
</div>
|
|
390
|
+
</div>
|
|
391
|
+
</div>
|
|
392
|
+
</div>
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
**Limit**: Maximum 1-2 glass elements per viewport
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
### 🚫 Animating Layout Properties
|
|
400
|
+
|
|
401
|
+
```css
|
|
402
|
+
/* ❌ WRONG: Animating width (causes reflow) */
|
|
403
|
+
.card {
|
|
404
|
+
transition: width 0.3s ease;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.card:hover {
|
|
408
|
+
width: 320px; /* Triggers reflow - SLOW */
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/* ✅ CORRECT: Animating transform (GPU-accelerated) */
|
|
412
|
+
.card {
|
|
413
|
+
transition: transform 0.3s ease;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.card:hover {
|
|
417
|
+
transform: scale(1.05); /* GPU-accelerated - FAST */
|
|
418
|
+
}
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## Typography Mistakes
|
|
424
|
+
|
|
425
|
+
### 🚫 Wrong Font Stack
|
|
426
|
+
|
|
427
|
+
```css
|
|
428
|
+
/* ❌ WRONG: Missing Japanese support */
|
|
429
|
+
body {
|
|
430
|
+
font-family: Arial, sans-serif; /* Japanese chars show as boxes */
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/* ✅ CORRECT: Japanese-capable font stack */
|
|
434
|
+
body {
|
|
435
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
|
436
|
+
'Hiragino Sans', 'Yu Gothic', sans-serif;
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
### 🚫 Poor Line Height
|
|
443
|
+
|
|
444
|
+
```css
|
|
445
|
+
/* ❌ WRONG: Too tight (hard to read) */
|
|
446
|
+
p {
|
|
447
|
+
line-height: 1.0; /* Text cramped */
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/* ✅ CORRECT: Readable line height */
|
|
451
|
+
p {
|
|
452
|
+
line-height: 1.5; /* Comfortable reading */
|
|
453
|
+
}
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## Layout Problems
|
|
459
|
+
|
|
460
|
+
### 🚫 Inconsistent Spacing
|
|
461
|
+
|
|
462
|
+
```css
|
|
463
|
+
/* ❌ WRONG: Random spacing values */
|
|
464
|
+
.card-1 { padding: 17px; }
|
|
465
|
+
.card-2 { padding: 23px; }
|
|
466
|
+
.card-3 { padding: 19px; }
|
|
467
|
+
|
|
468
|
+
/* ✅ CORRECT: 8-point scale */
|
|
469
|
+
.card-1 { padding: var(--spacing-md); } /* 16px */
|
|
470
|
+
.card-2 { padding: var(--spacing-lg); } /* 24px */
|
|
471
|
+
.card-3 { padding: var(--spacing-md); } /* 16px */
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
### 🚫 Broken Responsive Design
|
|
477
|
+
|
|
478
|
+
```css
|
|
479
|
+
/* ❌ WRONG: Fixed widths (breaks on mobile) */
|
|
480
|
+
.container {
|
|
481
|
+
width: 1200px; /* Overflows on phone */
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/* ✅ CORRECT: Max-width + padding */
|
|
485
|
+
.container {
|
|
486
|
+
max-width: 1200px;
|
|
487
|
+
width: 100%;
|
|
488
|
+
padding: 0 var(--spacing-md);
|
|
489
|
+
}
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## When NOT to Use Celeste Aesthetic
|
|
495
|
+
|
|
496
|
+
### Inappropriate Contexts
|
|
497
|
+
|
|
498
|
+
**DO NOT use corruption/glassmorphism for**:
|
|
499
|
+
- 🚫 Banking/financial apps (trust/security concerns)
|
|
500
|
+
- 🚫 Medical/healthcare (clarity is critical)
|
|
501
|
+
- 🚫 Legal documents (must be unambiguous)
|
|
502
|
+
- 🚫 Emergency services (no time for aesthetic)
|
|
503
|
+
- 🚫 Government forms (accessibility requirements)
|
|
504
|
+
- 🚫 Educational testing (must be readable)
|
|
505
|
+
|
|
506
|
+
**DO use for**:
|
|
507
|
+
- ✅ Creative portfolios
|
|
508
|
+
- ✅ Tech products (developer tools, CLI, APIs)
|
|
509
|
+
- ✅ Entertainment/gaming
|
|
510
|
+
- ✅ Personal branding
|
|
511
|
+
- ✅ Art/design showcases
|
|
512
|
+
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
## Checklist: Avoiding Anti-Patterns
|
|
516
|
+
|
|
517
|
+
Before shipping, verify:
|
|
518
|
+
|
|
519
|
+
- [ ] **No leet speak** (0, 1, 3, 4, 5, 7 substitutions)
|
|
520
|
+
- [ ] **Corruption ≤40%** intensity
|
|
521
|
+
- [ ] **Character-level** mixing (not word-level)
|
|
522
|
+
- [ ] **Japanese only** (no emoji/symbols)
|
|
523
|
+
- [ ] **Critical UI readable** (no corruption on errors)
|
|
524
|
+
- [ ] **Contrast ≥4.5:1** (WCAG AA)
|
|
525
|
+
- [ ] **Color + icon/text** (never color alone)
|
|
526
|
+
- [ ] **Official palette** used
|
|
527
|
+
- [ ] **Animation ≥100ms** (not too fast)
|
|
528
|
+
- [ ] **<3 flashes/second** (seizure safety)
|
|
529
|
+
- [ ] **Reduced motion** supported
|
|
530
|
+
- [ ] **Alt text** on all images
|
|
531
|
+
- [ ] **Keyboard accessible** (no traps)
|
|
532
|
+
- [ ] **Focus indicators** visible
|
|
533
|
+
- [ ] **≤2 glass elements** per viewport
|
|
534
|
+
- [ ] **Transform-only animations** (not width/height)
|
|
535
|
+
- [ ] **Japanese fonts** included
|
|
536
|
+
- [ ] **8-point spacing** used
|
|
537
|
+
- [ ] **Responsive design** tested
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
## Related Documentation
|
|
542
|
+
|
|
543
|
+
- [TRANSLATION_FAILURE_AESTHETIC.md](../brand/TRANSLATION_FAILURE_AESTHETIC.md) - Corruption rules
|
|
544
|
+
- [COLOR_SYSTEM.md](../brand/COLOR_SYSTEM.md) - Official color palette
|
|
545
|
+
- [ACCESSIBILITY.md](./ACCESSIBILITY.md) - WCAG compliance
|
|
546
|
+
- [ANIMATION_GUIDELINES.md](../components/ANIMATION_GUIDELINES.md) - Animation standards
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
**Last Updated**: 2025-12-13
|
|
551
|
+
**Version**: 1.0.0
|
|
552
|
+
**Critical Rules**: NO leet speak, ≤40% corruption, Japanese only
|
|
553
|
+
**Maintainer**: Celeste Brand System
|
|
554
|
+
**Status**: ✅ Mandatory Guidelines
|