@pcoi/tokens 0.1.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.
- package/build/index.d.ts +308 -0
- package/build/index.js +310 -0
- package/build/index.mjs +309 -0
- package/build/tokens.css +473 -0
- package/build/tokens.json +1423 -0
- package/build/tokens.scss +270 -0
- package/package.json +29 -0
- package/src/color/light.json +52 -0
- package/src/color/primitives.json +130 -0
- package/src/color/semantics.json +90 -0
- package/src/effects/primitives.json +122 -0
- package/src/layout/primitives.json +101 -0
- package/src/radius/primitives.json +11 -0
- package/src/radius/semantics.json +31 -0
- package/src/sizing/primitives.json +15 -0
- package/src/sizing/semantics.json +14 -0
- package/src/spacing/primitives.json +29 -0
- package/src/spacing/semantics.json +83 -0
- package/src/typography/primitives.json +69 -0
- package/src/typography/semantics.json +220 -0
package/build/tokens.css
ADDED
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
@pcoi/tokens — CSS Custom Properties
|
|
3
|
+
Generated 2026-03-03
|
|
4
|
+
|
|
5
|
+
Three-Tier Hierarchy:
|
|
6
|
+
Tier 1: Primitives (--pcoi-color-*, --pcoi-spacing-*, etc.)
|
|
7
|
+
Tier 2: Aliases (referenced within semantics)
|
|
8
|
+
Tier 3: Semantics (--pcoi-semantic-*, --pcoi-semantic-spacing-*, etc.)
|
|
9
|
+
|
|
10
|
+
RULE: Only apply semantic tokens to components.
|
|
11
|
+
============================================ */
|
|
12
|
+
|
|
13
|
+
:root {
|
|
14
|
+
/* ── Tier 1: Color Primitives ── */
|
|
15
|
+
--pcoi-color-bg: #0C0C14; /* Primary page background — deep navy-black */
|
|
16
|
+
--pcoi-color-bg-alt: #111120; /* Alternating section background — slightly lighter */
|
|
17
|
+
--pcoi-color-bg-card: #16162A; /* Card and panel background */
|
|
18
|
+
--pcoi-color-bg-card-hover: #1C1C38; /* Card background on hover state */
|
|
19
|
+
--pcoi-color-surface: #1A1A2E; /* Elevated surface — forms, callouts, input containers */
|
|
20
|
+
--pcoi-color-accent: #D4A44C; /* Brand gold — primary accent color */
|
|
21
|
+
--pcoi-color-accent-hover: #E0B560; /* Accent gold on hover — lighter/warmer */
|
|
22
|
+
--pcoi-color-text-primary: #E8E8F0; /* Primary text — off-white with slight blue tint */
|
|
23
|
+
--pcoi-color-text-secondary: #9595B0; /* Secondary text — muted lavender-grey */
|
|
24
|
+
--pcoi-color-text-muted: #8585A0; /* Muted text — placeholders, footnotes (WCAG AA compliant on surface) */
|
|
25
|
+
--pcoi-color-success: #3DA87A; /* Success/confirmation green — WCAG AA 4.5:1+ on dark backgrounds */
|
|
26
|
+
--pcoi-color-error: #E05252; /* Error/destructive red — validation errors, alerts */
|
|
27
|
+
--pcoi-color-warning: #E8943A; /* Warning amber — caution states, deprecation notices */
|
|
28
|
+
--pcoi-color-info: #5B8BD4; /* Informational blue — tips, help text, neutral alerts */
|
|
29
|
+
--pcoi-color-white: #FFFFFF; /* Pure white — used in alpha calculations */
|
|
30
|
+
--pcoi-color-black: #000000; /* Pure black — used in shadow calculations */
|
|
31
|
+
--pcoi-color-border: rgba(255, 255, 255, 0.35); /* Default border — white at 35% for WCAG AA 3:1 on dark backgrounds */
|
|
32
|
+
--pcoi-color-border-hover: rgba(255, 255, 255, 0.45); /* Hovered border — white at 45% for WCAG AA 3:1+ on dark backgrounds */
|
|
33
|
+
--pcoi-color-border-soft: rgba(255, 255, 255, 0.06); /* Soft decorative border — cards, panels (no WCAG contrast required) */
|
|
34
|
+
--pcoi-color-border-soft-hover: rgba(255, 255, 255, 0.12); /* Soft decorative border on hover — cards, panels */
|
|
35
|
+
--pcoi-color-accent-glow: rgba(212, 164, 76, 0.15); /* Accent glow for shadows and overlays */
|
|
36
|
+
--pcoi-color-accent-dim: rgba(212, 164, 76, 0.08); /* Accent-tinted background — badges, icon boxes, step numbers */
|
|
37
|
+
--pcoi-color-highlight: rgba(212, 164, 76, 0.06); /* Subtle accent highlight — comparison column bg */
|
|
38
|
+
--pcoi-color-nav-scrolled-bg: rgba(12, 12, 20, 0.92); /* Navigation background on scroll — semi-transparent dark */
|
|
39
|
+
--pcoi-color-ghost-hover-bg: rgba(255, 255, 255, 0.03); /* Ghost button hover background */
|
|
40
|
+
--pcoi-color-ghost-hover-border: rgba(255, 255, 255, 0.35); /* Ghost button hover border — WCAG AA 3:1 on dark backgrounds */
|
|
41
|
+
--pcoi-color-focus-border: rgba(212, 164, 76, 0.55); /* Input focus border — accent at 55% for WCAG AA 3:1+ visibility */
|
|
42
|
+
--pcoi-color-focus-glow: rgba(212, 164, 76, 0.08); /* Input focus outer ring glow */
|
|
43
|
+
--pcoi-color-accent-border-subtle: rgba(212, 164, 76, 0.58); /* Accent border — badges, principle hover — WCAG AA 3:1 */
|
|
44
|
+
--pcoi-color-accent-border-dim: rgba(212, 164, 76, 0.52); /* Accent border dim — step number circles — WCAG AA 3:1 */
|
|
45
|
+
--pcoi-color-grid-line: rgba(255, 255, 255, 0.02); /* Hero background grid lines */
|
|
46
|
+
|
|
47
|
+
/* ── Tier 1: Spacing Primitives ── */
|
|
48
|
+
--pcoi-spacing-0: 0px;
|
|
49
|
+
--pcoi-spacing-4: 4px;
|
|
50
|
+
--pcoi-spacing-5: 5px;
|
|
51
|
+
--pcoi-spacing-6: 6px;
|
|
52
|
+
--pcoi-spacing-8: 8px;
|
|
53
|
+
--pcoi-spacing-10: 10px;
|
|
54
|
+
--pcoi-spacing-12: 12px;
|
|
55
|
+
--pcoi-spacing-14: 14px;
|
|
56
|
+
--pcoi-spacing-16: 16px;
|
|
57
|
+
--pcoi-spacing-20: 20px;
|
|
58
|
+
--pcoi-spacing-22: 22px;
|
|
59
|
+
--pcoi-spacing-24: 24px;
|
|
60
|
+
--pcoi-spacing-28: 28px;
|
|
61
|
+
--pcoi-spacing-32: 32px;
|
|
62
|
+
--pcoi-spacing-36: 36px;
|
|
63
|
+
--pcoi-spacing-40: 40px;
|
|
64
|
+
--pcoi-spacing-48: 48px;
|
|
65
|
+
--pcoi-spacing-60: 60px;
|
|
66
|
+
--pcoi-spacing-64: 64px;
|
|
67
|
+
--pcoi-spacing-72: 72px;
|
|
68
|
+
--pcoi-spacing-80: 80px;
|
|
69
|
+
--pcoi-spacing-100: 100px;
|
|
70
|
+
--pcoi-spacing-120: 120px;
|
|
71
|
+
|
|
72
|
+
/* ── Tier 1: Radius Primitives ── */
|
|
73
|
+
--pcoi-radius-sm: 6px;
|
|
74
|
+
--pcoi-radius-md: 12px;
|
|
75
|
+
--pcoi-radius-lg: 20px;
|
|
76
|
+
--pcoi-radius-xl: 28px;
|
|
77
|
+
--pcoi-radius-full: 9999px;
|
|
78
|
+
|
|
79
|
+
/* ── Tier 1: Typography Primitives ── */
|
|
80
|
+
--pcoi-font-family-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
81
|
+
--pcoi-font-family-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
|
82
|
+
--pcoi-font-weight-light: 300;
|
|
83
|
+
--pcoi-font-weight-regular: 400;
|
|
84
|
+
--pcoi-font-weight-medium: 500;
|
|
85
|
+
--pcoi-font-weight-semibold: 600;
|
|
86
|
+
--pcoi-font-weight-bold: 700;
|
|
87
|
+
--pcoi-font-weight-extrabold: 800;
|
|
88
|
+
--pcoi-font-size-xs: 0.7rem;
|
|
89
|
+
--pcoi-font-size-sm: 0.75rem;
|
|
90
|
+
--pcoi-font-size-caption: 0.8rem;
|
|
91
|
+
--pcoi-font-size-body-sm: 0.85rem;
|
|
92
|
+
--pcoi-font-size-nav: 0.875rem;
|
|
93
|
+
--pcoi-font-size-body: 0.9rem;
|
|
94
|
+
--pcoi-font-size-body-default: 0.95rem;
|
|
95
|
+
--pcoi-font-size-body-lg: 1rem;
|
|
96
|
+
--pcoi-font-size-lead: 1.05rem;
|
|
97
|
+
--pcoi-font-size-sub: 1.1rem;
|
|
98
|
+
--pcoi-font-size-h3: 1.15rem;
|
|
99
|
+
--pcoi-font-size-h3-lg: 1.2rem;
|
|
100
|
+
--pcoi-font-size-logo: 1.35rem;
|
|
101
|
+
--pcoi-font-size-callout: 1.35rem;
|
|
102
|
+
--pcoi-font-size-close-sm: 1.25rem;
|
|
103
|
+
--pcoi-font-size-close-lg: 1.5rem;
|
|
104
|
+
--pcoi-font-size-h2-sm: 2.25rem;
|
|
105
|
+
--pcoi-font-size-h2: 2.5rem;
|
|
106
|
+
--pcoi-font-size-h1: 2.75rem;
|
|
107
|
+
--pcoi-font-size-display: 4rem;
|
|
108
|
+
--pcoi-font-lineHeight-none: 1;
|
|
109
|
+
--pcoi-font-lineHeight-tight: 1.1;
|
|
110
|
+
--pcoi-font-lineHeight-heading: 1.2;
|
|
111
|
+
--pcoi-font-lineHeight-snug: 1.3;
|
|
112
|
+
--pcoi-font-lineHeight-body-sm: 1.5;
|
|
113
|
+
--pcoi-font-lineHeight-body: 1.6;
|
|
114
|
+
--pcoi-font-lineHeight-step: 1.65;
|
|
115
|
+
--pcoi-font-lineHeight-relaxed: 1.7;
|
|
116
|
+
--pcoi-font-letterSpacing-tight: -0.03em;
|
|
117
|
+
--pcoi-font-letterSpacing-heading: -0.02em;
|
|
118
|
+
--pcoi-font-letterSpacing-normal: 0em;
|
|
119
|
+
--pcoi-font-letterSpacing-logo: 0.04em;
|
|
120
|
+
--pcoi-font-letterSpacing-label: 0.06em;
|
|
121
|
+
--pcoi-font-letterSpacing-badge: 0.08em;
|
|
122
|
+
--pcoi-font-letterSpacing-section: 0.1em;
|
|
123
|
+
|
|
124
|
+
/* ── Tier 1: Effects Primitives ── */
|
|
125
|
+
--pcoi-effect-shadow-btn-primary-hover: 0 8px 30px rgba(212, 164, 76, 0.25);
|
|
126
|
+
--pcoi-effect-shadow-nav-scrolled: 0 1px 0 rgba(255, 255, 255, 0.06);
|
|
127
|
+
--pcoi-effect-shadow-mobile-menu: 0 12px 40px rgba(0, 0, 0, 0.6);
|
|
128
|
+
--pcoi-effect-shadow-focus-ring: 0 0 0 3px rgba(212, 164, 76, 0.08);
|
|
129
|
+
--pcoi-effect-shadow-focus-ring-error: 0 0 0 3px rgba(224, 82, 82, 0.08);
|
|
130
|
+
--pcoi-effect-shadow-elevated: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
131
|
+
--pcoi-effect-blur-nav-backdrop: 20px;
|
|
132
|
+
--pcoi-effect-transition-fast: 0.2s ease;
|
|
133
|
+
--pcoi-effect-transition-medium: 0.3s ease;
|
|
134
|
+
--pcoi-effect-transition-slow: 0.6s ease;
|
|
135
|
+
--pcoi-effect-opacity-disabled: 0.5;
|
|
136
|
+
--pcoi-effect-transform-hover-lift: translateY(-2px);
|
|
137
|
+
--pcoi-effect-transform-hover-lift-sm: translateY(-1px);
|
|
138
|
+
--pcoi-effect-transform-fade-in-offset: translateY(24px);
|
|
139
|
+
--pcoi-effect-transform-parallax-factor: 0.15;
|
|
140
|
+
--pcoi-effect-transform-press-scale: scale(0.985);
|
|
141
|
+
--pcoi-effect-transform-press-scale-input: scale(0.99);
|
|
142
|
+
--pcoi-effect-transform-press-scale-control: scale(0.95);
|
|
143
|
+
--pcoi-effect-transform-press-scale-track: scale(0.975);
|
|
144
|
+
--pcoi-effect-transform-press-scale-icon: scale(0.925);
|
|
145
|
+
--pcoi-effect-transform-toggle-thumb-on: scale(1.15);
|
|
146
|
+
|
|
147
|
+
/* ── Tier 1: Layout Primitives ── */
|
|
148
|
+
--pcoi-layout-container-max: 1200px;
|
|
149
|
+
--pcoi-layout-container-narrow: 800px;
|
|
150
|
+
--pcoi-layout-container-cta: 680px;
|
|
151
|
+
--pcoi-layout-container-callout: 600px;
|
|
152
|
+
--pcoi-layout-container-chamath: 640px;
|
|
153
|
+
--pcoi-layout-container-hero-sub: 520px;
|
|
154
|
+
--pcoi-layout-container-compare: 900px;
|
|
155
|
+
--pcoi-layout-container-wide: 1100px;
|
|
156
|
+
--pcoi-layout-container-modal: 520px;
|
|
157
|
+
--pcoi-layout-container-toast-min: 280px;
|
|
158
|
+
--pcoi-layout-container-toast-max: 420px;
|
|
159
|
+
--pcoi-layout-container-compare-scroll: 500px;
|
|
160
|
+
--pcoi-layout-container-document: 900px;
|
|
161
|
+
--pcoi-layout-nav-height: 72px;
|
|
162
|
+
--pcoi-layout-breakpoint-desktop: 1025px;
|
|
163
|
+
--pcoi-layout-breakpoint-tablet: 1024px;
|
|
164
|
+
--pcoi-layout-breakpoint-mobile: 768px;
|
|
165
|
+
--pcoi-layout-breakpoint-small: 480px;
|
|
166
|
+
--pcoi-layout-zIndex-base: 1;
|
|
167
|
+
--pcoi-layout-zIndex-content: 1;
|
|
168
|
+
--pcoi-layout-zIndex-mobile-menu: 100;
|
|
169
|
+
--pcoi-layout-zIndex-nav: 1000;
|
|
170
|
+
--pcoi-layout-zIndex-dropdown: 200;
|
|
171
|
+
--pcoi-layout-zIndex-modal: 500;
|
|
172
|
+
--pcoi-layout-zIndex-toast: 600;
|
|
173
|
+
--pcoi-layout-component-control-box: 18px;
|
|
174
|
+
--pcoi-layout-component-radio-dot: 8px;
|
|
175
|
+
--pcoi-layout-component-toggle-track-w: 40px;
|
|
176
|
+
--pcoi-layout-component-toggle-track-h: 22px;
|
|
177
|
+
--pcoi-layout-component-toggle-thumb: 16px;
|
|
178
|
+
--pcoi-layout-component-toggle-thumb-inset: 3px;
|
|
179
|
+
--pcoi-layout-component-toggle-thumb-travel: 18px;
|
|
180
|
+
--pcoi-layout-component-toggle-check-w: 4px;
|
|
181
|
+
--pcoi-layout-component-toggle-check-h: 7px;
|
|
182
|
+
--pcoi-layout-component-toggle-check-stroke: 1.5px;
|
|
183
|
+
--pcoi-layout-component-icon-box: 52px;
|
|
184
|
+
--pcoi-layout-component-step-number: 48px;
|
|
185
|
+
--pcoi-layout-component-hamburger: 28px;
|
|
186
|
+
--pcoi-layout-component-hamburger-bar-offset: 7px;
|
|
187
|
+
--pcoi-layout-component-accent-line-w: 60px;
|
|
188
|
+
--pcoi-layout-component-accent-border-w: 3px;
|
|
189
|
+
--pcoi-layout-component-bullet: 8px;
|
|
190
|
+
|
|
191
|
+
/* ── Tier 1: Sizing Primitives ── */
|
|
192
|
+
--pcoi-sizing-height-xs: 24px; /* 1.5rem — compact badges, tags, small indicators */
|
|
193
|
+
--pcoi-sizing-height-sm: 32px; /* 2rem — small buttons, compact controls */
|
|
194
|
+
--pcoi-sizing-height-md: 40px; /* 2.5rem — standard inputs, default buttons, selects */
|
|
195
|
+
--pcoi-sizing-height-lg: 48px; /* 3rem — large buttons, step numbers, prominent controls */
|
|
196
|
+
--pcoi-sizing-height-xl: 64px; /* 4rem — large interactive areas, icon containers */
|
|
197
|
+
--pcoi-sizing-height-2xl: 80px; /* 5rem — hero-scale elements, feature panels */
|
|
198
|
+
|
|
199
|
+
/* ── Tier 3: Semantic Color Tokens ── */
|
|
200
|
+
/* These reference primitives via var(). Apply ONLY these to designs. */
|
|
201
|
+
--pcoi-semantic-bg-default: var(--pcoi-color-bg); /* Page-level background */
|
|
202
|
+
--pcoi-semantic-bg-alt: var(--pcoi-color-bg-alt); /* Alternating dark sections (.section-dark) */
|
|
203
|
+
--pcoi-semantic-bg-card: var(--pcoi-color-bg-card); /* Card and panel fills */
|
|
204
|
+
--pcoi-semantic-bg-card-hover: var(--pcoi-color-bg-card-hover); /* Card fills on hover */
|
|
205
|
+
--pcoi-semantic-bg-surface: var(--pcoi-color-surface); /* Forms, callouts, elevated containers */
|
|
206
|
+
--pcoi-semantic-bg-nav-scrolled: var(--pcoi-color-nav-scrolled-bg); /* Navbar after scroll */
|
|
207
|
+
--pcoi-semantic-bg-overlay: rgba(0, 0, 0, 0.6); /* Modal/dialog backdrop overlay */
|
|
208
|
+
--pcoi-semantic-text-primary: var(--pcoi-color-text-primary); /* Headings, body, primary content */
|
|
209
|
+
--pcoi-semantic-text-secondary: var(--pcoi-color-text-secondary); /* Descriptions, supporting text, nav links */
|
|
210
|
+
--pcoi-semantic-text-muted: var(--pcoi-color-text-muted); /* Placeholders, footnotes, timestamps */
|
|
211
|
+
--pcoi-semantic-text-accent: var(--pcoi-color-accent); /* Badges, labels, section labels, emphasis */
|
|
212
|
+
--pcoi-semantic-text-accent-hover: var(--pcoi-color-accent-hover); /* Accent text on hover (links, interactive) */
|
|
213
|
+
--pcoi-semantic-text-on-accent: var(--pcoi-color-bg); /* Text on accent-colored backgrounds */
|
|
214
|
+
--pcoi-semantic-text-success: var(--pcoi-color-success); /* Success message text */
|
|
215
|
+
--pcoi-semantic-text-error: var(--pcoi-color-error); /* Error message text and required indicators */
|
|
216
|
+
--pcoi-semantic-text-warning: var(--pcoi-color-warning); /* Warning message text */
|
|
217
|
+
--pcoi-semantic-text-info: var(--pcoi-color-info); /* Info message text */
|
|
218
|
+
--pcoi-semantic-action-primary-bg: var(--pcoi-color-accent); /* Primary button background */
|
|
219
|
+
--pcoi-semantic-action-primary-bg-hover: var(--pcoi-color-accent-hover); /* Primary button hover background */
|
|
220
|
+
--pcoi-semantic-action-primary-text: var(--pcoi-color-bg); /* Primary button text (dark on gold) */
|
|
221
|
+
--pcoi-semantic-action-ghost-bg: transparent; /* Ghost button default background */
|
|
222
|
+
--pcoi-semantic-action-ghost-bg-hover: var(--pcoi-color-ghost-hover-bg); /* Ghost button hover background */
|
|
223
|
+
--pcoi-semantic-action-ghost-border: var(--pcoi-color-border-hover); /* Ghost button border */
|
|
224
|
+
--pcoi-semantic-action-ghost-border-hover: var(--pcoi-color-ghost-hover-border); /* Ghost button hover border */
|
|
225
|
+
--pcoi-semantic-action-ghost-text: var(--pcoi-color-text-secondary); /* Ghost button text */
|
|
226
|
+
--pcoi-semantic-action-ghost-text-hover: var(--pcoi-color-text-primary); /* Ghost button hover text */
|
|
227
|
+
--pcoi-semantic-action-toggle-bg: var(--pcoi-color-border-hover); /* Toggle track background in off state */
|
|
228
|
+
--pcoi-semantic-action-toggle-bg-on: var(--pcoi-color-accent); /* Toggle track background in on state */
|
|
229
|
+
--pcoi-semantic-action-toggle-thumb: #FFFFFF; /* Toggle thumb (circle) color */
|
|
230
|
+
--pcoi-semantic-action-success: var(--pcoi-color-success); /* Form submission success state */
|
|
231
|
+
--pcoi-semantic-action-error: var(--pcoi-color-error); /* Validation errors, destructive actions */
|
|
232
|
+
--pcoi-semantic-action-warning: var(--pcoi-color-warning); /* Caution states, deprecation notices */
|
|
233
|
+
--pcoi-semantic-action-info: var(--pcoi-color-info); /* Informational tips and neutral alerts */
|
|
234
|
+
--pcoi-semantic-action-success-bg: rgba(42, 125, 95, 0.08); /* Subtle success background tint for badges and status indicators */
|
|
235
|
+
--pcoi-semantic-action-error-bg: rgba(224, 82, 82, 0.08); /* Subtle error background tint for invalid form fields */
|
|
236
|
+
--pcoi-semantic-action-warning-bg: rgba(232, 148, 58, 0.08); /* Subtle warning background tint for badges and status indicators */
|
|
237
|
+
--pcoi-semantic-action-info-bg: rgba(91, 139, 212, 0.08); /* Subtle info background tint for badges and status indicators */
|
|
238
|
+
--pcoi-semantic-border-default: var(--pcoi-color-border); /* Default card/section borders */
|
|
239
|
+
--pcoi-semantic-border-hover: var(--pcoi-color-border-hover); /* Borders on hover state */
|
|
240
|
+
--pcoi-semantic-border-card: var(--pcoi-color-border-soft); /* Soft decorative card border — no WCAG requirement */
|
|
241
|
+
--pcoi-semantic-border-card-hover: var(--pcoi-color-border-soft-hover); /* Soft decorative card border on hover */
|
|
242
|
+
--pcoi-semantic-border-accent-subtle: var(--pcoi-color-accent-border-subtle); /* Accent-tinted borders (principle hover) */
|
|
243
|
+
--pcoi-semantic-border-accent-dim: var(--pcoi-color-accent-border-dim); /* Dim accent borders (step numbers) */
|
|
244
|
+
--pcoi-semantic-border-nav: var(--pcoi-color-border); /* Nav scrolled bottom border */
|
|
245
|
+
--pcoi-semantic-border-input-hover: var(--pcoi-color-border-hover); /* Form input border on hover */
|
|
246
|
+
--pcoi-semantic-border-success: var(--pcoi-color-success); /* Success state border */
|
|
247
|
+
--pcoi-semantic-border-error: var(--pcoi-color-error); /* Invalid form field border */
|
|
248
|
+
--pcoi-semantic-border-warning: var(--pcoi-color-warning); /* Warning state border */
|
|
249
|
+
--pcoi-semantic-border-info: var(--pcoi-color-info); /* Info state border */
|
|
250
|
+
--pcoi-semantic-surface-accent-dim: var(--pcoi-color-accent-dim); /* Icon boxes, badges, step number bg, comparison highlight */
|
|
251
|
+
--pcoi-semantic-surface-accent-glow: var(--pcoi-color-accent-glow); /* Shadow glow on accent actions */
|
|
252
|
+
--pcoi-semantic-surface-highlight: var(--pcoi-color-highlight); /* Subtle highlight backgrounds */
|
|
253
|
+
--pcoi-semantic-surface-elevated: var(--pcoi-color-bg-card); /* Elevated surface for modals, dropdowns */
|
|
254
|
+
--pcoi-semantic-focus-border: var(--pcoi-color-focus-border); /* Input focus border color */
|
|
255
|
+
--pcoi-semantic-focus-glow: var(--pcoi-color-focus-glow); /* Input focus outer ring (box-shadow) */
|
|
256
|
+
|
|
257
|
+
/* ── Tier 3: Semantic Spacing Tokens ── */
|
|
258
|
+
--pcoi-semantic-spacing-section-y: var(--pcoi-spacing-80); /* Vertical padding for page sections */
|
|
259
|
+
--pcoi-semantic-spacing-section-y-lg: var(--pcoi-spacing-120); /* Vertical padding for large/hero sections */
|
|
260
|
+
--pcoi-semantic-spacing-component-gap: var(--pcoi-spacing-40); /* Default gap between stacked components */
|
|
261
|
+
--pcoi-semantic-spacing-card-padding: var(--pcoi-spacing-36); /* Internal padding for cards and panels */
|
|
262
|
+
--pcoi-semantic-spacing-card-gap: var(--pcoi-spacing-20); /* Gap between elements inside a card */
|
|
263
|
+
--pcoi-semantic-spacing-form-gap: var(--pcoi-spacing-20); /* Gap between form fields */
|
|
264
|
+
--pcoi-semantic-spacing-form-padding: var(--pcoi-spacing-40); /* Internal padding for form containers */
|
|
265
|
+
--pcoi-semantic-spacing-input-x: var(--pcoi-spacing-16); /* Horizontal padding inside inputs */
|
|
266
|
+
--pcoi-semantic-spacing-input-y: var(--pcoi-spacing-12); /* Vertical padding inside inputs */
|
|
267
|
+
--pcoi-semantic-spacing-btn-x: var(--pcoi-spacing-24); /* Horizontal padding for default buttons */
|
|
268
|
+
--pcoi-semantic-spacing-btn-y: var(--pcoi-spacing-10); /* Vertical padding for default buttons */
|
|
269
|
+
--pcoi-semantic-spacing-btn-x-lg: var(--pcoi-spacing-36); /* Horizontal padding for large buttons */
|
|
270
|
+
--pcoi-semantic-spacing-btn-y-lg: var(--pcoi-spacing-16); /* Vertical padding for large buttons */
|
|
271
|
+
--pcoi-semantic-spacing-nav-height: var(--pcoi-spacing-72); /* Navigation bar height */
|
|
272
|
+
--pcoi-semantic-spacing-stack-sm: var(--pcoi-spacing-8); /* Small vertical stack spacing (labels, badges) */
|
|
273
|
+
--pcoi-semantic-spacing-stack-md: var(--pcoi-spacing-16); /* Medium vertical stack spacing (headings, paragraphs) */
|
|
274
|
+
--pcoi-semantic-spacing-stack-lg: var(--pcoi-spacing-32); /* Large vertical stack spacing (content blocks) */
|
|
275
|
+
--pcoi-semantic-spacing-inline-sm: var(--pcoi-spacing-8); /* Small inline spacing (icon + text) */
|
|
276
|
+
--pcoi-semantic-spacing-inline-md: var(--pcoi-spacing-16); /* Medium inline spacing (nav links) */
|
|
277
|
+
|
|
278
|
+
/* ── Tier 3: Semantic Radius Tokens ── */
|
|
279
|
+
--pcoi-semantic-radius-btn: var(--pcoi-radius-sm); /* Border radius for buttons */
|
|
280
|
+
--pcoi-semantic-radius-input: var(--pcoi-radius-sm); /* Border radius for form inputs and textareas */
|
|
281
|
+
--pcoi-semantic-radius-card: var(--pcoi-radius-md); /* Border radius for cards and panels */
|
|
282
|
+
--pcoi-semantic-radius-panel: var(--pcoi-radius-lg); /* Border radius for large panels and form containers */
|
|
283
|
+
--pcoi-semantic-radius-badge: var(--pcoi-radius-full); /* Border radius for badges and pills */
|
|
284
|
+
--pcoi-semantic-radius-avatar: var(--pcoi-radius-full); /* Border radius for avatars and step numbers */
|
|
285
|
+
|
|
286
|
+
/* ── Tier 3: Semantic Typography Tokens ── */
|
|
287
|
+
--pcoi-semantic-type-heading-font: var(--pcoi-font-family-sans); /* Font family for headings */
|
|
288
|
+
--pcoi-semantic-type-body-font: var(--pcoi-font-family-sans); /* Font family for body text and form inputs */
|
|
289
|
+
--pcoi-semantic-type-mono-font: var(--pcoi-font-family-mono); /* Font family for code, labels, badges, and step numbers */
|
|
290
|
+
--pcoi-semantic-type-display-size: clamp(2.5rem, 5vw, 4rem); /* Hero h1 — fluid 40–64px */
|
|
291
|
+
--pcoi-semantic-type-section-title-size: clamp(1.75rem, 3.5vw, 2.75rem); /* Main section headings — fluid 28–44px (SectionHeader) */
|
|
292
|
+
--pcoi-semantic-type-section-title-sm-size: clamp(1.75rem, 3.5vw, 2.5rem); /* CTA section headings — fluid 28–40px */
|
|
293
|
+
--pcoi-semantic-type-section-title-xs-size: clamp(1.5rem, 3vw, 2.25rem); /* Smaller section headings — fluid 24–36px */
|
|
294
|
+
--pcoi-semantic-type-heading-md-size: var(--pcoi-font-size-h3); /* Card/subsection heading (h3) */
|
|
295
|
+
--pcoi-semantic-type-heading-sm-size: var(--pcoi-font-size-sub); /* Small heading — modal titles, panel titles, signals headings */
|
|
296
|
+
--pcoi-semantic-type-step-title-size: var(--pcoi-font-size-h3-lg); /* How-step titles */
|
|
297
|
+
--pcoi-semantic-type-card-subtitle-size: var(--pcoi-font-size-lead); /* Principle card titles */
|
|
298
|
+
--pcoi-semantic-type-body-size: var(--pcoi-font-size-body-default); /* Default body text — descriptions, form inputs, buttons, toast */
|
|
299
|
+
--pcoi-semantic-type-body-lg-size: var(--pcoi-font-size-body-lg); /* Large body text — mobile menu links, large buttons */
|
|
300
|
+
--pcoi-semantic-type-body-compact-size: var(--pcoi-font-size-body); /* Compact body — table cells, signals items, who-card body */
|
|
301
|
+
--pcoi-semantic-type-body-sm-size: var(--pcoi-font-size-body-sm); /* Small body — attributions, step numbers, footer tagline */
|
|
302
|
+
--pcoi-semantic-type-nav-size: var(--pcoi-font-size-nav); /* Navigation links, footer links */
|
|
303
|
+
--pcoi-semantic-type-label-size: var(--pcoi-font-size-caption); /* Form labels, table headers, error messages */
|
|
304
|
+
--pcoi-semantic-type-section-label-size: var(--pcoi-font-size-sm); /* Section labels (The Problem, How It Works, etc.) */
|
|
305
|
+
--pcoi-semantic-type-badge-size: var(--pcoi-font-size-xs); /* Badge text */
|
|
306
|
+
--pcoi-semantic-type-callout-size: var(--pcoi-font-size-callout); /* Callout quote text */
|
|
307
|
+
--pcoi-semantic-type-logo-size: var(--pcoi-font-size-logo); /* Logo mark text */
|
|
308
|
+
--pcoi-semantic-type-close-sm-size: var(--pcoi-font-size-close-sm); /* Toast close button icon */
|
|
309
|
+
--pcoi-semantic-type-close-lg-size: var(--pcoi-font-size-close-lg); /* Modal close button icon */
|
|
310
|
+
--pcoi-semantic-type-display-weight: var(--pcoi-font-weight-extrabold); /* Hero h1 weight (800) */
|
|
311
|
+
--pcoi-semantic-type-heading-weight: var(--pcoi-font-weight-bold); /* Section headings (h2) */
|
|
312
|
+
--pcoi-semantic-type-emphasis-weight: var(--pcoi-font-weight-semibold); /* Buttons, card titles, step titles, modal titles */
|
|
313
|
+
--pcoi-semantic-type-label-weight: var(--pcoi-font-weight-medium); /* Labels, nav links, mono elements */
|
|
314
|
+
--pcoi-semantic-type-body-weight: var(--pcoi-font-weight-regular); /* Body text */
|
|
315
|
+
--pcoi-semantic-type-callout-weight: var(--pcoi-font-weight-light); /* Callout quotes */
|
|
316
|
+
--pcoi-semantic-type-display-line-height: var(--pcoi-font-lineHeight-tight); /* Hero h1 line-height (1.1) */
|
|
317
|
+
--pcoi-semantic-type-heading-line-height: var(--pcoi-font-lineHeight-heading); /* Headings (1.2) */
|
|
318
|
+
--pcoi-semantic-type-body-line-height: var(--pcoi-font-lineHeight-body); /* Body text (1.6) */
|
|
319
|
+
--pcoi-semantic-type-body-compact-line-height: var(--pcoi-font-lineHeight-body-sm); /* Compact body — callout, table cells, signals, footer, toast (1.5) */
|
|
320
|
+
--pcoi-semantic-type-step-line-height: var(--pcoi-font-lineHeight-step); /* Step descriptions (1.65) */
|
|
321
|
+
--pcoi-semantic-type-relaxed-line-height: var(--pcoi-font-lineHeight-relaxed); /* Section descriptions (1.7) */
|
|
322
|
+
--pcoi-semantic-type-none-line-height: var(--pcoi-font-lineHeight-none); /* No extra leading — buttons, badges, close icons (1) */
|
|
323
|
+
--pcoi-semantic-type-display-letter-spacing: var(--pcoi-font-letterSpacing-tight); /* Hero h1 letter-spacing (-0.03em) */
|
|
324
|
+
--pcoi-semantic-type-heading-letter-spacing: var(--pcoi-font-letterSpacing-heading); /* Section headings (-0.02em) */
|
|
325
|
+
--pcoi-semantic-type-label-letter-spacing: var(--pcoi-font-letterSpacing-label); /* Form labels, table headers (0.06em) */
|
|
326
|
+
--pcoi-semantic-type-section-label-letter-spacing: var(--pcoi-font-letterSpacing-section); /* Section labels (0.1em) */
|
|
327
|
+
--pcoi-semantic-type-badge-letter-spacing: var(--pcoi-font-letterSpacing-badge); /* Badges (0.08em) */
|
|
328
|
+
--pcoi-semantic-type-logo-letter-spacing: var(--pcoi-font-letterSpacing-logo); /* Logo mark (0.04em) */
|
|
329
|
+
|
|
330
|
+
/* ── Tier 3: Semantic Sizing Tokens ── */
|
|
331
|
+
--pcoi-semantic-sizing-input-height: var(--pcoi-sizing-height-md); /* Standard form input height (FormField, Select) */
|
|
332
|
+
--pcoi-semantic-sizing-btn-height: var(--pcoi-sizing-height-md); /* Default button height */
|
|
333
|
+
--pcoi-semantic-sizing-btn-height-lg: var(--pcoi-sizing-height-lg); /* Large button height (.pcoi-btn--large) */
|
|
334
|
+
--pcoi-semantic-sizing-btn-height-nav: var(--pcoi-sizing-height-sm); /* Nav CTA button height (compact) */
|
|
335
|
+
--pcoi-semantic-sizing-textarea-min-height: var(--pcoi-sizing-height-2xl); /* Textarea minimum height */
|
|
336
|
+
--pcoi-semantic-sizing-badge-height: var(--pcoi-sizing-height-xs); /* Badge and tag height */
|
|
337
|
+
--pcoi-semantic-sizing-step-number: var(--pcoi-sizing-height-lg); /* HowStep number circle diameter (48px) */
|
|
338
|
+
--pcoi-semantic-sizing-icon-box: 52px; /* Card icon container size (custom — between lg and xl) */
|
|
339
|
+
|
|
340
|
+
/* ── Legacy Compatibility (matches original CSS vars from pcoi.ai) ── */
|
|
341
|
+
--color-bg: var(--pcoi-color-bg);
|
|
342
|
+
--color-bg-alt: var(--pcoi-color-bg-alt);
|
|
343
|
+
--color-bg-card: var(--pcoi-color-bg-card);
|
|
344
|
+
--color-bg-card-hover: var(--pcoi-color-bg-card-hover);
|
|
345
|
+
--color-surface: var(--pcoi-color-surface);
|
|
346
|
+
--color-border: var(--pcoi-color-border);
|
|
347
|
+
--color-border-hover: var(--pcoi-color-border-hover);
|
|
348
|
+
--color-text: var(--pcoi-color-text-primary);
|
|
349
|
+
--color-text-secondary: var(--pcoi-color-text-secondary);
|
|
350
|
+
--color-text-muted: var(--pcoi-color-text-muted);
|
|
351
|
+
--color-accent: var(--pcoi-color-accent);
|
|
352
|
+
--color-accent-hover: var(--pcoi-color-accent-hover);
|
|
353
|
+
--color-accent-glow: var(--pcoi-color-accent-glow);
|
|
354
|
+
--color-accent-dim: var(--pcoi-color-accent-dim);
|
|
355
|
+
--color-highlight: var(--pcoi-color-highlight);
|
|
356
|
+
--font-sans: var(--pcoi-font-family-sans);
|
|
357
|
+
--font-mono: var(--pcoi-font-family-mono);
|
|
358
|
+
--font-family-sans: var(--pcoi-font-family-sans);
|
|
359
|
+
--font-family-mono: var(--pcoi-font-family-mono);
|
|
360
|
+
--radius-sm: var(--pcoi-radius-sm);
|
|
361
|
+
--radius-md: var(--pcoi-radius-md);
|
|
362
|
+
--radius-lg: var(--pcoi-radius-lg);
|
|
363
|
+
--radius-xl: var(--pcoi-radius-xl);
|
|
364
|
+
--container-max: var(--pcoi-layout-container-max);
|
|
365
|
+
--container-narrow: var(--pcoi-layout-container-narrow);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/* ============================================
|
|
369
|
+
Light Theme Overrides
|
|
370
|
+
Apply via data-theme="light" on a container or :root
|
|
371
|
+
============================================ */
|
|
372
|
+
|
|
373
|
+
[data-theme="light"] {
|
|
374
|
+
/* ── Color Primitive Overrides ── */
|
|
375
|
+
--pcoi-color-bg: #F5F5FA;
|
|
376
|
+
--pcoi-color-bg-alt: #EEEEF6;
|
|
377
|
+
--pcoi-color-bg-card: #FFFFFF;
|
|
378
|
+
--pcoi-color-bg-card-hover: #F8F8FD;
|
|
379
|
+
--pcoi-color-surface: #FFFFFF;
|
|
380
|
+
--pcoi-color-accent: #A8801E;
|
|
381
|
+
--pcoi-color-accent-hover: #A07520;
|
|
382
|
+
--pcoi-color-text-primary: #1A1A2E;
|
|
383
|
+
--pcoi-color-text-secondary: #4A4A68;
|
|
384
|
+
--pcoi-color-text-muted: #6A6A86;
|
|
385
|
+
--pcoi-color-success: #1B6B4A;
|
|
386
|
+
--pcoi-color-error: #C03C3C;
|
|
387
|
+
--pcoi-color-warning: #C07828;
|
|
388
|
+
--pcoi-color-info: #4068B8;
|
|
389
|
+
--pcoi-color-border: rgba(0, 0, 0, 0.45);
|
|
390
|
+
--pcoi-color-border-hover: rgba(0, 0, 0, 0.55);
|
|
391
|
+
--pcoi-color-border-soft: rgba(0, 0, 0, 0.10);
|
|
392
|
+
--pcoi-color-border-soft-hover: rgba(0, 0, 0, 0.18);
|
|
393
|
+
--pcoi-color-accent-glow: rgba(184, 137, 42, 0.15);
|
|
394
|
+
--pcoi-color-accent-dim: rgba(184, 137, 42, 0.06);
|
|
395
|
+
--pcoi-color-highlight: rgba(184, 137, 42, 0.04);
|
|
396
|
+
--pcoi-color-nav-scrolled-bg: rgba(245, 245, 250, 0.92);
|
|
397
|
+
--pcoi-color-ghost-hover-bg: rgba(0, 0, 0, 0.04);
|
|
398
|
+
--pcoi-color-ghost-hover-border: rgba(0, 0, 0, 0.45);
|
|
399
|
+
--pcoi-color-focus-border: rgba(120, 90, 10, 0.70);
|
|
400
|
+
--pcoi-color-focus-glow: rgba(184, 137, 42, 0.12);
|
|
401
|
+
--pcoi-color-accent-border-subtle: rgba(80, 60, 5, 0.65);
|
|
402
|
+
--pcoi-color-accent-border-dim: rgba(80, 60, 5, 0.60);
|
|
403
|
+
--pcoi-color-grid-line: rgba(0, 0, 0, 0.04);
|
|
404
|
+
|
|
405
|
+
/* ── Semantic Color Tokens (re-declared for light-context resolution) ── */
|
|
406
|
+
--pcoi-semantic-bg-default: var(--pcoi-color-bg);
|
|
407
|
+
--pcoi-semantic-bg-alt: var(--pcoi-color-bg-alt);
|
|
408
|
+
--pcoi-semantic-bg-card: var(--pcoi-color-bg-card);
|
|
409
|
+
--pcoi-semantic-bg-card-hover: var(--pcoi-color-bg-card-hover);
|
|
410
|
+
--pcoi-semantic-bg-surface: var(--pcoi-color-surface);
|
|
411
|
+
--pcoi-semantic-bg-nav-scrolled: var(--pcoi-color-nav-scrolled-bg);
|
|
412
|
+
--pcoi-semantic-bg-overlay: rgba(0, 0, 0, 0.6);
|
|
413
|
+
--pcoi-semantic-text-primary: var(--pcoi-color-text-primary);
|
|
414
|
+
--pcoi-semantic-text-secondary: var(--pcoi-color-text-secondary);
|
|
415
|
+
--pcoi-semantic-text-muted: var(--pcoi-color-text-muted);
|
|
416
|
+
--pcoi-semantic-text-accent: var(--pcoi-color-accent);
|
|
417
|
+
--pcoi-semantic-text-accent-hover: var(--pcoi-color-accent-hover);
|
|
418
|
+
--pcoi-semantic-text-on-accent: var(--pcoi-color-bg);
|
|
419
|
+
--pcoi-semantic-text-success: var(--pcoi-color-success);
|
|
420
|
+
--pcoi-semantic-text-error: var(--pcoi-color-error);
|
|
421
|
+
--pcoi-semantic-text-warning: var(--pcoi-color-warning);
|
|
422
|
+
--pcoi-semantic-text-info: var(--pcoi-color-info);
|
|
423
|
+
--pcoi-semantic-action-primary-bg: var(--pcoi-color-accent);
|
|
424
|
+
--pcoi-semantic-action-primary-bg-hover: var(--pcoi-color-accent-hover);
|
|
425
|
+
--pcoi-semantic-action-primary-text: var(--pcoi-color-bg);
|
|
426
|
+
--pcoi-semantic-action-ghost-bg: transparent;
|
|
427
|
+
--pcoi-semantic-action-ghost-bg-hover: var(--pcoi-color-ghost-hover-bg);
|
|
428
|
+
--pcoi-semantic-action-ghost-border: var(--pcoi-color-border-hover);
|
|
429
|
+
--pcoi-semantic-action-ghost-border-hover: var(--pcoi-color-ghost-hover-border);
|
|
430
|
+
--pcoi-semantic-action-ghost-text: var(--pcoi-color-text-secondary);
|
|
431
|
+
--pcoi-semantic-action-ghost-text-hover: var(--pcoi-color-text-primary);
|
|
432
|
+
--pcoi-semantic-action-toggle-bg: var(--pcoi-color-border-hover);
|
|
433
|
+
--pcoi-semantic-action-toggle-bg-on: var(--pcoi-color-accent);
|
|
434
|
+
--pcoi-semantic-action-toggle-thumb: #FFFFFF;
|
|
435
|
+
--pcoi-semantic-action-success: var(--pcoi-color-success);
|
|
436
|
+
--pcoi-semantic-action-error: var(--pcoi-color-error);
|
|
437
|
+
--pcoi-semantic-action-warning: var(--pcoi-color-warning);
|
|
438
|
+
--pcoi-semantic-action-info: var(--pcoi-color-info);
|
|
439
|
+
--pcoi-semantic-action-success-bg: rgba(42, 125, 95, 0.08);
|
|
440
|
+
--pcoi-semantic-action-error-bg: rgba(224, 82, 82, 0.08);
|
|
441
|
+
--pcoi-semantic-action-warning-bg: rgba(232, 148, 58, 0.08);
|
|
442
|
+
--pcoi-semantic-action-info-bg: rgba(91, 139, 212, 0.08);
|
|
443
|
+
--pcoi-semantic-border-default: var(--pcoi-color-border);
|
|
444
|
+
--pcoi-semantic-border-hover: var(--pcoi-color-border-hover);
|
|
445
|
+
--pcoi-semantic-border-card: var(--pcoi-color-border-soft);
|
|
446
|
+
--pcoi-semantic-border-card-hover: var(--pcoi-color-border-soft-hover);
|
|
447
|
+
--pcoi-semantic-border-accent-subtle: var(--pcoi-color-accent-border-subtle);
|
|
448
|
+
--pcoi-semantic-border-accent-dim: var(--pcoi-color-accent-border-dim);
|
|
449
|
+
--pcoi-semantic-border-nav: var(--pcoi-color-border);
|
|
450
|
+
--pcoi-semantic-border-input-hover: var(--pcoi-color-border-hover);
|
|
451
|
+
--pcoi-semantic-border-success: var(--pcoi-color-success);
|
|
452
|
+
--pcoi-semantic-border-error: var(--pcoi-color-error);
|
|
453
|
+
--pcoi-semantic-border-warning: var(--pcoi-color-warning);
|
|
454
|
+
--pcoi-semantic-border-info: var(--pcoi-color-info);
|
|
455
|
+
--pcoi-semantic-surface-accent-dim: var(--pcoi-color-accent-dim);
|
|
456
|
+
--pcoi-semantic-surface-accent-glow: var(--pcoi-color-accent-glow);
|
|
457
|
+
--pcoi-semantic-surface-highlight: var(--pcoi-color-highlight);
|
|
458
|
+
--pcoi-semantic-surface-elevated: var(--pcoi-color-bg-card);
|
|
459
|
+
--pcoi-semantic-focus-border: var(--pcoi-color-focus-border);
|
|
460
|
+
--pcoi-semantic-focus-glow: var(--pcoi-color-focus-glow);
|
|
461
|
+
|
|
462
|
+
/* ── Semantic Overrides (hardcoded values) ── */
|
|
463
|
+
--pcoi-semantic-text-on-accent: #1A1A2E; /* Dark text on accent backgrounds (buttons) */
|
|
464
|
+
--pcoi-semantic-action-primary-text: #1A1A2E; /* Primary button text stays dark on gold */
|
|
465
|
+
--pcoi-semantic-action-toggle-thumb: #FFFFFF; /* Toggle thumb stays white */
|
|
466
|
+
--pcoi-semantic-text-accent: #7A5C1A; /* Darker gold for WCAG AA 4.5:1 text on light backgrounds */
|
|
467
|
+
--pcoi-semantic-text-warning: #9A5E18; /* Darker amber for WCAG AA 4.5:1 text on light backgrounds */
|
|
468
|
+
|
|
469
|
+
/* ── Effect Overrides ── */
|
|
470
|
+
--pcoi-effect-shadow-nav-scrolled: 0 1px 0 rgba(0, 0, 0, 0.08); /* Nav hairline — dark instead of light */
|
|
471
|
+
--pcoi-effect-shadow-mobile-menu: 0 12px 40px rgba(0, 0, 0, 0.12); /* Lighter mobile menu shadow */
|
|
472
|
+
--pcoi-effect-shadow-elevated: 0 8px 32px rgba(0, 0, 0, 0.10); /* Lighter elevated shadow for modals */
|
|
473
|
+
}
|