|
1 | | -# Design System Master File |
2 | | - |
3 | | -> **LOGIC:** When building a specific page, first check `design-system/pages/[page-name].md`. |
4 | | -> If that file exists, its rules **override** this Master file. |
5 | | -> If not, strictly follow the rules below. |
6 | | -
|
7 | | ---- |
8 | | - |
9 | | -**Project:** ONEComputer |
10 | | -**Generated:** 2026-07-12 19:56:06 |
11 | | -**Category:** Cybersecurity Platform |
12 | | - |
13 | | ---- |
14 | | - |
15 | | -## Global Rules |
16 | | - |
17 | | -### Color Palette |
18 | | - |
19 | | -| Role | Hex | CSS Variable | |
20 | | -|------|-----|--------------| |
21 | | -| Primary | `#0369A1` | `--color-primary` | |
22 | | -| Secondary | `#0EA5E9` | `--color-secondary` | |
23 | | -| CTA/Accent | `#22C55E` | `--color-cta` | |
24 | | -| Background | `#F0F9FF` | `--color-background` | |
25 | | -| Text | `#0C4A6E` | `--color-text` | |
26 | | - |
27 | | -**Color Notes:** Security blue + protected green |
28 | | - |
29 | | -### Typography |
30 | | - |
31 | | -- **Heading Font:** JetBrains Mono |
32 | | -- **Body Font:** IBM Plex Sans |
33 | | -- **Mood:** code, developer, technical, precise, functional, hacker |
34 | | -- **Google Fonts:** [JetBrains Mono + IBM Plex Sans](https://fonts.google.com/share?selection.family=IBM+Plex+Sans:wght@300;400;500;600;700|JetBrains+Mono:wght@400;500;600;700) |
35 | | - |
36 | | -**CSS Import:** |
37 | | -```css |
38 | | -@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap'); |
39 | | -``` |
40 | | - |
41 | | -### Spacing Variables |
42 | | - |
43 | | -| Token | Value | Usage | |
44 | | -|-------|-------|-------| |
45 | | -| `--space-xs` | `4px` / `0.25rem` | Tight gaps | |
46 | | -| `--space-sm` | `8px` / `0.5rem` | Icon gaps, inline spacing | |
47 | | -| `--space-md` | `16px` / `1rem` | Standard padding | |
48 | | -| `--space-lg` | `24px` / `1.5rem` | Section padding | |
49 | | -| `--space-xl` | `32px` / `2rem` | Large gaps | |
50 | | -| `--space-2xl` | `48px` / `3rem` | Section margins | |
51 | | -| `--space-3xl` | `64px` / `4rem` | Hero padding | |
52 | | - |
53 | | -### Shadow Depths |
54 | | - |
55 | | -| Level | Value | Usage | |
56 | | -|-------|-------|-------| |
57 | | -| `--shadow-sm` | `0 1px 2px rgba(0,0,0,0.05)` | Subtle lift | |
58 | | -| `--shadow-md` | `0 4px 6px rgba(0,0,0,0.1)` | Cards, buttons | |
59 | | -| `--shadow-lg` | `0 10px 15px rgba(0,0,0,0.1)` | Modals, dropdowns | |
60 | | -| `--shadow-xl` | `0 20px 25px rgba(0,0,0,0.15)` | Hero images, featured cards | |
61 | | - |
62 | | ---- |
63 | | - |
64 | | -## Component Specs |
65 | | - |
66 | | -### Buttons |
67 | | - |
68 | | -```css |
69 | | -/* Primary Button */ |
70 | | -.btn-primary { |
71 | | - background: #22C55E; |
72 | | - color: white; |
73 | | - padding: 12px 24px; |
74 | | - border-radius: 8px; |
75 | | - font-weight: 600; |
76 | | - transition: all 200ms ease; |
77 | | - cursor: pointer; |
78 | | -} |
79 | | - |
80 | | -.btn-primary:hover { |
81 | | - opacity: 0.9; |
82 | | - transform: translateY(-1px); |
83 | | -} |
84 | | - |
85 | | -/* Secondary Button */ |
86 | | -.btn-secondary { |
87 | | - background: transparent; |
88 | | - color: #0369A1; |
89 | | - border: 2px solid #0369A1; |
90 | | - padding: 12px 24px; |
91 | | - border-radius: 8px; |
92 | | - font-weight: 600; |
93 | | - transition: all 200ms ease; |
94 | | - cursor: pointer; |
95 | | -} |
96 | | -``` |
97 | | - |
98 | | -### Cards |
99 | | - |
100 | | -```css |
101 | | -.card { |
102 | | - background: #F0F9FF; |
103 | | - border-radius: 12px; |
104 | | - padding: 24px; |
105 | | - box-shadow: var(--shadow-md); |
106 | | - transition: all 200ms ease; |
107 | | - cursor: pointer; |
108 | | -} |
109 | | - |
110 | | -.card:hover { |
111 | | - box-shadow: var(--shadow-lg); |
112 | | - transform: translateY(-2px); |
113 | | -} |
114 | | -``` |
115 | | - |
116 | | -### Inputs |
117 | | - |
118 | | -```css |
119 | | -.input { |
120 | | - padding: 12px 16px; |
121 | | - border: 1px solid #E2E8F0; |
122 | | - border-radius: 8px; |
123 | | - font-size: 16px; |
124 | | - transition: border-color 200ms ease; |
125 | | -} |
126 | | - |
127 | | -.input:focus { |
128 | | - border-color: #0369A1; |
129 | | - outline: none; |
130 | | - box-shadow: 0 0 0 3px #0369A120; |
131 | | -} |
132 | | -``` |
133 | | - |
134 | | -### Modals |
135 | | - |
136 | | -```css |
137 | | -.modal-overlay { |
138 | | - background: rgba(0, 0, 0, 0.5); |
139 | | - backdrop-filter: blur(4px); |
140 | | -} |
141 | | - |
142 | | -.modal { |
143 | | - background: white; |
144 | | - border-radius: 16px; |
145 | | - padding: 32px; |
146 | | - box-shadow: var(--shadow-xl); |
147 | | - max-width: 500px; |
148 | | - width: 90%; |
149 | | -} |
150 | | -``` |
151 | | - |
152 | | ---- |
153 | | - |
154 | | -## Style Guidelines |
155 | | - |
156 | | -**Style:** Cyberpunk UI |
157 | | - |
158 | | -**Keywords:** Neon, dark mode, terminal, HUD, sci-fi, glitch, dystopian, futuristic, matrix, tech noir |
159 | | - |
160 | | -**Best For:** Gaming platforms, tech products, crypto apps, sci-fi applications, developer tools, entertainment |
161 | | - |
162 | | -**Key Effects:** Neon glow (text-shadow), glitch animations (skew/offset), scanlines (::before overlay), terminal fonts |
163 | | - |
164 | | -### Page Pattern |
165 | | - |
166 | | -**Pattern Name:** App Store Style Landing |
167 | | - |
168 | | -- **Conversion Strategy:** Show real screenshots. Include ratings (4.5+ stars). QR code for mobile. Platform-specific CTAs. |
169 | | -- **CTA Placement:** Download buttons prominent (App Store + Play Store) throughout |
170 | | -- **Section Order:** 1. Hero with device mockup, 2. Screenshots carousel, 3. Features with icons, 4. Reviews/ratings, 5. Download CTAs |
171 | | - |
172 | | ---- |
173 | | - |
174 | | -## Anti-Patterns (Do NOT Use) |
175 | | - |
176 | | -- ❌ Light mode |
177 | | -- ❌ Poor data viz |
178 | | - |
179 | | -### Additional Forbidden Patterns |
180 | | - |
181 | | -- ❌ **Emojis as icons** — Use SVG icons (Heroicons, Lucide, Simple Icons) |
182 | | -- ❌ **Missing cursor:pointer** — All clickable elements must have cursor:pointer |
183 | | -- ❌ **Layout-shifting hovers** — Avoid scale transforms that shift layout |
184 | | -- ❌ **Low contrast text** — Maintain 4.5:1 minimum contrast ratio |
185 | | -- ❌ **Instant state changes** — Always use transitions (150-300ms) |
186 | | -- ❌ **Invisible focus states** — Focus states must be visible for a11y |
187 | | - |
188 | | ---- |
189 | | - |
190 | | -## Pre-Delivery Checklist |
191 | | - |
192 | | -Before delivering any UI code, verify: |
193 | | - |
194 | | -- [ ] No emojis used as icons (use SVG instead) |
195 | | -- [ ] All icons from consistent icon set (Heroicons/Lucide) |
196 | | -- [ ] `cursor-pointer` on all clickable elements |
197 | | -- [ ] Hover states with smooth transitions (150-300ms) |
198 | | -- [ ] Light mode: text contrast 4.5:1 minimum |
199 | | -- [ ] Focus states visible for keyboard navigation |
200 | | -- [ ] `prefers-reduced-motion` respected |
201 | | -- [ ] Responsive: 375px, 768px, 1024px, 1440px |
202 | | -- [ ] No content hidden behind fixed navbars |
203 | | -- [ ] No horizontal scroll on mobile |
| 1 | +# ONEComputer public design system |
| 2 | + |
| 3 | +The public site should feel like the ONEComputer application at editorial |
| 4 | +scale—not like an unrelated cybersecurity campaign. |
| 5 | + |
| 6 | +## Product tokens |
| 7 | + |
| 8 | +| Role | Value | |
| 9 | +| --- | --- | |
| 10 | +| Page background | `#1f1e1d` | |
| 11 | +| Deep background / sidebar | `#171615` / `#1a1918` | |
| 12 | +| Card surface | `#272625` | |
| 13 | +| Primary text | `#f5f5f3` | |
| 14 | +| Muted text | `#aaa7a2` | |
| 15 | +| Border | `#3b3937` | |
| 16 | +| Brand / enforcement | `#19ba5d` | |
| 17 | +| Warning | `#e5ad41` | |
| 18 | +| Danger | `#e05b55` | |
| 19 | +| Standard radius | `8–10px` | |
| 20 | + |
| 21 | +Typography is local Geist for product and editorial copy, with Geist Mono for |
| 22 | +eyebrows, state, and evidence labels. Large headings may be expressive, but |
| 23 | +controls and captures must preserve the product's compact proportions. |
| 24 | + |
| 25 | +## Visual principles |
| 26 | + |
| 27 | +1. Lead with the real product. Use deployed screenshots and name the surface. |
| 28 | +2. Explain trust through separation: ONEComputer runs workflow; OpenVTC holds |
| 29 | + identity, signing authority, Trust Tasks, and evidence. |
| 30 | +3. Use motion to clarify transitions and state, never as ambient noise. |
| 31 | +4. Use green only for brand, verified state, enforcement, and primary actions. |
| 32 | +5. Prefer quiet borders and warm charcoal depth to neon glow or blue gradients. |
| 33 | +6. Keep technical claims specific, auditable, and free of roadmap language. |
| 34 | + |
| 35 | +## Motion language |
| 36 | + |
| 37 | +- Framer Motion owns page reveals, product-state transitions, scroll progress, |
| 38 | + the approval path, and small interaction feedback. |
| 39 | +- Default easing: `[0.22, 1, 0.36, 1]`. |
| 40 | +- Interaction transitions should finish in roughly 180–300 ms; editorial reveals |
| 41 | + may take 550–800 ms. |
| 42 | +- Honor the operating system's reduced-motion preference and never depend on |
| 43 | + animation to communicate required content. |
| 44 | + |
| 45 | +## Product captures |
| 46 | + |
| 47 | +- Show a browser or application frame only when it gives useful context. |
| 48 | +- Do not invent dashboards or metrics. |
| 49 | +- Cover internal test identifiers in the presentation layer; do not silently |
| 50 | + alter the source image. |
| 51 | +- Captions must identify captures as coming from the deployed cloud build. |
| 52 | + |
| 53 | +## Accessibility and responsive requirements |
| 54 | + |
| 55 | +- Preserve visible keyboard focus and semantic buttons, links, tabs, and panels. |
| 56 | +- Maintain WCAG AA text contrast. |
| 57 | +- Verify at 375, 768, 1024, and 1440 px widths. |
| 58 | +- Avoid horizontal page overflow; horizontal scrolling is permitted only inside |
| 59 | + a clearly bounded product-tab control on small screens. |
| 60 | +- Fixed navigation must not cover linked section headings. |
| 61 | + |
| 62 | +## Forbidden patterns |
| 63 | + |
| 64 | +- Cyberpunk, glitch, scanline, Matrix, or terminal cosplay |
| 65 | +- Generic stock imagery or generated product screenshots |
| 66 | +- Decorative metric claims without evidence |
| 67 | +- Approval controls that imply ONEComputer can sign its own high-risk actions |
| 68 | +- Hidden focus states, hover-only information, and motion without a reduced mode |
0 commit comments