7k-design-system 1.1.1 → 1.3.0

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/CONSUMER_GUIDE.md +56 -16
  3. package/DESIGN.md +111 -132
  4. package/README.md +20 -20
  5. package/SKILL.md +23 -25
  6. package/build/icons/icon-7kgroup-light.svg +10 -0
  7. package/build/icons/icon-7kgroup.svg +10 -0
  8. package/build/icons/icon-7kminato-light.svg +10 -0
  9. package/build/icons/icon-7kminato.svg +10 -0
  10. package/build/icons/icon-base.svg +10 -0
  11. package/build/icons/icon-inari-light.svg +10 -0
  12. package/build/icons/icon-inari.svg +10 -0
  13. package/dist/7k-design-system.css +1 -1
  14. package/dist/animations.css +1 -1
  15. package/dist/build/icons/icon-7kgroup-light.svg +10 -0
  16. package/dist/build/icons/icon-7kgroup.svg +10 -0
  17. package/dist/build/icons/icon-7kminato-light.svg +10 -0
  18. package/dist/build/icons/icon-7kminato.svg +10 -0
  19. package/dist/build/icons/icon-base.svg +10 -0
  20. package/dist/build/icons/icon-inari-light.svg +10 -0
  21. package/dist/build/icons/icon-inari.svg +10 -0
  22. package/dist/components.css +1 -1
  23. package/dist/projects.css +1 -1
  24. package/dist/react/components/Alert.d.ts +0 -1
  25. package/dist/react/components/Avatar.d.ts +2 -0
  26. package/dist/react/components/Badge.d.ts +0 -1
  27. package/dist/react/components/Button.d.ts +0 -1
  28. package/dist/react/components/Card.d.ts +0 -1
  29. package/dist/react/components/Checkbox.d.ts +0 -1
  30. package/dist/react/components/DataTable.d.ts +2 -0
  31. package/dist/react/components/Drawer.d.ts +0 -1
  32. package/dist/react/components/EmptyState.d.ts +2 -0
  33. package/dist/react/components/Icon.d.ts +0 -1
  34. package/dist/react/components/Input.d.ts +0 -1
  35. package/dist/react/components/IsometricBackground.d.ts +0 -1
  36. package/dist/react/components/Listbox.d.ts +2 -0
  37. package/dist/react/components/Modal.d.ts +0 -1
  38. package/dist/react/components/Nav.d.ts +0 -1
  39. package/dist/react/components/Progress.d.ts +2 -0
  40. package/dist/react/components/ProjectIcon.d.ts +6 -0
  41. package/dist/react/components/Radio.d.ts +0 -1
  42. package/dist/react/components/Select.d.ts +0 -1
  43. package/dist/react/components/Skeleton.d.ts +2 -0
  44. package/dist/react/components/Spinner.d.ts +2 -0
  45. package/dist/react/components/Stat.d.ts +2 -0
  46. package/dist/react/components/Tabs.d.ts +0 -1
  47. package/dist/react/components/TextureOverlay.d.ts +1 -2
  48. package/dist/react/components/Toast.d.ts +0 -1
  49. package/dist/react/components/Toggle.d.ts +0 -1
  50. package/dist/react/components/Tooltip.d.ts +0 -1
  51. package/dist/react/index.cjs +1 -1
  52. package/dist/react/index.d.ts +9 -1
  53. package/dist/react/index.js +1263 -876
  54. package/dist/react/theme/ProjectProvider.d.ts +0 -1
  55. package/dist/react/theme/ThemeContext.d.ts +0 -1
  56. package/dist/react/theme/ThemeProvider.d.ts +0 -1
  57. package/dist/react/theme/projects.d.ts +1 -1
  58. package/dist/react/theme/useProject.d.ts +0 -1
  59. package/dist/react/theme/useTheme.d.ts +0 -1
  60. package/dist/react/types.d.ts +68 -8
  61. package/dist/textures.css +1 -1
  62. package/dist/tokens.css +1 -1
  63. package/package.json +18 -20
  64. package/dist/react/components/MangaPanel.d.ts +0 -3
package/DESIGN.md CHANGED
@@ -20,7 +20,7 @@ Key constraints derived from the source:
20
20
  - **Secondary neon accent** → Cyan by default (`--brand-secondary`), dynamically themable per project via `data-project` or `ProjectProvider`.
21
21
  - **Logo** → Star-burst pattern logo in `build/logos/logo-7k.svg`: a geometric radial pattern with #FF0FF brand accent tones. Light variant at `build/logos/logo-7k-light.svg` (black polygons for light backgrounds). App icon at `build/icons/icon.svg`.
22
22
  - **Dark theme** → All surfaces start from near-black. Light theme is opt-in only.
23
- - **Project differentiation** → Child projects get their own secondary accent (solar, cyan, acid, ember) on the same dark base. The parent 7K brand uses the default cyan secondary; other projects theme `--brand-secondary` to their hue. Each Geist Pixel geometric variant pairs with one accent: Square=magenta, Circle=cyan, Grid=acid, Line=ember, Triangle=solar.
23
+ - **Project differentiation** → Each project gets its own secondary accent on the same dark base: **magenta = 7KGroup** (parent, also `--brand-primary`), **cyan = 7KMinato**, **inari (burnt orange) = Inari**. Projects theme `--brand-secondary` to their hue via `data-project` or `ProjectProvider`.
24
24
  - **Tokyo neon** → High contrast, nocturnal canvas, electric accents, no warm/beige tones.
25
25
  - **1-bit manga influence** → 10-texture background pattern library (scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette). All textures are CSS gradients — no images, no SVG humans.
26
26
  - **Abstract 1-bit animations** → 20+ animation keyframes organized as ambient (continuous) and trigger (burst) categories. Step timing for retro feel, reduced-motion collapse.
@@ -150,7 +150,7 @@ import '7k-design-system/css';
150
150
 
151
151
  Tokyo neon meets manga-influenced 1-bit. The canvas is deep near-black, with sharp white text, electric magenta (`#FF0FF`) as the primary brand accent, and cyan as a secondary project accent. Black-and-white 1-bit textures — scanline overlays, halftone dot noise, glitch keyframes — provide rhythm and atmosphere. The mood is nocturnal, high-contrast, and unapologetically digital.
152
152
 
153
- Company/project differentiation: the parent 7K brand uses vivid magenta (`--brand-primary`). Child projects adopt their own accent (solar, cyan, acid, ember) on the same dark base. Same system, distinct at a glance.
153
+ Company/project differentiation: 7KGroup (parent) uses vivid magenta (`--brand-primary` baseline). Inside a project scope the project accent becomes dominant, overriding the full `--brand-primary` chain: 7KMinato runs cyan, Inari runs burnt orange (Fushimi Inari palette). Same system, distinct at a glance.
154
154
 
155
155
  **Logo:** Star-burst pattern logo in `build/logos/logo-7k.svg` — a geometric radial pattern with #FF0FF brand accent tones. Light variant at `build/logos/logo-7k-light.svg` (light backgrounds). App icon at `build/icons/icon.svg`.
156
156
 
@@ -162,7 +162,7 @@ Company/project differentiation: the parent 7K brand uses vivid magenta (`--bran
162
162
  - **Diagonal stripes**: 45° hatch lines at 7px or 4px pitch. Negative variant overlays pure white-on-black for high-contrast sections.
163
163
  - **Horizontal / vertical stripes**: Linear parallel lines at 9px or 5px pitch for directional motion cues.
164
164
  - **Crosshatch**: Dual-angle hatch (45° + -45°) for dense shading in manga panel style. Standard and dense variants.
165
- - **Checkerboard**: 12px alternating squares for pixel-art motifs. One-bit variant uses pure black/white for retro game sections.
165
+ - **Checkerboard**: 12px alternating squares for pixel-art motifs. High-contrast variant uses pure black/white.
166
166
  - **Noise**: SVG fractal noise overlay at 128px tile, 4%–12% opacity for analog CRT grain. Animatable with translate keyframes.
167
167
  - **Vignette**: Radial gradient from transparent center to black edge. Sharp variant clips tighter for manga panel corner fade.
168
168
 
@@ -180,23 +180,23 @@ Company/project differentiation: the parent 7K brand uses vivid magenta (`--bran
180
180
 
181
181
  | Category | Classes | Density variants | Use case |
182
182
  | ------------------ | ---------------------------------------------------------------------------- | -------------------------------- | -------------------------------------- |
183
- | Scanline | `.scanline`, `.scanline-fast` | slow (8s), fast (3s) | Hero sections, full-bleed walls |
184
- | Halftone dots | `.halftone-sm`, `.halftone-md`, `.halftone-lg`, `.halftone-accent` | 4px/6px/10px grid, accent-tinted | Manga panel backgrounds, card surfaces |
185
- | Dot matrix | `.dot-matrix-dense`, `.dot-matrix`, `.dot-matrix-sparse` | 3px/6px/12px grid | Texture depth behind text, dividers |
186
- | Diagonal stripes | `.diagonal-stripes`, `.diagonal-stripes-dense`, `.diagonal-stripes-negative` | 7px/4px pitch, pure B/W | Directional cues, loading areas |
187
- | Horizontal stripes | `.stripes-h`, `.stripes-h-dense` | 9px/5px pitch | Section rhythm, horizontal dividers |
188
- | Vertical stripes | `.stripes-v`, `.stripes-v-dense` | 9px/5px pitch | Sidebar textures, column dividers |
189
- | Crosshatch | `.crosshatch`, `.crosshatch-dense` | 7px/4px dual-angle | Dense manga shading, error states |
190
- | Checkerboard | `.checkerboard`, `.checkerboard-onebit` | 12px/16px grid, pure B/W | Retro sections, QR motifs |
191
- | Noise | `.noise`, `.noise-heavy`, `.noise-animated` | 4%/12% opacity, SVG fractal | CRT grain, analog texture |
192
- | Vignette | `.vignette-onebit`, `.vignette-onebit-sharp` | Soft/sharp radial fade | Panel corner fade, hero-edge vignette |
183
+ | Scanline | `.bg-scanline`, `.bg-scanline-fast` | slow (8s), fast (3s) | Hero sections, full-bleed walls |
184
+ | Halftone dots | `.bg-halftone-sm`, `.bg-halftone-md`, `.bg-halftone-lg`, `.bg-halftone-accent` | 4px/6px/10px grid, accent-tinted | Manga panel backgrounds, card surfaces |
185
+ | Dot matrix | `.bg-dot-matrix-dense`, `.bg-dot-matrix`, `.bg-dot-matrix-sparse` | 3px/6px/12px grid | Texture depth behind text, dividers |
186
+ | Diagonal stripes | `.bg-diagonal-stripes`, `.bg-diagonal-stripes-dense`, `.bg-diagonal-stripes-negative` | 7px/4px pitch, pure B/W | Directional cues, loading areas |
187
+ | Horizontal stripes | `.bg-stripes-h`, `.bg-stripes-h-dense` | 9px/5px pitch | Section rhythm, horizontal dividers |
188
+ | Vertical stripes | `.bg-stripes-v`, `.bg-stripes-v-dense` | 9px/5px pitch | Sidebar textures, column dividers |
189
+ | Crosshatch | `.bg-crosshatch`, `.bg-crosshatch-dense` | 7px/4px dual-angle | Dense manga shading, error states |
190
+ | Checkerboard | `.bg-checkerboard`, `.bg-checkerboard-contrast` | 12px/16px grid, pure B/W | Retro sections, QR motifs |
191
+ | Noise | `.bg-noise`, `.bg-noise-heavy`, `.bg-noise-animated` | 4%/12% opacity, SVG fractal | CRT grain, analog texture |
192
+ | Vignette | `.bg-vignette-ink`, `.bg-vignette-ink-sharp` | Soft/sharp radial fade | Panel corner fade, hero-edge vignette |
193
193
 
194
194
  ### Texture composition rules
195
195
 
196
196
  1. **One texture per section layer.** Apply at most one texture on the background layer and one on the overlay layer (`::after`). Scanline + halftone is the default pair for hero sections.
197
197
  2. **Opacity scales with section density.** Hero/landing sections use lighter textures (5–10% opacity). Data-dense utility sections use stronger textures (10–15% opacity) or none.
198
- 3. **Texture on components is allowed with restraint.** Cards, panels, modals, drawers, and buttons can carry low-opacity texture overlays (`::before`, `pointer-events: none`) as long as the texture sits behind content and does not reduce contrast. Inputs and form controls should remain solid to preserve legibility. Use `.card-halftone`, `.panel-scanline`, `.btn-modern-halftone`, `.modal-noise`, etc.
199
- 4. **Texture as section separator.** When transitioning between full-bleed sections, add a `.separator-onebit` or `.stripes-h` band (40–80px tall) as a visual break — never use shadow or blur transitions.
198
+ 3. **Texture on components is allowed with restraint.** Cards, panels, modals, drawers, and buttons can carry low-opacity texture overlays (`::before`, `pointer-events: none`) as long as the texture sits behind content and does not reduce contrast. Inputs and form controls should remain solid to preserve legibility. Use `.card-halftone`, `.surface-scanline`, `.btn-halftone`, `.modal-noise`, etc.
199
+ 4. **Texture as section separator.** When transitioning between full-bleed sections, add a `.bg-separator-solid` or `.bg-stripes-h` band (40–80px tall) as a visual break — never use shadow or blur transitions.
200
200
  5. **Layering order:** Base color → texture background → content container → optional scanline overlay. The overlay must have `pointer-events: none` and `z-index: 1` so it does not block interaction.
201
201
  6. **Full-bleed hero walls** use scanline + vignette simultaneously: scanline on `::after` for the line pattern, vignette on `::before` for the edge fade. Both get `pointer-events: none`.
202
202
 
@@ -204,21 +204,21 @@ Company/project differentiation: the parent 7K brand uses vivid magenta (`--bran
204
204
 
205
205
  ```
206
206
  Section 1 (hero) — Scanline overlay + noise grain, full-bleed
207
- ↓ separator-onebit
207
+ ↓ separator-solid
208
208
  Section 2 (content) — Solid surface, no texture (reading zone)
209
- ↓ separator-onebit
209
+ ↓ separator-solid
210
210
  Section 3 (stats) — Halftone-md background with accent tint
211
- ↓ separator-onebit
211
+ ↓ separator-solid
212
212
  Section 4 (cta) — Scanline-fast overlay, invert section if 1-bit
213
213
  ```
214
214
 
215
215
  ### 1-bit section variants
216
216
 
217
- - **Full invert section**: swap `--bg-base` with `--onebit-white`, `--text-primary` with `--onebit-black`. Used for CTAs, callout panels, or manga-style splash panels. Add `.diagonal-stripes-negative` for max contrast.
217
+ - **Full invert section**: swap `--bg-base` with `--color-paper`, `--text-primary` with `--color-ink`. Used for CTAs, callout panels, or manga-style splash panels. Add `.bg-diagonal-stripes-negative` for max contrast.
218
218
  - **Scanline hero**: dark canvas, scanline overlay, accent headline with glow. The scanline `::after` sits above the background but below all content (`z-index: 1`). Content gets `position: relative; z-index: 2`.
219
- - **Halftone card wall**: grid of cards with `.halftone-sm` or `.halftone-md` on the section container. Each card has solid `.card` background that breaks the texture — texture only lives between cards.
220
- - **Noise backdrop**: `.noise` on full-page backgrounds for analog feel. Use `.noise-heavy` only on splash/loading screens where content density is low.
221
- - **Vignette frame**: `.vignette-onebit` on slide/scene containers to draw the eye center. Used in intro animations and splash panels.
219
+ - **Halftone card wall**: grid of cards with `.bg-halftone-sm` or `.bg-halftone-md` on the section container. Each card has solid `.card` background that breaks the texture — texture only lives between cards.
220
+ - **Noise backdrop**: `.bg-noise` on full-page backgrounds for analog feel. Use `.bg-noise-heavy` only on splash/loading screens where content density is low.
221
+ - **Vignette frame**: `.bg-vignette-ink` on slide/scene containers to draw the eye center. Used in intro animations and splash panels.
222
222
 
223
223
  ## 1c. Isometric Backgrounds — CSS-only 3D Perspective Patterns
224
224
 
@@ -228,17 +228,17 @@ Section 4 (cta) — Scanline-fast overlay, invert section if 1-bit
228
228
 
229
229
  | Class | Description | Technique |
230
230
  | ------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------- |
231
- | `.isometric-grid` | Diamond tiling from dual 30°/-30° hatch lines at 24px pitch | `repeating-linear-gradient(30deg)` + `(-30deg)` |
232
- | `.isometric-grid-dense` | Tighter 12px diamond grid | Same technique, denser pitch |
233
- | `.isometric-grid-accent` | Magenta-tinted 24px diamond grid | Same, with `--magenta-500 / 0.12` stroke |
234
- | `.isometric-cubes` | 3-face cube wall: right (150°), top (-30°), left (30°) faces at 40px | 3 `repeating-linear-gradient` layers with face-specific opacity |
235
- | `.isometric-cubes-dense` | 20px cube wall | Same, finer resolution |
236
- | `.isometric-cubes-accent` | Magenta-tinted cube wall | Same, with accent hue fills |
237
- | `.isometric-pyramid` | Ascending zigzag steps: 150° + -30° gradients | Dual gradient with offset phase |
238
- | `.isometric-hex` | Honeycomb hex grid from 60°/-60°/0° overlapping | 3 `repeating-linear-gradient` layers |
239
- | `.isometric-pipes` | Converging tunnel perspective: left/right walls (30°/-30°) + floor (0°) | 3-gradient tunnel simulation |
240
- | `.isometric-pipes-fast` | Denser tunnel, 8px walls | Same, tighter spacing |
241
- | `.isometric-terrain` | Multi-layer depth: horizontal + 30° + -30° zigzag | 3-layer parallax-ready composition |
231
+ | `.iso-grid` | Diamond tiling from dual 30°/-30° hatch lines at 24px pitch | `repeating-linear-gradient(30deg)` + `(-30deg)` |
232
+ | `.iso-grid-dense` | Tighter 12px diamond grid | Same technique, denser pitch |
233
+ | `.iso-grid-accent` | Magenta-tinted 24px diamond grid | Same, with `--magenta-500 / 0.12` stroke |
234
+ | `.iso-cubes` | 3-face cube wall: right (150°), top (-30°), left (30°) faces at 40px | 3 `repeating-linear-gradient` layers with face-specific opacity |
235
+ | `.iso-cubes-dense` | 20px cube wall | Same, finer resolution |
236
+ | `.iso-cubes-accent` | Magenta-tinted cube wall | Same, with accent hue fills |
237
+ | `.iso-pyramid` | Ascending zigzag steps: 150° + -30° gradients | Dual gradient with offset phase |
238
+ | `.iso-hex` | Honeycomb hex grid from 60°/-60°/0° overlapping | 3 `repeating-linear-gradient` layers |
239
+ | `.iso-pipes` | Converging tunnel perspective: left/right walls (30°/-30°) + floor (0°) | 3-gradient tunnel simulation |
240
+ | `.iso-pipes-fast` | Denser tunnel, 8px walls | Same, tighter spacing |
241
+ | `.iso-terrain` | Multi-layer depth: horizontal + 30° + -30° zigzag | 3-layer parallax-ready composition |
242
242
 
243
243
  ### Composition rules
244
244
 
@@ -253,7 +253,7 @@ Section 4 (cta) — Scanline-fast overlay, invert section if 1-bit
253
253
 
254
254
  The color system has three strict layers:
255
255
 
256
- 1. **Raw ramps** — 11-step scales (50–950) for Neutral, Magenta, Solar, Cyan, Acid, Ember, plus extended below-ramp values (1000, void) and 4 semantic ramps (Success, Warning, Danger, Info). Never reference these directly in components.
256
+ 1. **Raw ramps** — 11-step scales (50–950) for Neutral, Magenta (7KGroup), Cyan (7KMinato), Inari (Inari), plus extended below-ramp values (1000, void) and 4 semantic ramps (Success, Warning, Danger, Info). Never reference these directly in components.
257
257
  2. **Theme role mapping** — `--bg-*`, `--text-*`, `--border-*`, `--brand-*`, `--status-*`, `--accent-*` tokens that map ramp values to functional roles. Remap per dark/light theme. This is the only layer components touch.
258
258
  3. **Semantic colors** — `--status-success/warning/danger/info` tokens bound by **meaning, not decoration**. Use only for actual machine-state indication (badges, toasts, validation). Never use for decorative borders, accent accents, or non-status backgrounds.
259
259
 
@@ -273,8 +273,8 @@ All ramps follow the same 11-step pattern (50 = lightest, 950 = darkest). Two ex
273
273
  | `--neutral-100` | `#EEEEF1` | — | `--bg-elevated` |
274
274
  | `--neutral-200` | `#D7D7DC` | — | `--bg-raised`, `--status-neutral-bg` |
275
275
  | `--neutral-300` | `#B0B0B8` | `--text-secondary` | `--bg-overlay`, `--text-disabled`, `--status-neutral-fg` |
276
- | `--neutral-400` | `#82828A` | `--status-neutral` | `--bg-pressed`, `--text-tertiary`, `--text-placeholder` |
277
- | `--neutral-500` | `#6B6B72` | `--text-tertiary`, `--text-placeholder` | `--text-secondary` |
276
+ | `--neutral-400` | `#82828A` | `--text-tertiary`, `--status-neutral` | `--bg-pressed`, `--text-placeholder` |
277
+ | `--neutral-500` | `#6B6B72` | `--text-placeholder` | `--text-secondary` |
278
278
  | `--neutral-600` | `#50505A` | `--text-disabled` | — |
279
279
  | `--neutral-700` | `#3A3A42` | `--bg-pressed` | — |
280
280
  | `--neutral-800` | `#26262B` | `--bg-overlay`, `--status-neutral-bg` | — |
@@ -301,29 +301,20 @@ All ramps follow the same 11-step pattern (50 = lightest, 950 = darkest). Two ex
301
301
  | `--magenta-900` | `#570057` | — | — |
302
302
  | `--magenta-950` | `#330033` | `--brand-primary-subtle` (dark) | — |
303
303
 
304
- #### Project accent ramps — Solar / Cyan / Acid / Ember
304
+ #### Project accent ramps — 7KMinato (Cyan) / Inari
305
305
 
306
- Each child project gets a single accent hue. Same 11-step structure; only the base (--500) and the theme-mapped hover (--600 in light) differ.
306
+ Each project gets a single accent hue. Same 11-step structure; only the base (--500) and the theme-mapped hover (--600 in light) differ. (7KGroup's accent is the magenta primary ramp above.)
307
307
 
308
- **Solar — Triangle (hue ~50)**
309
-
310
- `--solar-50: #FFFCE5` → `--solar-500: #FFD60A` → `--solar-950: #332B02`.
311
- Accent token: `--accent-triangle`. Dark: `var(--solar-500)`, Light: `var(--solar-600)`.
312
-
313
- **Cyan — Circle (hue ~190)**
308
+ **Cyan — 7KMinato (hue ~190)**
314
309
 
315
310
  `--cyan-50: #E5FBFF` → `--cyan-500: #00E5FF` → `--cyan-950: #002A2E`.
316
- Accent token: `--accent-circle`. Dark: `var(--cyan-500)`, Light: `var(--cyan-600)`.
317
-
318
- **Acid — Grid (hue ~105)**
311
+ Accent token: `--accent-7kminato`. Dark: `var(--cyan-500)`, Light: `var(--cyan-600)`.
319
312
 
320
- `--acid-50: #F2FFE5` → `--acid-500: #7CFF00` → `--acid-950: #172E00`.
321
- Accent token: `--accent-grid`. Dark: `var(--acid-500)`, Light: `var(--acid-600)`.
313
+ **Inari — Inari project (hue ~18, Fushimi Inari palette)**
322
314
 
323
- **Ember — Line (hue ~15)**
324
-
325
- `--ember-50: #FFEEE5` → `--ember-500: #FF6B35` → `--ember-950: #331205`.
326
- Accent token: `--accent-line`. Dark: `var(--ember-500)`, Light: `var(--ember-600)`.
315
+ `--inari-50: #FDEEE7` → `--inari-500: #EE560D` (Orangealicious) → `--inari-950: #2B1C17` (Tetsu-Guro Black).
316
+ Named stops: `--inari-400` Knockout Orange `#E56F3F`, `--inari-600` Red Panda `#C44813`, `--inari-800` Rogan Josh `#8B310D`.
317
+ Accent token: `--accent-inari`. Dark: `var(--inari-500)`, Light: `var(--inari-600)`.
327
318
 
328
319
  #### Semantic ramps (raw)
329
320
 
@@ -338,8 +329,8 @@ Each has a full 11-step scale (50–950). Never use directly — always go throu
338
329
 
339
330
  #### 1-bit primitives
340
331
 
341
- - `--onebit-black: #000000` (`oklch(0% 0 0)`)
342
- - `--onebit-white: #FFFFFF` (`oklch(100% 0 0)`)
332
+ - `--color-ink: #000000` (`oklch(0% 0 0)`)
333
+ - `--color-paper: #FFFFFF` (`oklch(100% 0 0)`)
343
334
 
344
335
  ---
345
336
 
@@ -423,15 +414,13 @@ Each has a full 11-step scale (50–950). Never use directly — always go throu
423
414
 
424
415
  #### Project accent tokens
425
416
 
426
- | Token | Dark base | Light base | Project | Pixel variant |
427
- | ------------------- | --------------- | --------------- | --------- | ------------- |
428
- | `--accent-square` | `--magenta-500` | `--magenta-500` | 7K parent | Square |
429
- | `--accent-triangle` | `--solar-500` | `--solar-600` | Triangle | Triangle |
430
- | `--accent-circle` | `--cyan-500` | `--cyan-600` | Circle | Circle |
431
- | `--accent-grid` | `--acid-500` | `--acid-600` | Grid | Grid |
432
- | `--accent-line` | `--ember-500` | `--ember-600` | Line | Line |
417
+ | Token | Dark base | Light base | Project |
418
+ | ------------------ | --------------- | --------------- | ---------------- |
419
+ | `--accent-7kgroup` | `--magenta-500` | `--magenta-500` | 7KGroup (parent) |
420
+ | `--accent-7kminato` | `--cyan-500` | `--cyan-600` | 7KMinato |
421
+ | `--accent-inari` | `--inari-500` | `--inari-600` | Inari |
433
422
 
434
- These tokens are the canonical hue pairings for Geist Pixel variants. They also feed `--brand-secondary` when a project scope is applied via `data-project` or `ProjectProvider`. Light theme shifts project accents one step darker (500→600) to maintain contrast against the brighter background.
423
+ These tokens are the canonical hue for each project. They also feed `--brand-secondary` when a project scope is applied via `data-project` or `ProjectProvider`. Light theme shifts project accents one step darker (500→600) to maintain contrast against the brighter background.
435
424
 
436
425
  ---
437
426
 
@@ -462,7 +451,7 @@ Semantic colors exist **only** for status indication. Each maps to exactly one m
462
451
  2. **Accent on action, not surface** — Brand appears on primary CTAs, focus rings, active borders, brand typography. Never as a full surface background fill.
463
452
  3. **Semantic = meaning only** — Status hues exist for machine-state communication (badge bg, toast icon, validation message, online/offline dot). If it doesn't communicate a machine state, use the raw ramps instead.
464
453
  4. **Status bg uses `--*-bg`** — Status badges and pills use the `--status-*-bg` token, never the solid `--*-500` as a fill.
465
- 5. **Project scoping** — The parent 7K brand uses magenta primary + cyan secondary. Child projects theme `--brand-secondary` to their own hue (solar, cyan, acid, ember) via `data-project` or `ProjectProvider`. Geist Pixel variant pairings use the `--accent-*` tokens. The neutral ramp stays unchanged.
454
+ 5. **Project scoping** — 7KGroup uses magenta, 7KMinato cyan, Inari burnt orange. Within a project scope (`data-project` or `ProjectProvider`), the project accent takes over the **entire brand chain** — `--brand-primary` and `--brand-secondary` (primary/glow buttons, focus rings, brand borders) — making the project hue more prevalent than the 7KGroup baseline. Magenta only persists in constant identity marks (`--accent-7kgroup`, logo/icon strokes). Semantic status colors and the neutral ramp stay unchanged.
466
455
  6. **No raw ramp references in components** — Always reference role tokens (`--bg-elevated`, `--text-primary`, `--border-default`), never raw ramp tokens (`--neutral-950`, `--neutral-50`, etc.). This is how theme switching works.
467
456
  7. **Dark is default, light is opt-in** — `:root` holds dark token mappings. `@media (prefers-color-scheme: light)` overrides only the role tokens. Primitive ramps are shared and unchanged.
468
457
 
@@ -482,11 +471,11 @@ Semantic colors exist **only** for status indication. Each maps to exactly one m
482
471
 
483
472
  | Variant | Weight | Pairs with | Best for |
484
473
  | ------------ | --------------- | ------------------------ | ------------------------------------ |
485
- | **Square** | 400 (Regular) | Magenta (7K parent) | Body-sized pixel text, data displays |
486
- | **Circle** | 500 (Medium) | Cyan | Buttons, badges, navigation |
487
- | **Grid** | 600 (SemiBold) | Acid (Grid project) | Section titles, stat values |
488
- | **Line** | 700 (Bold) | Ember (Line project) | Display headlines, hero text |
489
- | **Triangle** | 800 (ExtraBold) | Solar (Triangle project) | Hero wordmarks, giant headlines |
474
+ | **Square** | 400 (Regular) | Magenta (7KGroup) | Body-sized pixel text, data displays |
475
+ | **Circle** | 500 (Medium) | Cyan (7KMinato) | Buttons, badges, navigation |
476
+ | **Grid** | 600 (SemiBold) | Neutral | Section titles, stat values |
477
+ | **Line** | 700 (Bold) | Neutral | Display headlines, hero text |
478
+ | **Triangle** | 800 (ExtraBold) | Inari (Inari project) | Hero wordmarks, giant headlines |
490
479
 
491
480
  ### Font stacks
492
481
 
@@ -647,9 +636,9 @@ Sharp (0px) and subtle (2–4px) are preferred for 1-bit elements. 8–12px for
647
636
 
648
637
  - Scanline overlay on hero / full-bleed sections
649
638
  - Halftone dot separators between content blocks
650
- - Full-bleed sections use `.separator-onebit` (2px white line at 25% opacity) as rhythm breaks
639
+ - Full-bleed sections use `.bg-separator-solid` (2px white line at 25% opacity) as rhythm breaks
651
640
  - Texture shift between sections: scanline → solid → halftone → solid → scanline. Never two textured sections adjacent.
652
- - Manga panel composition: content is the "panel" (solid black border), background is the "page" (noise or scanline). Each panel gets a `.vignette-onebit` edge fade.
641
+ - Manga panel composition: content is the "panel" (solid black border), background is the "page" (noise or scanline). Each panel gets a `.bg-vignette-ink` edge fade.
653
642
 
654
643
  ### Product shell layout
655
644
 
@@ -677,29 +666,32 @@ Sharp (0px) and subtle (2–4px) are preferred for 1-bit elements. 8–12px for
677
666
 
678
667
  **Modern neon** — the only button system. All buttons use `mono-label` typography (Geist Mono, 11px, 500 weight, 0.12em uppercase) and 4px border-radius. Accent fills use the brand-primary ramp (500→hover:400→active:600). Button groups, split buttons, and loading state are built on the same base.
679
668
 
680
- | Class | Description |
681
- | ----------------------- | ---------------------------------------------------------------------------------------- |
682
- | `.btn-modern` | Base: mono-label typography, 12px/20px padding, `rounded.sm` (4px) |
683
- | `.btn-modern-primary` | `--brand-primary` (`--magenta-500`) fill, `--brand-primary-hover` on hover + glow shadow |
684
- | `.btn-modern-secondary` | `--bg-raised` fill, `--bg-overlay` on hover |
685
- | `.btn-modern-ghost` | Transparent, `--text-secondary` text, subtle bg on hover |
686
- | `.btn-modern-glow` | `--magenta-500` fill + neon glow, `--magenta-400` on hover |
687
- | `.btn-modern-glow-cyan` | `--cyan-500` fill + cyan glow, `--cyan-400` on hover |
688
- | `.btn-modern-glow-grid` | `--acid-500` fill + acid glow, `--acid-400` on hover |
689
- | `.btn-modern-danger` | Transparent + danger border, danger fill on hover |
690
- | `.btn-modern-sm/lg` | Size variants (8px/16px small, 16px/28px large) |
691
- | `.btn-modern-icon` | 40×40 square icon button |
692
- | `.btn-modern-lg-icon` | 52×52 large icon button |
693
- | `.btn-modern-loading` | Loading state — `onebit-spin` replaces icon |
694
- | `.btn-group` | Inline flex container for grouped buttons (adjacent borders merge) |
695
- | `.btn-split` | Split button trigger — last child gets narrower padding + left border |
669
+ | Class | Description |
670
+ | --------------------------- | ------------------------------------------------------------------------------------------ |
671
+ | `.btn` | Base: mono-label typography, 12px/20px padding, `rounded.sm` (4px) |
672
+ | `.btn-primary` | Magenta outline, `--brand-primary-subtle` fill tint on hover, white text when active |
673
+ | `.btn-secondary` | `--bg-raised` fill, `--bg-overlay` on hover |
674
+ | `.btn-ghost` | Transparent, `--text-secondary` text, subtle bg on hover |
675
+ | `.btn-glow` | Magenta outline + persistent neon glow, intensifies on hover |
676
+ | `.btn-accent` | Dynamic `--brand-secondary` outline + fill tint on hover (per-project accent) |
677
+ | `.btn-glow-accent` | `--brand-secondary` fill + glow (the filled "neon" button; magenta for the parent brand) |
678
+ | `.btn-glow-secondary`| Cyan/`--brand-secondary` outline + glow variant of `.btn-glow` |
679
+ | `.btn-danger` | Transparent + danger border, danger fill on hover |
680
+ | `.btn-sm/lg` | Size variants (8px/16px small, 16px/28px large) |
681
+ | `.btn-icon` | 40×40 square icon button |
682
+ | `.btn-lg-icon` | 52×52 large icon button |
683
+ | `.btn-loading` | Loading state — `spin-steps` replaces icon |
684
+ | `.btn:disabled` | 40% opacity, no pointer events, glow removed — applies to every variant |
685
+ | `.btn-group` | Inline flex container for grouped buttons (adjacent borders merge) |
686
+ | `.btn-split` | Split button trigger — last child gets narrower padding + left border |
696
687
 
697
688
  All variants use standard CSS transitions for interaction states:
698
689
 
699
- - **`:hover`** → fill shifts to `--brand-primary-hover` (`--magenta-400`), optional glow shadow intensifies
690
+ - **`:hover`** → border/fill shifts to the `-hover` step of the variant's ramp, optional glow shadow intensifies
700
691
  - **`:focus-visible`** → outline ring
701
- - **`:active`** → fill shifts to `--brand-primary-active` (`--magenta-600`)
702
- - **`Loading`** → `onebit-spin` (0.6s steps(4) infinite — square frame rotation)
692
+ - **`:active`** → fill shifts to the `-muted` step with `--color-paper` text (keeps contrast ≥ 7:1)
693
+ - **`:disabled`** → 40% opacity, `not-allowed` cursor, no glow
694
+ - **`Loading`** → `spin-steps` (0.6s steps(4) infinite — square frame rotation)
703
695
 
704
696
  ### 6b. Form controls
705
697
 
@@ -708,9 +700,9 @@ All variants use standard CSS transitions for interaction states:
708
700
  | `.input` | Text input: black bg, 2px white border, accent glow on focus |
709
701
  | `.textarea` | Multi-line input, same tokens |
710
702
  | `.select-native` | Custom dropdown, SVG chevron |
711
- | `.checkbox` | 16px square, checked fills white (`.checkbox-accent`: fills magenta) |
712
- | `.radio` | 16px square, selected fills white (`.radio-accent`: fills magenta) |
713
- | `.toggle` | 36x18 switch, on state fills white (`.toggle-accent`: fills magenta) |
703
+ | `.checkbox` | 16px square, checked fills white (`.checkbox-accent`: fills `--brand-secondary`) |
704
+ | `.radio` | 16px square, selected fills white (`.radio-accent`: fills `--brand-secondary`) |
705
+ | `.toggle` | 36x18 switch, on state fills white (`.toggle-accent`: fills `--brand-secondary`) |
714
706
  | `.range` | 6px track, 16px square thumb |
715
707
  | `.form-group` | Flex column with gap |
716
708
  | `.form-label` | Mono uppercase label, 11px |
@@ -776,7 +768,7 @@ All variants use standard CSS transitions for interaction states:
776
768
  | Class | Description |
777
769
  | ----------------------------------- | ------------------------------------------- |
778
770
  | `.progress` | 12px bar, 2px border |
779
- | `.progress-accent` | Magenta fill |
771
+ | `.progress-accent` | `--brand-secondary` (project accent) fill |
780
772
  | `.progress-indeterminate` | Scanning bar animation |
781
773
  | `.progress-striped` | Striped fill overlay |
782
774
  | `.spinner` | 20px square rotating frame, 90° steps |
@@ -816,16 +808,16 @@ All variants use standard CSS transitions for interaction states:
816
808
 
817
809
  These classes add thin color to any 1-bit component without breaking the black/white base. Apply alongside the component class.
818
810
 
819
- | Class | Effect |
820
- | ---------------------------------------------------------------------- | ------------------------------- |
821
- | `.accent-border-top` / `.accent-border-left` / `.accent-border-bottom` | 3px magenta border on one edge |
822
- | `.cyan-border-top` / `.grid-border-top` / `.line-border-top` | 3px colored top border |
823
- | `.accent-underline` / `.cyan-underline` | Colored underline on text |
824
- | `.accent-dot` / `.cyan-dot` / `.grid-dot` | Small colored dot after element |
825
- | `.accent-bar` / `.cyan-bar` / `.grid-bar` / `.line-bar` | Thin colored bar across top |
826
- | `.glow-mod` / `.glow-mod-cyan` | Colored glow shadow |
827
- | `.border-mod-accent` / `.border-mod-cyan` | Border color override |
828
- | `.accent-corner` / `.cyan-corner` | Small colored corner badge |
811
+ | Class | Effect |
812
+ | -------------------------------------------------------------------------------------- | ------------------------------------------------- |
813
+ | `.accent-border-top` / `.accent-border-left` / `.accent-border-bottom` | 3px `--brand-primary` (magenta) border on one edge |
814
+ | `.accent-secondary-border-top` / `-left` / `-bottom` | 3px `--brand-secondary` (per-project) border |
815
+ | `.accent-underline` / `.accent-secondary-underline` | Colored underline on text |
816
+ | `.accent-dot` / `.accent-secondary-dot` | Small colored dot after element |
817
+ | `.accent-bar` / `.accent-secondary-bar` | Thin colored bar across top |
818
+ | `.glow-mod` / `.glow-mod-secondary` | Colored glow shadow |
819
+ | `.border-mod-accent` / `.border-mod-secondary` | Border color override |
820
+ | `.accent-corner` / `.accent-secondary-corner` | Small colored corner badge |
829
821
 
830
822
  ### 1-bit composition rules
831
823
 
@@ -859,8 +851,8 @@ These classes add thin color to any 1-bit component without breaking the black/w
859
851
 
860
852
  | Animation | Class | Duration | Type | Description |
861
853
  | --------------- | ---------------------------------- | ---------------------------- | ------- | ------------------------------------------------------------------------- |
862
- | Scanline scroll | `.scanline` (::after) | 8s linear infinite | Ambient | Horizontal lines scroll down — signature 7K texture |
863
- | Scanline fast | `.scanline-fast` (::after) | 3s linear infinite | Ambient | Faster variant for high-energy sections |
854
+ | Scanline scroll | `.bg-scanline` (::after) | 8s linear infinite | Ambient | Horizontal lines scroll down — signature 7K texture |
855
+ | Scanline fast | `.bg-scanline-fast` (::after) | 3s linear infinite | Ambient | Faster variant for high-energy sections |
864
856
  | Basic glitch | `.glitch` | 0.3s, 3 iterations | Trigger | Translate jitter on 5 random frames |
865
857
  | Complex glitch | `.glitch-complex` | 0.8s, 2 iterations | Trigger | Multi-axis + skew + clip-path splits |
866
858
  | Glitch accent | `.glitch-accent` | 0.4s, 2 iterations | Trigger | Glitch with magenta glow trail |
@@ -868,11 +860,11 @@ These classes add thin color to any 1-bit component without breaking the black/w
868
860
  | Binary blink | `.blink` / `.blink-fast` | 1s / 0.4s step-end | Ambient | Sharp on/off toggle |
869
861
  | Typewriter | `.typewriter` | 1.5s (30 steps) | Trigger | Text reveal from left |
870
862
  | Neon pulse | `.neon-pulse` / `.neon-pulse-cyan` | 2s ease-in-out | Ambient | Accent glow oscillation |
871
- | Noise shift | `.noise-animated` | 0.5s, steps(5) | Ambient | SVG noise translates in discrete positions |
863
+ | Noise shift | `.bg-noise-animated` | 0.5s, steps(5) | Ambient | SVG noise translates in discrete positions |
872
864
  | Scan reveal | `.scan-reveal` | 2s, 1 iteration | Trigger | White bar sweeps down |
873
- | Pixel fade-in | `.pixel-fade-in` | 0.6s, steps(8) | Trigger | Left-to-right reveal in pixel steps |
865
+ | Pixel fade-in | `.step-fade-in` | 0.6s, steps(8) | Trigger | Left-to-right reveal in stepped frames |
874
866
  | Invert flash | `.invert-flash` | 0.15s, 2 iterations | Trigger | Full filter inversion burst |
875
- | Pixel dots | `.pixel-dots` / `.pixel-dots-fast` | 0.3s, steps(4), 2 iterations | Trigger | Small black squares scatter at random positions — 1-bit corruption effect |
867
+ | Pixel dots | `.step-dots` / `.step-dots-fast` | 0.3s, steps(4), 2 iterations | Trigger | Small black squares scatter at random positions — stepped corruption effect |
876
868
  | Progress scan | `.progress-indeterminate` | 1.5s | Loading | Bar sweeps left-to-right |
877
869
  | Skeleton pulse | `.skeleton` | 1.2s ease-in-out | Loading | Opacity pulse |
878
870
  | Slide-up reveal | `.slide-up-reveal` | 0.5s ease-out | Trigger | Content rises with clip-path |
@@ -899,7 +891,7 @@ These classes add thin color to any 1-bit component without breaking the black/w
899
891
 
900
892
  1. **One ambient + one trigger.** At most one ambient animation (scanline, noise, flicker, shimmer, iso-grid-scroll) runs continuously. Triggered animations (glitch, invert-flash, scan-reveal, iso-assemble, iso-perspective-dolly) fire on interaction.
901
893
  2. **Glitch is a burst, not a loop.** Basic glitch runs exactly 3 iterations (0.9s total) on the class utility. Pixel-dots runs 2 iterations (0.6s) for a quick corruption scatter. Never loop glitch infinitely.
902
- 3. **Scanline is the default ambient.** Every hero/full-bleed section should evaluate whether `.scanline` adds atmosphere. UI content sections (dashboard, settings) must not use ambient animation.
894
+ 3. **Scanline is the default ambient.** Every hero/full-bleed section should evaluate whether `.bg-scanline` adds atmosphere. UI content sections (dashboard, settings) must not use ambient animation.
903
895
  4. **Cascade: reduced-motion wins.** All animations collapse to 0.01ms at `prefers-reduced-motion: reduce`. No exceptions.
904
896
  5. **Step timing for pixel-perfect animation.** Keyframes that simulate digital/retro effects use `steps()` timing instead of `ease`. This preserves sharp on/off quality.
905
897
  6. **Overlay animations must have `pointer-events: none`.** Scanline, vignette, noise, and scan-reveal use `::before`/`::after` pseudo-elements.
@@ -908,11 +900,11 @@ These classes add thin color to any 1-bit component without breaking the black/w
908
900
 
909
901
  | Surface | Ambient animation | Trigger animation |
910
902
  | -------------------------- | ------------------------- | ------------------------------ |
911
- | Landing / marketing hero | `.scanline` (8s) | `.scan-reveal` on load |
903
+ | Landing / marketing hero | `.bg-scanline` (8s) | `.scan-reveal` on load |
912
904
  | Dashboard / app shell | None | `.glitch` on filter change |
913
905
  | Loading state | `.skeleton` or `.shimmer` | None |
914
906
  | Error state | None | `.glitch-complex` on container |
915
- | 1-bit splash / manga panel | `.scanline-fast` (3s) | `.invert-flash` on page enter |
907
+ | 1-bit splash / manga panel | `.bg-scanline-fast` (3s) | `.invert-flash` on page enter |
916
908
  | Toast / notification | None | `.slide-up-reveal` on mount |
917
909
  | Button (accent) | None | Color transition on hover |
918
910
  | Accent text | `.accent-flicker` | None |
@@ -963,10 +955,10 @@ import { Button } from '7k-design-system/react';
963
955
 
964
956
  **CSS classes applied:**
965
957
 
966
- - Base: `.btn-modern`
967
- - Variant: `.btn-modern-{variant}` (e.g., `.btn-modern-primary`)
968
- - Size: `.btn-modern-sm` | `.btn-modern-lg` (md applies no extra class)
969
- - Loading: `.btn-modern-loading` when `loading={true}`
958
+ - Base: `.btn`
959
+ - Variant: `.btn-{variant}` (e.g., `.btn-primary`)
960
+ - Size: `.btn-sm` | `.btn-lg` (md applies no extra class)
961
+ - Loading: `.btn-loading` when `loading={true}`
970
962
 
971
963
  **Behavior:** Forwards ref to `<button>`. Combines `className` prop with generated classes. Sets `aria-busy` when loading.
972
964
 
@@ -1168,19 +1160,7 @@ import { IsometricBackground } from '7k-design-system/react';
1168
1160
  </IsometricBackground>
1169
1161
  ```
1170
1162
 
1171
- **CSS classes applied:** `.isometric-grid`, `.isometric-grid-animated`
1172
-
1173
- ### MangaPanel
1174
-
1175
- ```typescript
1176
- import { MangaPanel } from '7k-design-system/react';
1177
-
1178
- <MangaPanel frame texture="halftone" speedLine="horizontal">
1179
- Splash content
1180
- </MangaPanel>
1181
- ```
1182
-
1183
- **CSS classes applied:** `.panel`, `.panel-frame`, `.panel-halftone`, `.speed-line-horizontal`
1163
+ **CSS classes applied:** `.iso-grid`, `.iso-grid-animated`
1184
1164
 
1185
1165
  ### ThemeToggle
1186
1166
 
@@ -1289,7 +1269,7 @@ The CSS is split into 10 source files under `src/css/`, compiled into `dist/7k-d
1289
1269
  | `isometric.css` | ~12.5KB | 11 isometric patterns: grid, cubes, pyramid, hex, pipes, terrain + animation variants |
1290
1270
  | `components.css` | ~36KB | 40+ component classes: buttons, forms, nav, data display, overlays, feedback, media, misc |
1291
1271
  | `modifiers.css` | ~2.2KB | Accent layer modifiers: border-top, underline, dot, bar, glow, corner |
1292
- | `animations.css` | ~15.8KB | 20+ keyframe animations: glitch, flicker, blink, typewriter, neon-pulse, scan-reveal, pixel-fade, iso-float |
1272
+ | `animations.css` | ~15.8KB | 20+ keyframe animations: glitch, flicker, blink, typewriter, neon-pulse, scan-reveal, step-fade, iso-float |
1293
1273
  | `accessibility.css` | ~0.6KB | `prefers-reduced-motion` collapse, `:focus-visible` rings, `prefers-contrast` support, screen-reader utilities |
1294
1274
 
1295
1275
  ### PostCSS Pipeline
@@ -1361,7 +1341,6 @@ Port: 6006
1361
1341
  | `Components/Badges` (`Components.stories.tsx`) | Badge variants |
1362
1342
  | `Components/Cards` (`Components.stories.tsx`) | Card styles and textures |
1363
1343
  | `Components/TexturedCards` | Textured card variants |
1364
- | `Components/MangaPanels` | Manga panel frames and textures |
1365
1344
  | `Components/Navigation` (`Components.stories.tsx`) | Nav patterns |
1366
1345
  | `Components/Alerts` (`Components.stories.tsx`) | Alert variants |
1367
1346
  | `Components/Toasts` (`Components.stories.tsx`) | Toast variants |
@@ -1417,4 +1396,4 @@ npm run chromatic # Visual regression testing
1417
1396
  | Multiple textures on the same section layer | Max one background + one overlay per section |
1418
1397
  | Continuous animation on UI surfaces | Ambient animations are for hero/landing sections only |
1419
1398
  | Isometric animation on interactive UI | Isometric bg + motion is for hero/splash sections only; never on cards, buttons, or form controls |
1420
- | Mixing 1-bit button patterns into product surfaces | Use the modern button system (.btn-modern\*) for all product surfaces. 1-bit button classes (.btn, .btn-primary, .btn-accent) are removed — do not reintroduce raw invert-hover buttons in place of modern neon buttons. |
1399
+ | Mixing 1-bit button patterns into product surfaces | Use the modern button system (.btn\*) for all product surfaces. 1-bit button classes (.btn, .btn-primary, .btn-accent) are removed — do not reintroduce raw invert-hover buttons in place of modern neon buttons. |
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # 7k-design-system
2
2
 
3
- > Dark-first, neon-accented, manga-inflected design system for multi-project tech company 7K.
4
- > Built for midnight. Three-font system. Major neon #FF0FF. Secondary neon cyan (thematic per project). Background textures on components. Manga panels. Isometric animations.
3
+ > Dark-first, neon-accented design system for multi-project tech company 7K.
4
+ > Built for midnight. Three-font system. Major neon #FF0FF. Secondary neon cyan (thematic per project). Background textures on components. Callouts & surfaces. Isometric animations.
5
5
 
6
6
  ## Product Overview
7
7
 
8
- **7k-design-system** is a dark-first dual-theme design system created for 7K, a technology holding company with multiple sub-projects. The system embodies a Tokyo neon atmosphere — high contrast, nocturnal canvas, electric accents — combined with manga-influenced 1-bit visual language using pure black and white textures.
8
+ **7k-design-system** is a dark-first dual-theme design system created for 7K, a technology holding company with multiple sub-projects. The system embodies a Tokyo neon atmosphere — high contrast, nocturnal canvas, electric accents — combined with high-contrast visual language using pure black and white textures.
9
9
 
10
10
  **Source product:** 7K is a technology holding company that builds infrastructure, AI pipelines, and digital products across multiple sub-projects. This design system serves as the visual foundation for 7K and all its child projects, providing a unified design language that differentiates sub-projects through accent color overrides while maintaining consistent typography, spacing, component patterns, and animation systems across all surfaces.
11
11
 
@@ -17,7 +17,7 @@ The design system supports five primary surfaces:
17
17
  | ----------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
18
18
  | **Company Website** | Dark landing pages with scanline heroes, project showcases, stats grids | `DESIGN.md` §1–5, `src/stories/Components.stories.tsx` |
19
19
  | **Product Dashboard** | Data-dense admin interfaces with sidebar nav, tables, status cards | `src/react/components/`, `src/stories/Components.stories.tsx` |
20
- | **Sub-project Landing** | Child project pages with accent hue overrides (cyan, acid, ember, solar) | `DESIGN.md` §2 (accent tokens), `src/css/projects.css` |
20
+ | **Sub-project Landing** | Project pages with accent hue overrides (magenta = 7KGroup, cyan = 7KMinato, inari = Inari) | `DESIGN.md` §2 (accent tokens), `src/css/projects.css` |
21
21
  | **Internal Tools** | CLI-like interfaces, monitoring panels, resource dashboards | `DESIGN.md` §3 (mono labels), `src/stories/Tokens.mdx` |
22
22
  | **Mobile App** | Responsive adaptations with bottom tab nav, touch-friendly targets | `DESIGN.md` §5 (responsive grid), `src/stories/Components.stories.tsx` |
23
23
 
@@ -28,11 +28,11 @@ The system provides these core capabilities:
28
28
  - **Dark-first theming** with opt-in light mode via `data-theme="light"`
29
29
  - **Major neon accent** (#FF0FF magenta) + **secondary neon accent** (cyan by default, thematic per project)
30
30
  - **Three-font system**: Geist Sans (display/body), Geist Mono (labels/code), Geist Pixel (5 geometric variants for ornamental use)
31
- - **Texture categories**: scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette, isometric, manga panels
32
- - **40+ 1-bit components**: zero-radius, 2px white borders, invert-on-hover, thin accent modifiers
31
+ - **Texture categories**: scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette, isometric, surfaces & callouts
32
+ - **40+ components**: sharp geometry, high-contrast borders, invert-on-hover, thin accent modifiers
33
33
  - **Textured component variants**: halftone, scanline, noise, dots, crosshatch on cards, panels, modals, drawers, toasts, buttons
34
- - **20+ animations**: ambient (scanline scroll, CRT flicker, neon pulse) and trigger (glitch, pixel-dots, invert-flash)
35
- - **Isometric geometry animations**: combined animated background classes (`.isometric-grid-animated`, etc.)
34
+ - **20+ animations**: ambient (scanline scroll, CRT flicker, neon pulse) and trigger (glitch, step-dots, invert-flash)
35
+ - **Isometric geometry animations**: combined animated background classes (`.iso-grid-animated`, etc.)
36
36
  - **Engineering-blueprint aesthetic**: mono labels as "connective tissue" throughout all surfaces
37
37
  - **React UI kit**: 20+ TypeScript components wrapping the CSS system
38
38
 
@@ -47,8 +47,8 @@ Every design rule is grounded in the original brand brief (quoted inline in `DES
47
47
  | "Our main brand color is #FF0FF" | Major magenta accent; cyan secondary (thematic per project) |
48
48
  | "Tech company with different projects" | Sub-project accent overrides via `--brand-secondary` and `--accent-*` tokens |
49
49
  | "Tokyo's neon atmosphere" | Dark near-black canvas (`#0A0A0D`), electric accents, no warm/beige tones |
50
- | "Manga-influenced 1-bit" | Pure black/white elements, texture patterns, manga panel utilities, zero radius, 2px borders |
51
- | "Abstract 1-bit animations" | 20+ keyframes with step timing for retro digital feel |
50
+ | "High-contrast textures" | Pure black/white elements, texture patterns, surface & callout utilities, zero radius, 2px borders |
51
+ | "Stepped animations" | 20+ keyframes with step timing for retro digital feel |
52
52
  | "Dark theme for websites" | Dark-first: `--bg-void: #000000`, `--bg-base: #0A0A0D`; light is opt-in |
53
53
 
54
54
  ## Package Contents
@@ -69,9 +69,9 @@ Every design rule is grounded in the original brand brief (quoted inline in `DES
69
69
  ├── fonts/ # Geist Pixel font files (preserved originals)
70
70
  │ ├── GeistPixel-Square.ttf # 400 weight · pairs with magenta (7K parent)
71
71
  │ ├── GeistPixel-Circle.ttf # 500 weight · pairs with cyan
72
- │ ├── GeistPixel-Grid.ttf # 600 weight · pairs with acid
73
- │ ├── GeistPixel-Line.ttf # 700 weight · pairs with ember
74
- │ └── GeistPixel-Triangle.ttf # 800 weight · pairs with solar
72
+ │ ├── GeistPixel-Grid.ttf # 600 weight · neutral
73
+ │ ├── GeistPixel-Line.ttf # 700 weight · neutral
74
+ │ └── GeistPixel-Triangle.ttf # 800 weight · pairs with Inari
75
75
  │
76
76
  ├── src/ # Source code
77
77
  │ ├── css/ # Modular CSS source files
@@ -107,7 +107,7 @@ npm run build-storybook # Static build for deployment
107
107
  | -------------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
108
108
  | **Colors & Tokens** | `src/stories/Tokens.mdx` | Magenta/cyan brand ramps, semantic brand tokens, neutral/status colors, typography scale, spacing, radii, shadows | `src/css/tokens.css`; `DESIGN.md` §2–4 |
109
109
  | **Components** | `src/stories/Components.stories.tsx` | Modern neon button system (primary, glow, secondary, ghost, danger), cards, modals, drawers, toasts, tooltips, alerts, tabs, nav, inputs, toggles, selects, textareas, texture overlays | `src/react/components/`; `src/css/components.css` |
110
- | **Textures** | `src/stories/Textures.stories.tsx` | All texture categories with density variants: scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette, separators, manga panels | `src/css/textures.css`; `src/css/manga.css`; `DESIGN.md` |
110
+ | **Textures** | `src/stories/Textures.stories.tsx` | All texture categories with density variants: scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette, separators, surfaces & callouts | `src/css/textures.css`; `src/css/callouts.css`; `DESIGN.md` |
111
111
  | **Icons & Logos** | `src/stories/Icons.stories.tsx` | Curated icon set, logo variants, brand application rules, contextual previews | `build/` directory; `src/react/components/Icon.tsx` |
112
112
  | **Theme / Projects** | `src/stories/ThemeToggle.stories.tsx` | Light/dark/system theme switching and project accent overrides | `src/react/theme/`; `src/css/projects.css` |
113
113
  | **Overview** | `src/stories/Overview.mdx` | Design principles, voice/tone, anti-patterns, reuse workflow | `DESIGN.md`; `SKILL.md`; `CONSUMER_GUIDE.md` |
@@ -147,11 +147,11 @@ Requires self-hosting the `fonts/` directory for Geist Pixel variants.
147
147
  2. **Bind tokens** — Import `colors_and_type.css` (or `dist/7k-design-system.css` for external use)
148
148
  3. **Override accent** — For child projects, set the appropriate `--accent-*` token:
149
149
  ```css
150
- .project-neon {
151
- --accent-circle: var(--cyan-500);
150
+ .project-7kminato {
151
+ --accent-7kminato: var(--cyan-500);
152
152
  }
153
- .project-grid {
154
- --accent-grid: var(--acid-500);
153
+ .project-inari {
154
+ --accent-inari: var(--inari-500);
155
155
  }
156
156
  ```
157
157
  4. **Preview tokens** — Run `npm run storybook` and open the Colors, Tokens, Textures, and Components stories to verify values render correctly
@@ -171,8 +171,8 @@ Requires self-hosting the `fonts/` directory for Geist Pixel variants.
171
171
  font-family: var(--font-sans);
172
172
  }
173
173
  ```
174
- 4. **Apply textures** — Add classes like `.scanline`, `.halftone-md`, `.noise` to sections
175
- 5. **Use components** — Apply classes like `.btn-modern-primary`, `.badge-success`, `.input`
174
+ 4. **Apply textures** — Add classes like `.bg-scanline`, `.bg-halftone-md`, `.bg-noise` to sections
175
+ 5. **Use components** — Apply classes like `.btn-primary`, `.badge-success`, `.input`
176
176
 
177
177
  ## File Structure Notes
178
178