@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.
@@ -0,0 +1,122 @@
1
+ {
2
+ "effect": {
3
+ "shadow": {
4
+ "$type": "shadow",
5
+ "btn-primary-hover": {
6
+ "$value": "0 8px 30px rgba(212, 164, 76, 0.25)",
7
+ "$description": "Primary button hover glow — warm gold elevation"
8
+ },
9
+ "nav-scrolled": {
10
+ "$value": "0 1px 0 rgba(255, 255, 255, 0.06)",
11
+ "$description": "Navbar bottom hairline on scroll"
12
+ },
13
+ "mobile-menu": {
14
+ "$value": "0 12px 40px rgba(0, 0, 0, 0.6)",
15
+ "$description": "Mobile menu drop shadow"
16
+ },
17
+ "focus-ring": {
18
+ "$value": "0 0 0 3px rgba(212, 164, 76, 0.08)",
19
+ "$description": "Input focus outer glow ring"
20
+ },
21
+ "focus-ring-error": {
22
+ "$value": "0 0 0 3px rgba(224, 82, 82, 0.08)",
23
+ "$description": "Input focus outer glow ring in error state"
24
+ },
25
+ "elevated": {
26
+ "$value": "0 8px 32px rgba(0, 0, 0, 0.4)",
27
+ "$description": "Elevated shadow for modals and dropdowns"
28
+ }
29
+ },
30
+ "blur": {
31
+ "nav-backdrop": {
32
+ "$value": "20px",
33
+ "$description": "Navbar backdrop-filter blur amount"
34
+ }
35
+ },
36
+ "transition": {
37
+ "$type": "duration",
38
+ "fast": {
39
+ "$value": "0.2s ease",
40
+ "$description": "Buttons, links, borders, input focus"
41
+ },
42
+ "medium": {
43
+ "$value": "0.3s ease",
44
+ "$description": "Cards, navbar, mobile menu, principle hover"
45
+ },
46
+ "slow": {
47
+ "$value": "0.6s ease",
48
+ "$description": "Scroll reveal fade-in animations"
49
+ }
50
+ },
51
+ "animation": {
52
+ "pulse": {
53
+ "duration": "3s",
54
+ "timing": "ease-in-out",
55
+ "iteration": "infinite",
56
+ "$description": "Brain core pulse ring — scale 1→1.15 with fade"
57
+ },
58
+ "orbit-inner": {
59
+ "duration": "40s",
60
+ "timing": "linear",
61
+ "iteration": "infinite",
62
+ "direction": "normal",
63
+ "$description": "Inner orbit rotation (SOPs, Field Notes, Tribal Knowledge)"
64
+ },
65
+ "orbit-outer": {
66
+ "duration": "60s",
67
+ "timing": "linear",
68
+ "iteration": "infinite",
69
+ "direction": "reverse",
70
+ "$description": "Outer orbit rotation (New Hires, Lead Techs, Operations)"
71
+ }
72
+ },
73
+ "opacity": {
74
+ "disabled": {
75
+ "$value": 0.5,
76
+ "$description": "Standard disabled state opacity for interactive elements"
77
+ }
78
+ },
79
+ "transform": {
80
+ "hover-lift": {
81
+ "$value": "translateY(-2px)",
82
+ "$description": "Card and primary button hover lift"
83
+ },
84
+ "hover-lift-sm": {
85
+ "$value": "translateY(-1px)",
86
+ "$description": "Nav CTA hover lift"
87
+ },
88
+ "fade-in-offset": {
89
+ "$value": "translateY(24px)",
90
+ "$description": "Initial position for scroll-reveal fade-in"
91
+ },
92
+ "parallax-factor": {
93
+ "$value": "0.15",
94
+ "$description": "Hero grid background parallax scroll multiplier"
95
+ },
96
+ "press-scale": {
97
+ "$value": "scale(0.985)",
98
+ "$description": "Button press feedback — standard buttons and nav links"
99
+ },
100
+ "press-scale-input": {
101
+ "$value": "scale(0.99)",
102
+ "$description": "Input press feedback — select dropdowns and form inputs"
103
+ },
104
+ "press-scale-control": {
105
+ "$value": "scale(0.95)",
106
+ "$description": "Control press feedback — radio circles and checkbox boxes"
107
+ },
108
+ "press-scale-track": {
109
+ "$value": "scale(0.975)",
110
+ "$description": "Track press feedback — toggle switch tracks"
111
+ },
112
+ "press-scale-icon": {
113
+ "$value": "scale(0.925)",
114
+ "$description": "Icon button press feedback — close buttons and hamburger"
115
+ },
116
+ "toggle-thumb-on": {
117
+ "$value": "scale(1.15)",
118
+ "$description": "Toggle thumb scale increase when checked — cognitive accessibility cue"
119
+ }
120
+ }
121
+ }
122
+ }
@@ -0,0 +1,101 @@
1
+ {
2
+ "layout": {
3
+ "container": {
4
+ "$type": "dimension",
5
+ "max": { "$value": "1200px", "$description": "Max content width — .container" },
6
+ "narrow": { "$value": "800px", "$description": "Narrow content — how-steps, signals, section headers" },
7
+ "cta": { "$value": "680px", "$description": "CTA section max width" },
8
+ "callout": { "$value": "600px", "$description": "Callout text max width" },
9
+ "chamath": { "$value": "640px", "$description": "Chamath callout max width" },
10
+ "hero-sub":{ "$value": "520px", "$description": "Hero subtitle max width" },
11
+ "compare": { "$value": "900px", "$description": "Comparison table max width" },
12
+ "wide": { "$value": "1100px", "$description": "Wide multi-column layouts (3-col grids)" },
13
+ "modal": { "$value": "520px", "$description": "Modal dialog max width" },
14
+ "toast-min": { "$value": "280px","$description": "Toast notification min width" },
15
+ "toast-max": { "$value": "420px","$description": "Toast notification max width" },
16
+ "compare-scroll": { "$value": "500px", "$description": "Comparison table min width before horizontal scroll" },
17
+ "document": { "$value": "900px", "$description": "Document overlay modal max width" }
18
+ },
19
+ "nav": {
20
+ "height": { "$value": "72px", "$description": "Fixed navigation height" }
21
+ },
22
+ "breakpoint": {
23
+ "$type": "dimension",
24
+ "desktop": { "$value": "1025px", "$description": "Desktop — above this: full layout" },
25
+ "tablet": { "$value": "1024px", "$description": "Tablet — at/below: single-col hero, 2-col principles" },
26
+ "mobile": { "$value": "768px", "$description": "Mobile — hamburger nav, all single-col" },
27
+ "small": { "$value": "480px", "$description": "Small mobile — reduced h1, tighter buttons" }
28
+ },
29
+ "zIndex": {
30
+ "base": { "$value": 1, "$description": "Default layer" },
31
+ "content": { "$value": 1, "$description": "Hero content (z-index: 1)" },
32
+ "mobile-menu": { "$value": 100, "$description": "Mobile menu overlay" },
33
+ "nav": { "$value": 1000, "$description": "Fixed navigation" },
34
+ "dropdown": { "$value": 200, "$description": "Dropdown menus and popovers" },
35
+ "modal": { "$value": 500, "$description": "Modal dialogs" },
36
+ "toast": { "$value": 600, "$description": "Toast notifications (above modals)" }
37
+ },
38
+ "component": {
39
+ "$type": "dimension",
40
+ "$description": "Component-specific dimensions for form controls, icons, and decorative elements",
41
+ "control-box": { "$value": "18px", "$description": "Checkbox and radio button control size" },
42
+ "radio-dot": { "$value": "8px", "$description": "Radio button inner dot size" },
43
+ "toggle-track-w": { "$value": "40px", "$description": "Toggle track width" },
44
+ "toggle-track-h": { "$value": "22px", "$description": "Toggle track height" },
45
+ "toggle-thumb": { "$value": "16px", "$description": "Toggle thumb diameter" },
46
+ "toggle-thumb-inset": { "$value": "3px", "$description": "Toggle thumb inset from track edge" },
47
+ "toggle-thumb-travel": { "$value": "18px", "$description": "Toggle thumb translateX when checked" },
48
+ "toggle-check-w": { "$value": "4px", "$description": "Toggle checkmark width" },
49
+ "toggle-check-h": { "$value": "7px", "$description": "Toggle checkmark height" },
50
+ "toggle-check-stroke": { "$value": "1.5px", "$description": "Toggle checkmark border stroke" },
51
+ "icon-box": { "$value": "52px", "$description": "Problem card icon container size" },
52
+ "step-number": { "$value": "48px", "$description": "HowStep number circle size" },
53
+ "hamburger": { "$value": "28px", "$description": "Nav hamburger button size" },
54
+ "hamburger-bar-offset": { "$value": "7px", "$description": "Hamburger X-animation bar translateY offset" },
55
+ "accent-line-w": { "$value": "60px", "$description": "Callout decorative line width" },
56
+ "accent-border-w": { "$value": "3px", "$description": "Toast/variant left accent border width" },
57
+ "bullet": { "$value": "8px", "$description": "SignalsPanel list bullet size" }
58
+ },
59
+ "grid": {
60
+ "hero": {
61
+ "columns": "1fr 1fr",
62
+ "gap": "60px",
63
+ "$description": "Hero section — 2-col on desktop, 1-col on tablet/mobile"
64
+ },
65
+ "problem": {
66
+ "columns": "repeat(2, 1fr)",
67
+ "gap": "24px",
68
+ "$description": "Problem cards — 2-col on desktop, 1-col on mobile"
69
+ },
70
+ "principles": {
71
+ "columns": "repeat(3, 1fr)",
72
+ "gap": "24px",
73
+ "$description": "Principle cards — 3-col desktop, 2-col tablet, 1-col mobile"
74
+ },
75
+ "who": {
76
+ "columns": "repeat(2, 1fr)",
77
+ "gap": "24px",
78
+ "$description": "Who cards — 2-col on desktop, 1-col on mobile"
79
+ },
80
+ "comparison": {
81
+ "columns": "1.2fr 1fr 1fr",
82
+ "$description": "Comparison table 3-col grid"
83
+ },
84
+ "curve": {
85
+ "columns": "1fr 1fr",
86
+ "gap": "64px",
87
+ "$description": "Learning curve — 2-col on desktop, 1-col on tablet/mobile"
88
+ },
89
+ "form-row": {
90
+ "columns": "1fr 1fr",
91
+ "gap": "20px",
92
+ "$description": "Form field rows — 2-col on desktop, 1-col on mobile"
93
+ },
94
+ "suggestions": {
95
+ "columns": "repeat(3, 1fr)",
96
+ "gap": "16px",
97
+ "$description": "Suggestion cards — 3-col desktop, 1-col mobile"
98
+ }
99
+ }
100
+ }
101
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "radius": {
3
+ "$type": "dimension",
4
+ "$description": "Border radius scale",
5
+ "sm": { "$value": "6px", "$description": "Buttons, badges, inputs, icon boxes, orbit nodes" },
6
+ "md": { "$value": "12px", "$description": "Cards, tables, chart panels" },
7
+ "lg": { "$value": "20px", "$description": "CTA form container" },
8
+ "xl": { "$value": "28px", "$description": "Reserved — not currently used" },
9
+ "full": { "$value": "9999px", "$description": "Circles — step numbers, brain core, bullet dots" }
10
+ }
11
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "semantic-radius": {
3
+ "$type": "dimension",
4
+ "$description": "Semantic radius tokens. Map radius primitives to component-level intent.",
5
+
6
+ "btn": {
7
+ "$value": "{radius.sm}",
8
+ "$description": "Border radius for buttons"
9
+ },
10
+ "input": {
11
+ "$value": "{radius.sm}",
12
+ "$description": "Border radius for form inputs and textareas"
13
+ },
14
+ "card": {
15
+ "$value": "{radius.md}",
16
+ "$description": "Border radius for cards and panels"
17
+ },
18
+ "panel": {
19
+ "$value": "{radius.lg}",
20
+ "$description": "Border radius for large panels and form containers"
21
+ },
22
+ "badge": {
23
+ "$value": "{radius.full}",
24
+ "$description": "Border radius for badges and pills"
25
+ },
26
+ "avatar": {
27
+ "$value": "{radius.full}",
28
+ "$description": "Border radius for avatars and step numbers"
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "sizing": {
3
+ "$type": "dimension",
4
+ "$description": "Tier 1: Sizing primitives — standardized height scale for component constraints. Based on 8px grid. Separate from spacing (padding/margin/gap).",
5
+ "height": {
6
+ "$description": "Component height scale — use semantic-sizing tokens in components, not these directly",
7
+ "xs": { "$value": "24px", "$description": "1.5rem — compact badges, tags, small indicators" },
8
+ "sm": { "$value": "32px", "$description": "2rem — small buttons, compact controls" },
9
+ "md": { "$value": "40px", "$description": "2.5rem — standard inputs, default buttons, selects" },
10
+ "lg": { "$value": "48px", "$description": "3rem — large buttons, step numbers, prominent controls" },
11
+ "xl": { "$value": "64px", "$description": "4rem — large interactive areas, icon containers" },
12
+ "2xl": { "$value": "80px", "$description": "5rem — hero-scale elements, feature panels" }
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "semantic-sizing": {
3
+ "$type": "dimension",
4
+ "$description": "Tier 3: Semantic sizing tokens — component-intent height constraints. Apply these in component CSS.",
5
+ "input-height": { "$value": "{sizing.height.md}", "$description": "Standard form input height (FormField, Select)" },
6
+ "btn-height": { "$value": "{sizing.height.md}", "$description": "Default button height" },
7
+ "btn-height-lg": { "$value": "{sizing.height.lg}", "$description": "Large button height (.pcoi-btn--large)" },
8
+ "btn-height-nav": { "$value": "{sizing.height.sm}", "$description": "Nav CTA button height (compact)" },
9
+ "textarea-min-height": { "$value": "{sizing.height.2xl}", "$description": "Textarea minimum height" },
10
+ "badge-height": { "$value": "{sizing.height.xs}", "$description": "Badge and tag height" },
11
+ "step-number": { "$value": "{sizing.height.lg}", "$description": "HowStep number circle diameter (48px)" },
12
+ "icon-box": { "$value": "52px", "$description": "Card icon container size (custom — between lg and xl)" }
13
+ }
14
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "spacing": {
3
+ "$type": "dimension",
4
+ "$description": "Tier 1: Spacing primitives. All values extracted from pcoi.ai CSS.",
5
+ "0": { "$value": "0px", "$description": "Zero — how-steps gap" },
6
+ "4": { "$value": "4px", "$description": "Micro — stat vertical gap" },
7
+ "5": { "$value": "5px", "$description": "Hamburger line gap" },
8
+ "6": { "$value": "6px", "$description": "Form label-to-input gap" },
9
+ "8": { "$value": "8px", "$description": "Step h3 margin, hero-badge padding-y, mobile-menu padding-top" },
10
+ "10": { "$value": "10px", "$description": "Card h3 margin-bottom, nav-cta padding-y" },
11
+ "12": { "$value": "12px", "$description": "Footer brand tagline margin, mobile CTA margin-top, callout attribution mt" },
12
+ "14": { "$value": "14px", "$description": "Signals li gap, button padding-y, mobile-menu link padding-y" },
13
+ "16": { "$value": "16px", "$description": "Section-label mb, h2 mb, badge padding-x, form input padding, cta-content mb, form-note mt" },
14
+ "20": { "$value": "20px", "$description": "Form gap, icon mb, signals h3 mb, form row gap" },
15
+ "22": { "$value": "22px", "$description": "Nav CTA padding-x" },
16
+ "24": { "$value": "24px", "$description": "Container padding-x, grid gap, h1 mb, footer-bottom pt, signal-bullet pl, callout-line mb, nav padding-x" },
17
+ "28": { "$value": "28px", "$description": "Hero-badge mb, btn padding-x, footer-links gap" },
18
+ "32": { "$value": "32px", "$description": "Nav-links gap, how-step gap, curve-stats gap, chart padding, mobile-menu footer gap" },
19
+ "36": { "$value": "36px", "$description": "Card padding, hero-sub mb, btn-lg padding-x" },
20
+ "40": { "$value": "40px", "$description": "How-step padding-y, callout padding, form padding, footer-inner mb, signals padding-y" },
21
+ "48": { "$value": "48px", "$description": "Grid mb, cta-content p mb, signals padding-x, mobile tablet gap" },
22
+ "60": { "$value": "60px", "$description": "Hero grid gap, footer top-padding, callout-line width" },
23
+ "64": { "$value": "64px", "$description": "Section-header mb, curve-layout gap" },
24
+ "72": { "$value": "72px", "$description": "Nav height" },
25
+ "80": { "$value": "80px", "$description": "Hero bottom-padding, mobile section padding, textarea min-height" },
26
+ "100": { "$value": "100px", "$description": "Mobile hero top-padding" },
27
+ "120": { "$value": "120px", "$description": "Section padding (top and bottom), hero top-padding" }
28
+ }
29
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "semantic-spacing": {
3
+ "$type": "dimension",
4
+ "$description": "Semantic spacing tokens. Map spacing primitives to component-level intent.",
5
+
6
+ "section-y": {
7
+ "$value": "{spacing.80}",
8
+ "$description": "Vertical padding for page sections"
9
+ },
10
+ "section-y-lg": {
11
+ "$value": "{spacing.120}",
12
+ "$description": "Vertical padding for large/hero sections"
13
+ },
14
+ "component-gap": {
15
+ "$value": "{spacing.40}",
16
+ "$description": "Default gap between stacked components"
17
+ },
18
+ "card-padding": {
19
+ "$value": "{spacing.36}",
20
+ "$description": "Internal padding for cards and panels"
21
+ },
22
+ "card-gap": {
23
+ "$value": "{spacing.20}",
24
+ "$description": "Gap between elements inside a card"
25
+ },
26
+ "form-gap": {
27
+ "$value": "{spacing.20}",
28
+ "$description": "Gap between form fields"
29
+ },
30
+ "form-padding": {
31
+ "$value": "{spacing.40}",
32
+ "$description": "Internal padding for form containers"
33
+ },
34
+ "input-x": {
35
+ "$value": "{spacing.16}",
36
+ "$description": "Horizontal padding inside inputs"
37
+ },
38
+ "input-y": {
39
+ "$value": "{spacing.12}",
40
+ "$description": "Vertical padding inside inputs"
41
+ },
42
+ "btn-x": {
43
+ "$value": "{spacing.24}",
44
+ "$description": "Horizontal padding for default buttons"
45
+ },
46
+ "btn-y": {
47
+ "$value": "{spacing.10}",
48
+ "$description": "Vertical padding for default buttons"
49
+ },
50
+ "btn-x-lg": {
51
+ "$value": "{spacing.36}",
52
+ "$description": "Horizontal padding for large buttons"
53
+ },
54
+ "btn-y-lg": {
55
+ "$value": "{spacing.16}",
56
+ "$description": "Vertical padding for large buttons"
57
+ },
58
+ "nav-height": {
59
+ "$value": "{spacing.72}",
60
+ "$description": "Navigation bar height"
61
+ },
62
+ "stack-sm": {
63
+ "$value": "{spacing.8}",
64
+ "$description": "Small vertical stack spacing (labels, badges)"
65
+ },
66
+ "stack-md": {
67
+ "$value": "{spacing.16}",
68
+ "$description": "Medium vertical stack spacing (headings, paragraphs)"
69
+ },
70
+ "stack-lg": {
71
+ "$value": "{spacing.32}",
72
+ "$description": "Large vertical stack spacing (content blocks)"
73
+ },
74
+ "inline-sm": {
75
+ "$value": "{spacing.8}",
76
+ "$description": "Small inline spacing (icon + text)"
77
+ },
78
+ "inline-md": {
79
+ "$value": "{spacing.16}",
80
+ "$description": "Medium inline spacing (nav links)"
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "font": {
3
+ "family": {
4
+ "$type": "fontFamily",
5
+ "sans": {
6
+ "$value": "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
7
+ "$description": "Primary — all body and heading text"
8
+ },
9
+ "mono": {
10
+ "$value": "'JetBrains Mono', 'Fira Code', monospace",
11
+ "$description": "Secondary — badges, labels, step numbers, code blocks"
12
+ }
13
+ },
14
+ "weight": {
15
+ "$type": "fontWeight",
16
+ "light": { "$value": 300, "$description": "Callout quotes, attributions" },
17
+ "regular": { "$value": 400, "$description": "Body text default" },
18
+ "medium": { "$value": 500, "$description": "Nav links, labels, mono text, nav-cta weight=450 in CSS" },
19
+ "semibold": { "$value": 600, "$description": "Buttons, card titles, h3s, logo" },
20
+ "bold": { "$value": 700, "$description": "Section h2s, CTA h2" },
21
+ "extrabold": { "$value": 800, "$description": "Hero h1 only" }
22
+ },
23
+ "size": {
24
+ "$type": "dimension",
25
+ "$description": "Font size scale extracted from CSS",
26
+ "xs": { "$value": "0.7rem", "$description": "12px — Orbit node labels" },
27
+ "sm": { "$value": "0.75rem", "$description": "12px — Section labels, badges" },
28
+ "caption": { "$value": "0.8rem", "$description": "12.8px — Form labels, footer copyright, form note, stat-label" },
29
+ "body-sm": { "$value": "0.85rem","$description": "13.6px — Step numbers, principle numbers, stat numbers, comparison header, footer brand" },
30
+ "nav": { "$value": "0.875rem", "$description": "14px — Nav links, footer links" },
31
+ "body": { "$value": "0.9rem", "$description": "14.4px — Comparison cells, principle body, who-card body, signals body" },
32
+ "body-default": { "$value": "0.95rem", "$description": "15.2px — Card body, step desc, buttons, form inputs" },
33
+ "body-lg": { "$value": "1rem", "$description": "16px — Mobile menu links, btn-lg, curve body" },
34
+ "lead": { "$value": "1.05rem", "$description": "16.8px — Principle h3, CTA description" },
35
+ "sub": { "$value": "1.1rem", "$description": "17.6px — Who h3, signals h3, section desc, callout quote, Chamath" },
36
+ "h3": { "$value": "1.15rem", "$description": "18.4px — Card h3, hero sub text" },
37
+ "h3-lg": { "$value": "1.2rem", "$description": "19.2px — Step titles" },
38
+ "logo": { "$value": "1.35rem", "$description": "21.6px — PCOI logo" },
39
+ "callout": { "$value": "1.35rem","$description": "21.6px — Problem callout quote" },
40
+ "close-sm": { "$value": "1.25rem","$description": "20px — Toast close button icon" },
41
+ "close-lg": { "$value": "1.5rem", "$description": "24px — Modal close button icon" },
42
+ "h2-sm": { "$value": "2.25rem", "$description": "36px — Smaller section heading (static desktop value; use semantic section-title-xs-size for fluid)" },
43
+ "h2": { "$value": "2.5rem", "$description": "40px — CTA section heading (static desktop value; use semantic section-title-sm-size for fluid)" },
44
+ "h1": { "$value": "2.75rem", "$description": "44px — Main section heading (static desktop value; use semantic section-title-size for fluid)" },
45
+ "display": { "$value": "4rem", "$description": "64px — Hero h1 headline (static desktop value; use semantic display-size for fluid)" }
46
+ },
47
+ "lineHeight": {
48
+ "$type": "number",
49
+ "none": { "$value": 1, "$description": "No extra leading — buttons, badges, close icons" },
50
+ "tight": { "$value": 1.1, "$description": "Hero h1" },
51
+ "heading": { "$value": 1.2, "$description": "Section h2s, CTA h2" },
52
+ "snug": { "$value": 1.3, "$description": "Brain core text" },
53
+ "body-sm": { "$value": 1.5, "$description": "Callout, comparison cells, footer brand, signals li" },
54
+ "body": { "$value": 1.6, "$description": "Default body text — cards, principles, who-cards" },
55
+ "step": { "$value": 1.65, "$description": "Step content body" },
56
+ "relaxed": { "$value": 1.7, "$description": "Hero sub, section desc, curve text, CTA desc" }
57
+ },
58
+ "letterSpacing": {
59
+ "$type": "dimension",
60
+ "tight": { "$value": "-0.03em", "$description": "Hero h1" },
61
+ "heading": { "$value": "-0.02em", "$description": "Section h2s" },
62
+ "normal": { "$value": "0em", "$description": "Default / body text" },
63
+ "logo": { "$value": "0.04em", "$description": "PCOI logo, orbit node labels" },
64
+ "label": { "$value": "0.06em", "$description": "Form labels, comparison headers" },
65
+ "badge": { "$value": "0.08em", "$description": "Hero badge" },
66
+ "section": { "$value": "0.1em", "$description": "Section labels (The Problem, How It Works, etc.)" }
67
+ }
68
+ }
69
+ }