@citron-systems/citron-ds 1.0.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/README.md +149 -0
- package/dist/ai/inkblot-ai-reference.json +570 -0
- package/dist/ai/inkblot-tokens-resolved.json +199 -0
- package/dist/ai/inkblot-tokens-schema.json +54 -0
- package/dist/css/inkblot-variables.css +203 -0
- package/dist/js/inkblot-tokens.js +264 -0
- package/dist/js/inkblot-tokens.json +199 -0
- package/dist/scss/_inkblot-variables.scss +200 -0
- package/package.json +61 -0
- package/tokens/primitive/breakpoint.tokens.json +14 -0
- package/tokens/primitive/color.tokens.json +71 -0
- package/tokens/primitive/duration.tokens.json +38 -0
- package/tokens/primitive/grid.tokens.json +34 -0
- package/tokens/primitive/radius.tokens.json +26 -0
- package/tokens/primitive/shadow.tokens.json +41 -0
- package/tokens/primitive/spacing.tokens.json +38 -0
- package/tokens/primitive/typography.tokens.json +60 -0
- package/tokens/primitive/zindex.tokens.json +19 -0
- package/tokens/semantic/dark.tokens.json +43 -0
- package/tokens/semantic/inkblot.semantic.tokens.json +140 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
{
|
|
2
|
+
"InkblotBreakpointSm": "640px",
|
|
3
|
+
"InkblotBreakpointMd": "768px",
|
|
4
|
+
"InkblotBreakpointLg": "1024px",
|
|
5
|
+
"InkblotBreakpointXl": "1280px",
|
|
6
|
+
"InkblotBreakpoint2xl": "1536px",
|
|
7
|
+
"InkblotColorNeutralWhite": "#ffffff",
|
|
8
|
+
"InkblotColorNeutralGray50": "#fafaf7",
|
|
9
|
+
"InkblotColorNeutralGray100": "#f5f4f0",
|
|
10
|
+
"InkblotColorNeutralGray200": "#eae9e3",
|
|
11
|
+
"InkblotColorNeutralGray300": "#d4d3cb",
|
|
12
|
+
"InkblotColorNeutralGray400": "#93928a",
|
|
13
|
+
"InkblotColorNeutralGray500": "#6b6a63",
|
|
14
|
+
"InkblotColorNeutralGray600": "#4d4c47",
|
|
15
|
+
"InkblotColorNeutralGray700": "#3a3935",
|
|
16
|
+
"InkblotColorNeutralGray800": "#2d2c28",
|
|
17
|
+
"InkblotColorNeutralGray900": "#1d1c19",
|
|
18
|
+
"InkblotColorNeutralGray950": "#0f0e0c",
|
|
19
|
+
"InkblotColorAccentCitron50": "#fdfbf3",
|
|
20
|
+
"InkblotColorAccentCitron100": "#faf4df",
|
|
21
|
+
"InkblotColorAccentCitron200": "#f3e6b8",
|
|
22
|
+
"InkblotColorAccentCitron300": "#e8d38a",
|
|
23
|
+
"InkblotColorAccentCitron400": "#d9bc58",
|
|
24
|
+
"InkblotColorAccentCitron500": "#c4a030",
|
|
25
|
+
"InkblotColorAccentCitron600": "#a38427",
|
|
26
|
+
"InkblotColorAccentCitron700": "#7f671f",
|
|
27
|
+
"InkblotColorAccentCitron800": "#5c4a18",
|
|
28
|
+
"InkblotColorAccentCitron900": "#3d3111",
|
|
29
|
+
"InkblotColorSemanticSuccessLight": "#3d9e50",
|
|
30
|
+
"InkblotColorSemanticSuccessMain": "#358c46",
|
|
31
|
+
"InkblotColorSemanticSuccessDark": "#2a7538",
|
|
32
|
+
"InkblotColorSemanticWarningLight": "#e0a020",
|
|
33
|
+
"InkblotColorSemanticWarningMain": "#c48c1a",
|
|
34
|
+
"InkblotColorSemanticWarningDark": "#a67515",
|
|
35
|
+
"InkblotColorSemanticErrorLight": "#d14940",
|
|
36
|
+
"InkblotColorSemanticErrorMain": "#be3e35",
|
|
37
|
+
"InkblotColorSemanticErrorDark": "#a3352d",
|
|
38
|
+
"InkblotColorSemanticInfoLight": "#6ba3c2",
|
|
39
|
+
"InkblotColorSemanticInfoMain": "#5790ad",
|
|
40
|
+
"InkblotColorSemanticInfoDark": "#497a94",
|
|
41
|
+
"InkblotDurationInstant": "0ms",
|
|
42
|
+
"InkblotDurationFast": "120ms",
|
|
43
|
+
"InkblotDurationNormal": "200ms",
|
|
44
|
+
"InkblotDurationSlow": "320ms",
|
|
45
|
+
"InkblotDurationSlower": "500ms",
|
|
46
|
+
"InkblotEasingDefault": [0.25,0.1,0.25,1],
|
|
47
|
+
"InkblotEasingIn": [0.32,0,0.67,0],
|
|
48
|
+
"InkblotEasingOut": [0.33,1,0.68,1],
|
|
49
|
+
"InkblotEasingInOut": [0.65,0,0.35,1],
|
|
50
|
+
"InkblotEasingExpressive": [0.22,1,0.36,1],
|
|
51
|
+
"InkblotGridColumnsMobile": "4rem",
|
|
52
|
+
"InkblotGridColumnsTablet": "8rem",
|
|
53
|
+
"InkblotGridColumnsDesktop": "12rem",
|
|
54
|
+
"InkblotGridColumnsWide": "16rem",
|
|
55
|
+
"InkblotGridColumnsMax": "24rem",
|
|
56
|
+
"InkblotGridGutterSm": "0.5rem",
|
|
57
|
+
"InkblotGridGutterMd": "1rem",
|
|
58
|
+
"InkblotGridGutterLg": "1.5rem",
|
|
59
|
+
"InkblotGridGutterXl": "2rem",
|
|
60
|
+
"InkblotGridMarginMobile": "1rem",
|
|
61
|
+
"InkblotGridMarginTablet": "2rem",
|
|
62
|
+
"InkblotGridMarginDesktop": "4rem",
|
|
63
|
+
"InkblotGridMarginWide": "auto",
|
|
64
|
+
"InkblotGridMaxWidthContent": "768px",
|
|
65
|
+
"InkblotGridMaxWidthContainer": "1200px",
|
|
66
|
+
"InkblotGridMaxWidthWide": "1440px",
|
|
67
|
+
"InkblotGridMaxWidthFull": "1920px",
|
|
68
|
+
"InkblotRadiusNone": "0",
|
|
69
|
+
"InkblotRadiusSm": "6px",
|
|
70
|
+
"InkblotRadiusMd": "10px",
|
|
71
|
+
"InkblotRadiusLg": "14px",
|
|
72
|
+
"InkblotRadiusXl": "18px",
|
|
73
|
+
"InkblotRadius2xl": "24px",
|
|
74
|
+
"InkblotRadiusFull": "9999px",
|
|
75
|
+
"InkblotBorderWidthNone": "0",
|
|
76
|
+
"InkblotBorderWidthThin": "1px",
|
|
77
|
+
"InkblotBorderWidthMedium": "2px",
|
|
78
|
+
"InkblotBorderWidthThick": "3px",
|
|
79
|
+
"InkblotShadowNone": "none",
|
|
80
|
+
"InkblotShadowXs": "0 1px 2px 0 rgba(29, 28, 25, 0.04)",
|
|
81
|
+
"InkblotShadowSm": "0 2px 8px -1px rgba(29, 28, 25, 0.06), 0 1px 3px -1px rgba(29, 28, 25, 0.04)",
|
|
82
|
+
"InkblotShadowMd": "0 4px 16px -2px rgba(29, 28, 25, 0.08), 0 2px 6px -2px rgba(29, 28, 25, 0.04)",
|
|
83
|
+
"InkblotShadowLg": "0 8px 24px -4px rgba(29, 28, 25, 0.10), 0 4px 10px -4px rgba(29, 28, 25, 0.04)",
|
|
84
|
+
"InkblotShadowXl": "0 16px 40px -8px rgba(29, 28, 25, 0.12), 0 8px 16px -8px rgba(29, 28, 25, 0.04)",
|
|
85
|
+
"InkblotOpacityDisabled": 0.4,
|
|
86
|
+
"InkblotOpacityOverlay": 0.45,
|
|
87
|
+
"InkblotOpacitySubtle": 0.6,
|
|
88
|
+
"InkblotOpacityDefault": 1,
|
|
89
|
+
"InkblotSpacing0": "0",
|
|
90
|
+
"InkblotSpacing1": "0.25rem",
|
|
91
|
+
"InkblotSpacing2": "0.5rem",
|
|
92
|
+
"InkblotSpacing3": "0.75rem",
|
|
93
|
+
"InkblotSpacing4": "1rem",
|
|
94
|
+
"InkblotSpacing5": "1.25rem",
|
|
95
|
+
"InkblotSpacing6": "1.5rem",
|
|
96
|
+
"InkblotSpacing8": "2rem",
|
|
97
|
+
"InkblotSpacing10": "2.5rem",
|
|
98
|
+
"InkblotSpacing12": "3rem",
|
|
99
|
+
"InkblotSpacing16": "4rem",
|
|
100
|
+
"InkblotSpacing20": "5rem",
|
|
101
|
+
"InkblotSpacing24": "6rem",
|
|
102
|
+
"InkblotSpacing32": "8rem",
|
|
103
|
+
"InkblotSizeIconXs": "1rem",
|
|
104
|
+
"InkblotSizeIconSm": "1.25rem",
|
|
105
|
+
"InkblotSizeIconMd": "1.5rem",
|
|
106
|
+
"InkblotSizeIconLg": "2rem",
|
|
107
|
+
"InkblotSizeIconXl": "2.5rem",
|
|
108
|
+
"InkblotSizeTouchTargetMin": "44px",
|
|
109
|
+
"InkblotSizeTouchTargetComfortable": "48px",
|
|
110
|
+
"InkblotTypographyFontFamilySans": "'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
111
|
+
"InkblotTypographyFontFamilyMono": "'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
112
|
+
"InkblotTypographyFontFamilyDisplay": "'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
113
|
+
"InkblotTypographyFontSizeXs": "0.75rem",
|
|
114
|
+
"InkblotTypographyFontSizeSm": "0.8125rem",
|
|
115
|
+
"InkblotTypographyFontSizeBase": "0.9375rem",
|
|
116
|
+
"InkblotTypographyFontSizeMd": "1.0625rem",
|
|
117
|
+
"InkblotTypographyFontSizeLg": "1.25rem",
|
|
118
|
+
"InkblotTypographyFontSizeXl": "1.5rem",
|
|
119
|
+
"InkblotTypographyFontSize2xl": "1.75rem",
|
|
120
|
+
"InkblotTypographyFontSize3xl": "2.125rem",
|
|
121
|
+
"InkblotTypographyFontSize4xl": "2.75rem",
|
|
122
|
+
"InkblotTypographyFontSize5xl": "3.25rem",
|
|
123
|
+
"InkblotTypographyFontWeightRegular": "400",
|
|
124
|
+
"InkblotTypographyFontWeightMedium": "500",
|
|
125
|
+
"InkblotTypographyFontWeightSemibold": "600",
|
|
126
|
+
"InkblotTypographyFontWeightBold": "700",
|
|
127
|
+
"InkblotTypographyLineHeightTight": 1.2,
|
|
128
|
+
"InkblotTypographyLineHeightSnug": 1.375,
|
|
129
|
+
"InkblotTypographyLineHeightNormal": 1.5,
|
|
130
|
+
"InkblotTypographyLineHeightRelaxed": 1.65,
|
|
131
|
+
"InkblotTypographyLineHeightLoose": 1.8,
|
|
132
|
+
"InkblotTypographyLetterSpacingTighter": "-0.04em",
|
|
133
|
+
"InkblotTypographyLetterSpacingTight": "-0.02em",
|
|
134
|
+
"InkblotTypographyLetterSpacingNormal": "0",
|
|
135
|
+
"InkblotTypographyLetterSpacingWide": "0.02em",
|
|
136
|
+
"InkblotTypographyLetterSpacingWider": "0.06em",
|
|
137
|
+
"InkblotZIndexHide": -1,
|
|
138
|
+
"InkblotZIndexBase": 0,
|
|
139
|
+
"InkblotZIndexRaised": 1,
|
|
140
|
+
"InkblotZIndexDropdown": 10,
|
|
141
|
+
"InkblotZIndexSticky": 20,
|
|
142
|
+
"InkblotZIndexOverlay": 30,
|
|
143
|
+
"InkblotZIndexModal": 40,
|
|
144
|
+
"InkblotZIndexPopover": 50,
|
|
145
|
+
"InkblotZIndexToast": 60,
|
|
146
|
+
"InkblotZIndexMax": 9999,
|
|
147
|
+
"InkblotDarkColorBackgroundPrimary": "#12110e",
|
|
148
|
+
"InkblotDarkColorBackgroundSecondary": "#1d1c18",
|
|
149
|
+
"InkblotDarkColorBackgroundTertiary": "#2a2924",
|
|
150
|
+
"InkblotDarkColorBackgroundInverse": "#fafaf7",
|
|
151
|
+
"InkblotDarkColorTextPrimary": "#f5f4f0",
|
|
152
|
+
"InkblotDarkColorTextSecondary": "#93928a",
|
|
153
|
+
"InkblotDarkColorTextTertiary": "#6b6a63",
|
|
154
|
+
"InkblotDarkColorTextInverse": "#1d1c19",
|
|
155
|
+
"InkblotDarkColorTextLink": "#d9bc58",
|
|
156
|
+
"InkblotDarkColorTextLinkHover": "#e8d38a",
|
|
157
|
+
"InkblotDarkColorBorderDefault": "#38372f",
|
|
158
|
+
"InkblotDarkColorBorderStrong": "#4d4c44",
|
|
159
|
+
"InkblotDarkColorBorderFocus": "#d9bc58",
|
|
160
|
+
"InkblotDarkColorInteractivePrimary": "#d9bc58",
|
|
161
|
+
"InkblotDarkColorInteractivePrimaryHover": "#e8d38a",
|
|
162
|
+
"InkblotDarkColorInteractivePrimaryActive": "#c4a030",
|
|
163
|
+
"InkblotDarkColorInteractiveSecondary": "#2a2924",
|
|
164
|
+
"InkblotDarkColorInteractiveSecondaryHover": "#38372f",
|
|
165
|
+
"InkblotDarkColorStatusSuccess": "#4cb864",
|
|
166
|
+
"InkblotDarkColorStatusWarning": "#e0a020",
|
|
167
|
+
"InkblotDarkColorStatusError": "#e05a52",
|
|
168
|
+
"InkblotDarkColorStatusInfo": "#7ab8d6",
|
|
169
|
+
"InkblotSemanticColorBackgroundPrimary": "#fafaf7",
|
|
170
|
+
"InkblotSemanticColorBackgroundSecondary": "#ffffff",
|
|
171
|
+
"InkblotSemanticColorBackgroundTertiary": "#f5f4f0",
|
|
172
|
+
"InkblotSemanticColorBackgroundInverse": "#1d1c19",
|
|
173
|
+
"InkblotSemanticColorTextPrimary": "#1d1c19",
|
|
174
|
+
"InkblotSemanticColorTextSecondary": "#6b6a63",
|
|
175
|
+
"InkblotSemanticColorTextTertiary": "#93928a",
|
|
176
|
+
"InkblotSemanticColorTextInverse": "#ffffff",
|
|
177
|
+
"InkblotSemanticColorTextLink": "#a38427",
|
|
178
|
+
"InkblotSemanticColorTextLinkHover": "#7f671f",
|
|
179
|
+
"InkblotSemanticColorBorderDefault": "#eae9e3",
|
|
180
|
+
"InkblotSemanticColorBorderStrong": "#d4d3cb",
|
|
181
|
+
"InkblotSemanticColorBorderFocus": "#c4a030",
|
|
182
|
+
"InkblotSemanticColorInteractivePrimary": "#c4a030",
|
|
183
|
+
"InkblotSemanticColorInteractivePrimaryHover": "#a38427",
|
|
184
|
+
"InkblotSemanticColorInteractivePrimaryActive": "#7f671f",
|
|
185
|
+
"InkblotSemanticColorInteractiveSecondary": "#f5f4f0",
|
|
186
|
+
"InkblotSemanticColorInteractiveSecondaryHover": "#eae9e3",
|
|
187
|
+
"InkblotSemanticColorStatusSuccess": "#358c46",
|
|
188
|
+
"InkblotSemanticColorStatusWarning": "#c48c1a",
|
|
189
|
+
"InkblotSemanticColorStatusError": "#be3e35",
|
|
190
|
+
"InkblotSemanticColorStatusInfo": "#5790ad",
|
|
191
|
+
"InkblotSemanticTypographyHeading1": {"fontFamily":"'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"2.125rem","fontWeight":"600","lineHeight":1.2,"letterSpacing":"-0.02em"},
|
|
192
|
+
"InkblotSemanticTypographyHeading2": {"fontFamily":"'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.75rem","fontWeight":"600","lineHeight":1.2,"letterSpacing":"-0.02em"},
|
|
193
|
+
"InkblotSemanticTypographyHeading3": {"fontFamily":"'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.5rem","fontWeight":"500","lineHeight":1.375,"letterSpacing":"0"},
|
|
194
|
+
"InkblotSemanticTypographyHeading4": {"fontFamily":"'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.25rem","fontWeight":"500","lineHeight":1.375,"letterSpacing":"0"},
|
|
195
|
+
"InkblotSemanticTypographyBodyDefault": {"fontFamily":"'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"0.9375rem","fontWeight":"400","lineHeight":1.5,"letterSpacing":"0"},
|
|
196
|
+
"InkblotSemanticTypographyBodySmall": {"fontFamily":"'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"0.8125rem","fontWeight":"400","lineHeight":1.5,"letterSpacing":"0"},
|
|
197
|
+
"InkblotSemanticTypographyBodyLarge": {"fontFamily":"'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"1.0625rem","fontWeight":"400","lineHeight":1.65,"letterSpacing":"0"},
|
|
198
|
+
"InkblotSemanticTypographyLabelDefault": {"fontFamily":"'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif","fontSize":"0.75rem","fontWeight":"500","lineHeight":1.5,"letterSpacing":"0.02em"}
|
|
199
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Inkblot Studio Design Tokens",
|
|
4
|
+
"description": "AI training reference - use these token paths when generating Inkblot Studio components",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"tokenCategories": {
|
|
8
|
+
"type": "object",
|
|
9
|
+
"description": "Token organization for AI context",
|
|
10
|
+
"properties": {
|
|
11
|
+
"color": {
|
|
12
|
+
"description": "Use semantic colors in components: inkblot.semantic.color.*",
|
|
13
|
+
"semantic": {
|
|
14
|
+
"background": ["primary", "secondary", "tertiary", "inverse"],
|
|
15
|
+
"text": ["primary", "secondary", "tertiary", "inverse", "link", "linkHover"],
|
|
16
|
+
"border": ["default", "strong", "focus"],
|
|
17
|
+
"interactive": ["primary", "primaryHover", "primaryActive", "secondary", "secondaryHover"],
|
|
18
|
+
"status": ["success", "warning", "error", "info"]
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"spacing": {
|
|
22
|
+
"description": "4pt grid: 0, 1(4px), 2(8px), 3(12px), 4(16px), 5(20px), 6(24px), 8(32px), 10(40px), 12(48px), 16(64px), 20(80px), 24(96px), 32(128px)"
|
|
23
|
+
},
|
|
24
|
+
"typography": {
|
|
25
|
+
"headings": ["1", "2", "3", "4"],
|
|
26
|
+
"body": ["default", "small", "large"],
|
|
27
|
+
"label": ["default"]
|
|
28
|
+
},
|
|
29
|
+
"radius": {
|
|
30
|
+
"values": ["none", "sm", "md", "lg", "xl", "2xl", "full"]
|
|
31
|
+
},
|
|
32
|
+
"shadow": {
|
|
33
|
+
"elevation": ["none", "xs", "sm", "md", "lg", "xl"]
|
|
34
|
+
},
|
|
35
|
+
"duration": {
|
|
36
|
+
"values": ["instant", "fast", "normal", "slow", "slower"]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"componentGuidelines": {
|
|
41
|
+
"description": "AI component generation rules",
|
|
42
|
+
"rules": [
|
|
43
|
+
"Use semantic tokens (inkblot.semantic.*) not primitives",
|
|
44
|
+
"Primary text: var(--inkblot-semantic-color-text-primary)",
|
|
45
|
+
"Primary background: var(--inkblot-semantic-color-background-primary)",
|
|
46
|
+
"Primary button: var(--inkblot-semantic-color-interactive-primary)",
|
|
47
|
+
"Minimum touch target: 44px (WCAG 2.4.11)",
|
|
48
|
+
"Border radius: 8px for cards/inputs (--inkblot-radius-md)",
|
|
49
|
+
"Spacing: 4pt grid (8px, 16px, 24px)",
|
|
50
|
+
"Focus: 2px solid focus color (--inkblot-border-width-medium)"
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Do not edit directly, this file was auto-generated.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
:root {
|
|
6
|
+
--inkblot-breakpoint-sm: 640px; /** Small devices */
|
|
7
|
+
--inkblot-breakpoint-md: 768px; /** Tablets */
|
|
8
|
+
--inkblot-breakpoint-lg: 1024px; /** Laptops */
|
|
9
|
+
--inkblot-breakpoint-xl: 1280px; /** Desktops */
|
|
10
|
+
--inkblot-breakpoint-2xl: 1536px; /** Large screens */
|
|
11
|
+
--inkblot-color-neutral-white: #ffffff; /** Pure white, floating surfaces */
|
|
12
|
+
--inkblot-color-neutral-gray-50: #fafaf7; /** Warm off-white, body background */
|
|
13
|
+
--inkblot-color-neutral-gray-100: #f5f4f0; /** Warm surface, secondary bg */
|
|
14
|
+
--inkblot-color-neutral-gray-200: #eae9e3; /** Subtle warm border, dividers */
|
|
15
|
+
--inkblot-color-neutral-gray-300: #d4d3cb; /** Medium warm border */
|
|
16
|
+
--inkblot-color-neutral-gray-400: #93928a; /** Placeholder text, muted */
|
|
17
|
+
--inkblot-color-neutral-gray-500: #6b6a63; /** Secondary text */
|
|
18
|
+
--inkblot-color-neutral-gray-600: #4d4c47; /** Emphasized secondary */
|
|
19
|
+
--inkblot-color-neutral-gray-700: #3a3935; /** Strong text */
|
|
20
|
+
--inkblot-color-neutral-gray-800: #2d2c28; /** Deep warm dark */
|
|
21
|
+
--inkblot-color-neutral-gray-900: #1d1c19; /** Primary text — deep slate, never pure black */
|
|
22
|
+
--inkblot-color-neutral-gray-950: #0f0e0c; /** Deepest warm black */
|
|
23
|
+
--inkblot-color-accent-citron-50: #fdfbf3; /** Barely there citron wash */
|
|
24
|
+
--inkblot-color-accent-citron-100: #faf4df; /** Soft cream tint */
|
|
25
|
+
--inkblot-color-accent-citron-200: #f3e6b8; /** Warm wheat */
|
|
26
|
+
--inkblot-color-accent-citron-300: #e8d38a; /** Light honey */
|
|
27
|
+
--inkblot-color-accent-citron-400: #d9bc58; /** Citrus glow */
|
|
28
|
+
--inkblot-color-accent-citron-500: #c4a030; /** Citron primary — the brand tone */
|
|
29
|
+
--inkblot-color-accent-citron-600: #a38427; /** Deep citron, hover state */
|
|
30
|
+
--inkblot-color-accent-citron-700: #7f671f; /** Rich amber */
|
|
31
|
+
--inkblot-color-accent-citron-800: #5c4a18; /** Dark citron */
|
|
32
|
+
--inkblot-color-accent-citron-900: #3d3111; /** Deepest citron */
|
|
33
|
+
--inkblot-color-semantic-success-light: #3d9e50; /** Warm success green */
|
|
34
|
+
--inkblot-color-semantic-success-main: #358c46; /** Primary success */
|
|
35
|
+
--inkblot-color-semantic-success-dark: #2a7538; /** Success hover */
|
|
36
|
+
--inkblot-color-semantic-warning-light: #e0a020; /** Warm amber warning */
|
|
37
|
+
--inkblot-color-semantic-warning-main: #c48c1a; /** Primary warning — distinct from citron by saturation */
|
|
38
|
+
--inkblot-color-semantic-warning-dark: #a67515; /** Warning hover */
|
|
39
|
+
--inkblot-color-semantic-error-light: #d14940; /** Warm red */
|
|
40
|
+
--inkblot-color-semantic-error-main: #be3e35; /** Primary error */
|
|
41
|
+
--inkblot-color-semantic-error-dark: #a3352d; /** Error hover */
|
|
42
|
+
--inkblot-color-semantic-info-light: #6ba3c2; /** Muted warm blue */
|
|
43
|
+
--inkblot-color-semantic-info-main: #5790ad; /** Primary info — desaturated, warm */
|
|
44
|
+
--inkblot-color-semantic-info-dark: #497a94; /** Info hover */
|
|
45
|
+
--inkblot-duration-instant: 0ms; /** No animation */
|
|
46
|
+
--inkblot-duration-fast: 120ms; /** Micro-interactions, hovers — fast enough to feel physical */
|
|
47
|
+
--inkblot-duration-normal: 200ms; /** Standard transitions */
|
|
48
|
+
--inkblot-duration-slow: 320ms; /** Complex transitions, enter/exit */
|
|
49
|
+
--inkblot-duration-slower: 500ms; /** Page-level transitions, long reveals */
|
|
50
|
+
--inkblot-easing-default: cubic-bezier(0.25, 0.1, 0.25, 1); /** Standard ease — natural deceleration */
|
|
51
|
+
--inkblot-easing-in: cubic-bezier(0.32, 0, 0.67, 0); /** Ease in — for exits, things leaving */
|
|
52
|
+
--inkblot-easing-out: cubic-bezier(0.33, 1, 0.68, 1); /** Ease out — for entrances, things arriving */
|
|
53
|
+
--inkblot-easing-in-out: cubic-bezier(0.65, 0, 0.35, 1); /** Ease in-out — for position changes, transforms */
|
|
54
|
+
--inkblot-easing-expressive: cubic-bezier(0.22, 1, 0.36, 1); /** Expressive ease-out — smooth, confident arrival. Replaces bounce. */
|
|
55
|
+
--inkblot-grid-columns-mobile: 4rem; /** 4-column grid for < 640px */
|
|
56
|
+
--inkblot-grid-columns-tablet: 8rem; /** 8-column grid for 640–1023px */
|
|
57
|
+
--inkblot-grid-columns-desktop: 12rem; /** 12-column grid for 1024–1535px */
|
|
58
|
+
--inkblot-grid-columns-wide: 16rem; /** 16-column grid for 1536px+ */
|
|
59
|
+
--inkblot-grid-columns-max: 24rem; /** 24-column grid for complex dashboards */
|
|
60
|
+
--inkblot-grid-gutter-sm: 0.5rem; /** 8px - compact mobile gutter */
|
|
61
|
+
--inkblot-grid-gutter-md: 1rem; /** 16px - standard gutter */
|
|
62
|
+
--inkblot-grid-gutter-lg: 1.5rem; /** 24px - spacious desktop gutter */
|
|
63
|
+
--inkblot-grid-gutter-xl: 2rem; /** 32px - wide layout gutter */
|
|
64
|
+
--inkblot-grid-margin-mobile: 1rem; /** 16px page margin on mobile */
|
|
65
|
+
--inkblot-grid-margin-tablet: 2rem; /** 32px page margin on tablet */
|
|
66
|
+
--inkblot-grid-margin-desktop: 4rem; /** 64px page margin on desktop */
|
|
67
|
+
--inkblot-grid-margin-wide: auto; /** Auto-center on wide screens */
|
|
68
|
+
--inkblot-grid-max-width-content: 768px; /** Max width for readable content */
|
|
69
|
+
--inkblot-grid-max-width-container: 1200px; /** Max width for standard layouts */
|
|
70
|
+
--inkblot-grid-max-width-wide: 1440px; /** Max width for wide layouts */
|
|
71
|
+
--inkblot-grid-max-width-full: 1920px; /** Max width for full-bleed */
|
|
72
|
+
--inkblot-radius-none: 0; /** No rounding */
|
|
73
|
+
--inkblot-radius-sm: 6px; /** Subtle rounding, chips */
|
|
74
|
+
--inkblot-radius-md: 10px; /** Inputs, small cards */
|
|
75
|
+
--inkblot-radius-lg: 14px; /** Buttons, interactive elements */
|
|
76
|
+
--inkblot-radius-xl: 18px; /** Cards, modals */
|
|
77
|
+
--inkblot-radius-2xl: 24px; /** Large surfaces, hero cards */
|
|
78
|
+
--inkblot-radius-full: 9999px; /** Pills, avatars, toggles */
|
|
79
|
+
--inkblot-border-width-none: 0; /** No border */
|
|
80
|
+
--inkblot-border-width-thin: 1px; /** Subtle dividers, the default */
|
|
81
|
+
--inkblot-border-width-medium: 2px; /** Focus rings */
|
|
82
|
+
--inkblot-border-width-thick: 3px; /** Strong emphasis, rarely used */
|
|
83
|
+
--inkblot-shadow-none: none; /** No shadow */
|
|
84
|
+
--inkblot-shadow-xs: 0 1px 2px 0 rgba(29, 28, 25, 0.04); /** Barely there lift */
|
|
85
|
+
--inkblot-shadow-sm: 0 2px 8px -1px rgba(29, 28, 25, 0.06), 0 1px 3px -1px rgba(29, 28, 25, 0.04); /** Cards — soft, warm, diffused */
|
|
86
|
+
--inkblot-shadow-md: 0 4px 16px -2px rgba(29, 28, 25, 0.08), 0 2px 6px -2px rgba(29, 28, 25, 0.04); /** Elevated cards, dropdowns */
|
|
87
|
+
--inkblot-shadow-lg: 0 8px 24px -4px rgba(29, 28, 25, 0.10), 0 4px 10px -4px rgba(29, 28, 25, 0.04); /** Modals, popovers */
|
|
88
|
+
--inkblot-shadow-xl: 0 16px 40px -8px rgba(29, 28, 25, 0.12), 0 8px 16px -8px rgba(29, 28, 25, 0.04); /** Maximum elevation — ambient, not harsh */
|
|
89
|
+
--inkblot-opacity-disabled: 0.4; /** Disabled elements */
|
|
90
|
+
--inkblot-opacity-overlay: 0.45; /** Modal backdrops — not too heavy */
|
|
91
|
+
--inkblot-opacity-subtle: 0.6; /** Secondary content */
|
|
92
|
+
--inkblot-opacity-default: 1; /** Full opacity */
|
|
93
|
+
--inkblot-spacing-0: 0; /** No spacing */
|
|
94
|
+
--inkblot-spacing-1: 0.25rem; /** 4px */
|
|
95
|
+
--inkblot-spacing-2: 0.5rem; /** 8px */
|
|
96
|
+
--inkblot-spacing-3: 0.75rem; /** 12px */
|
|
97
|
+
--inkblot-spacing-4: 1rem; /** 16px */
|
|
98
|
+
--inkblot-spacing-5: 1.25rem; /** 20px */
|
|
99
|
+
--inkblot-spacing-6: 1.5rem; /** 24px */
|
|
100
|
+
--inkblot-spacing-8: 2rem; /** 32px */
|
|
101
|
+
--inkblot-spacing-10: 2.5rem; /** 40px */
|
|
102
|
+
--inkblot-spacing-12: 3rem; /** 48px */
|
|
103
|
+
--inkblot-spacing-16: 4rem; /** 64px */
|
|
104
|
+
--inkblot-spacing-20: 5rem; /** 80px */
|
|
105
|
+
--inkblot-spacing-24: 6rem; /** 96px */
|
|
106
|
+
--inkblot-spacing-32: 8rem; /** 128px */
|
|
107
|
+
--inkblot-size-icon-xs: 1rem; /** 16px icon */
|
|
108
|
+
--inkblot-size-icon-sm: 1.25rem; /** 20px icon */
|
|
109
|
+
--inkblot-size-icon-md: 1.5rem; /** 24px icon */
|
|
110
|
+
--inkblot-size-icon-lg: 2rem; /** 32px icon */
|
|
111
|
+
--inkblot-size-icon-xl: 2.5rem; /** 40px icon */
|
|
112
|
+
--inkblot-size-touch-target-min: 44px; /** Minimum touch target (WCAG) */
|
|
113
|
+
--inkblot-size-touch-target-comfortable: 48px; /** Comfortable touch target */
|
|
114
|
+
--inkblot-typography-font-family-sans: 'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; /** Primary UI font — humanist, modern, highly legible */
|
|
115
|
+
--inkblot-typography-font-family-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace; /** Code and data */
|
|
116
|
+
--inkblot-typography-font-family-display: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; /** Headlines — same family, optical size variant */
|
|
117
|
+
--inkblot-typography-font-size-xs: 0.75rem; /** 12px — captions, meta */
|
|
118
|
+
--inkblot-typography-font-size-sm: 0.8125rem; /** 13px — secondary text */
|
|
119
|
+
--inkblot-typography-font-size-base: 0.9375rem; /** 15px — body text, slightly refined from 16 */
|
|
120
|
+
--inkblot-typography-font-size-md: 1.0625rem; /** 17px — emphasized body */
|
|
121
|
+
--inkblot-typography-font-size-lg: 1.25rem; /** 20px — card titles, subheadings */
|
|
122
|
+
--inkblot-typography-font-size-xl: 1.5rem; /** 24px — section titles */
|
|
123
|
+
--inkblot-typography-font-size-2xl: 1.75rem; /** 28px — page titles */
|
|
124
|
+
--inkblot-typography-font-size-3xl: 2.125rem; /** 34px — hero — composed, not shouting */
|
|
125
|
+
--inkblot-typography-font-size-4xl: 2.75rem; /** 44px — display, rarely used */
|
|
126
|
+
--inkblot-typography-font-size-5xl: 3.25rem; /** 52px — maximum display */
|
|
127
|
+
--inkblot-typography-font-weight-regular: 400; /** Body text */
|
|
128
|
+
--inkblot-typography-font-weight-medium: 500; /** Emphasis, labels, card titles */
|
|
129
|
+
--inkblot-typography-font-weight-semibold: 600; /** Headings, buttons */
|
|
130
|
+
--inkblot-typography-font-weight-bold: 700; /** Strong emphasis, sparingly */
|
|
131
|
+
--inkblot-typography-line-height-tight: 1.2; /** Headlines */
|
|
132
|
+
--inkblot-typography-line-height-snug: 1.375; /** Subheadings */
|
|
133
|
+
--inkblot-typography-line-height-normal: 1.5; /** Body text */
|
|
134
|
+
--inkblot-typography-line-height-relaxed: 1.65; /** Long-form, generous breathing room */
|
|
135
|
+
--inkblot-typography-line-height-loose: 1.8; /** Very spacious */
|
|
136
|
+
--inkblot-typography-letter-spacing-tighter: -0.04em; /** Large headlines */
|
|
137
|
+
--inkblot-typography-letter-spacing-tight: -0.02em; /** Headings */
|
|
138
|
+
--inkblot-typography-letter-spacing-normal: 0; /** Body */
|
|
139
|
+
--inkblot-typography-letter-spacing-wide: 0.02em; /** Labels */
|
|
140
|
+
--inkblot-typography-letter-spacing-wider: 0.06em; /** Uppercase meta */
|
|
141
|
+
--inkblot-z-index-hide: -1; /** Hidden below base layer */
|
|
142
|
+
--inkblot-z-index-base: 0; /** Default document flow */
|
|
143
|
+
--inkblot-z-index-raised: 1; /** Slightly above base (cards on hover) */
|
|
144
|
+
--inkblot-z-index-dropdown: 10; /** Dropdowns, select menus */
|
|
145
|
+
--inkblot-z-index-sticky: 20; /** Sticky headers, nav bars */
|
|
146
|
+
--inkblot-z-index-overlay: 30; /** Backdrop overlays */
|
|
147
|
+
--inkblot-z-index-modal: 40; /** Modals, dialogs, sheets */
|
|
148
|
+
--inkblot-z-index-popover: 50; /** Popovers, tooltips */
|
|
149
|
+
--inkblot-z-index-toast: 60; /** Toast notifications */
|
|
150
|
+
--inkblot-z-index-max: 9999; /** Emergency override (avoid) */
|
|
151
|
+
--inkblot-dark-color-background-primary: #12110e; /** Deep warm black, not pure black */
|
|
152
|
+
--inkblot-dark-color-background-secondary: #1d1c18; /** Elevated warm surface */
|
|
153
|
+
--inkblot-dark-color-background-tertiary: #2a2924; /** Grouped content, inset */
|
|
154
|
+
--inkblot-dark-color-background-inverse: #fafaf7; /** Inverted to warm off-white */
|
|
155
|
+
--inkblot-dark-color-text-primary: #f5f4f0; /** Warm off-white text */
|
|
156
|
+
--inkblot-dark-color-text-secondary: #93928a; /** Warm muted text */
|
|
157
|
+
--inkblot-dark-color-text-tertiary: #6b6a63; /** Placeholder, hints */
|
|
158
|
+
--inkblot-dark-color-text-inverse: #1d1c19; /** Dark text on light */
|
|
159
|
+
--inkblot-dark-color-text-link: #d9bc58; /** Citron 400 — bright enough for dark bg */
|
|
160
|
+
--inkblot-dark-color-text-link-hover: #e8d38a; /** Citron 300 — lighter on hover */
|
|
161
|
+
--inkblot-dark-color-border-default: #38372f; /** Warm subtle border */
|
|
162
|
+
--inkblot-dark-color-border-strong: #4d4c44; /** Emphasized warm border */
|
|
163
|
+
--inkblot-dark-color-border-focus: #d9bc58; /** Focus ring — bright citron */
|
|
164
|
+
--inkblot-dark-color-interactive-primary: #d9bc58; /** Citron 400 — lighter for dark mode contrast */
|
|
165
|
+
--inkblot-dark-color-interactive-primary-hover: #e8d38a; /** Citron 300 — warm glow on hover */
|
|
166
|
+
--inkblot-dark-color-interactive-primary-active: #c4a030; /** Citron 500 — anchor on press */
|
|
167
|
+
--inkblot-dark-color-interactive-secondary: #2a2924; /** Warm dark secondary */
|
|
168
|
+
--inkblot-dark-color-interactive-secondary-hover: #38372f; /** Warm dark hover */
|
|
169
|
+
--inkblot-dark-color-status-success: #4cb864; /** Bright warm green on dark */
|
|
170
|
+
--inkblot-dark-color-status-warning: #e0a020; /** Warm amber on dark */
|
|
171
|
+
--inkblot-dark-color-status-error: #e05a52; /** Warm red on dark */
|
|
172
|
+
--inkblot-dark-color-status-info: #7ab8d6; /** Soft warm blue on dark */
|
|
173
|
+
--inkblot-semantic-color-background-primary: var(--inkblot-color-neutral-gray-50); /** Body background — warm off-white with barely perceptible beige */
|
|
174
|
+
--inkblot-semantic-color-background-secondary: var(--inkblot-color-neutral-white); /** Elevated surfaces — clean white floating above base */
|
|
175
|
+
--inkblot-semantic-color-background-tertiary: var(--inkblot-color-neutral-gray-100); /** Grouped content, inset areas */
|
|
176
|
+
--inkblot-semantic-color-background-inverse: var(--inkblot-color-neutral-gray-900); /** Inverted surfaces */
|
|
177
|
+
--inkblot-semantic-color-text-primary: var(--inkblot-color-neutral-gray-900); /** Primary text — deep warm slate, never pure black */
|
|
178
|
+
--inkblot-semantic-color-text-secondary: var(--inkblot-color-neutral-gray-500); /** Secondary text */
|
|
179
|
+
--inkblot-semantic-color-text-tertiary: var(--inkblot-color-neutral-gray-400); /** Placeholder, hints, captions */
|
|
180
|
+
--inkblot-semantic-color-text-inverse: var(--inkblot-color-neutral-white); /** Text on dark surfaces */
|
|
181
|
+
--inkblot-semantic-color-text-link: var(--inkblot-color-accent-citron-600); /** Links — deep citron for readability */
|
|
182
|
+
--inkblot-semantic-color-text-link-hover: var(--inkblot-color-accent-citron-700); /** Link hover */
|
|
183
|
+
--inkblot-semantic-color-border-default: var(--inkblot-color-neutral-gray-200); /** Subtle warm dividers */
|
|
184
|
+
--inkblot-semantic-color-border-strong: var(--inkblot-color-neutral-gray-300); /** Emphasized borders */
|
|
185
|
+
--inkblot-semantic-color-border-focus: var(--inkblot-color-accent-citron-500); /** Focus ring — citron accent */
|
|
186
|
+
--inkblot-semantic-color-interactive-primary: var(--inkblot-color-accent-citron-500); /** Primary CTA — confident citron */
|
|
187
|
+
--inkblot-semantic-color-interactive-primary-hover: var(--inkblot-color-accent-citron-600); /** Primary hover — deeper, subtle shift */
|
|
188
|
+
--inkblot-semantic-color-interactive-primary-active: var(--inkblot-color-accent-citron-700); /** Primary pressed */
|
|
189
|
+
--inkblot-semantic-color-interactive-secondary: var(--inkblot-color-neutral-gray-100); /** Secondary surfaces with subtle depth */
|
|
190
|
+
--inkblot-semantic-color-interactive-secondary-hover: var(--inkblot-color-neutral-gray-200); /** Secondary hover */
|
|
191
|
+
--inkblot-semantic-color-status-success: var(--inkblot-color-semantic-success-main); /** Success state */
|
|
192
|
+
--inkblot-semantic-color-status-warning: var(--inkblot-color-semantic-warning-main); /** Warning state */
|
|
193
|
+
--inkblot-semantic-color-status-error: var(--inkblot-color-semantic-error-main); /** Error state */
|
|
194
|
+
--inkblot-semantic-color-status-info: var(--inkblot-color-semantic-info-main); /** Info state */
|
|
195
|
+
--inkblot-semantic-typography-heading-1: var(--inkblot-typography-font-weight-semibold) var(--inkblot-typography-font-size-3xl)/var(--inkblot-typography-line-height-tight) var(--inkblot-typography-font-family-display); /** Page title — composed, not dramatic */
|
|
196
|
+
--inkblot-semantic-typography-heading-2: var(--inkblot-typography-font-weight-semibold) var(--inkblot-typography-font-size-2xl)/var(--inkblot-typography-line-height-tight) var(--inkblot-typography-font-family-display); /** Section title */
|
|
197
|
+
--inkblot-semantic-typography-heading-3: var(--inkblot-typography-font-weight-medium) var(--inkblot-typography-font-size-xl)/var(--inkblot-typography-line-height-snug) var(--inkblot-typography-font-family-sans); /** Subsection title */
|
|
198
|
+
--inkblot-semantic-typography-heading-4: var(--inkblot-typography-font-weight-medium) var(--inkblot-typography-font-size-lg)/var(--inkblot-typography-line-height-snug) var(--inkblot-typography-font-family-sans); /** Card title */
|
|
199
|
+
--inkblot-semantic-typography-body-default: var(--inkblot-typography-font-weight-regular) var(--inkblot-typography-font-size-base)/var(--inkblot-typography-line-height-normal) var(--inkblot-typography-font-family-sans); /** Body text */
|
|
200
|
+
--inkblot-semantic-typography-body-small: var(--inkblot-typography-font-weight-regular) var(--inkblot-typography-font-size-sm)/var(--inkblot-typography-line-height-normal) var(--inkblot-typography-font-family-sans); /** Small body, captions */
|
|
201
|
+
--inkblot-semantic-typography-body-large: var(--inkblot-typography-font-weight-regular) var(--inkblot-typography-font-size-md)/var(--inkblot-typography-line-height-relaxed) var(--inkblot-typography-font-family-sans); /** Emphasized body */
|
|
202
|
+
--inkblot-semantic-typography-label-default: var(--inkblot-typography-font-weight-medium) var(--inkblot-typography-font-size-xs)/var(--inkblot-typography-line-height-normal) var(--inkblot-typography-font-family-sans); /** Form labels, badges */
|
|
203
|
+
}
|