@fpkit/acss 3.9.0 → 4.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.
Files changed (96) hide show
  1. package/libs/components/alert/alert.css +1 -1
  2. package/libs/components/alert/alert.css.map +1 -1
  3. package/libs/components/alert/alert.min.css +2 -2
  4. package/libs/components/badge/badge.css +1 -1
  5. package/libs/components/badge/badge.css.map +1 -1
  6. package/libs/components/badge/badge.min.css +2 -2
  7. package/libs/components/buttons/button.css +1 -1
  8. package/libs/components/buttons/button.css.map +1 -1
  9. package/libs/components/buttons/button.min.css +2 -2
  10. package/libs/components/cards/card.css +1 -1
  11. package/libs/components/cards/card.css.map +1 -1
  12. package/libs/components/cards/card.min.css +2 -2
  13. package/libs/components/details/details.css +1 -1
  14. package/libs/components/details/details.css.map +1 -1
  15. package/libs/components/details/details.min.css +2 -2
  16. package/libs/components/dialog/dialog.css +1 -1
  17. package/libs/components/dialog/dialog.css.map +1 -1
  18. package/libs/components/dialog/dialog.min.css +2 -2
  19. package/libs/components/form/checkbox.css +1 -1
  20. package/libs/components/form/checkbox.css.map +1 -1
  21. package/libs/components/form/checkbox.min.css +2 -2
  22. package/libs/components/form/form.css +1 -1
  23. package/libs/components/form/form.css.map +1 -1
  24. package/libs/components/form/form.min.css +2 -2
  25. package/libs/components/icons/icon.d.cts +1 -1
  26. package/libs/components/icons/icon.d.ts +1 -1
  27. package/libs/components/link/link.css +1 -1
  28. package/libs/components/link/link.css.map +1 -1
  29. package/libs/components/link/link.min.css +2 -2
  30. package/libs/components/nav/nav.css +1 -1
  31. package/libs/components/nav/nav.css.map +1 -1
  32. package/libs/components/nav/nav.min.css +2 -2
  33. package/libs/components/progress/progress.css +1 -1
  34. package/libs/components/progress/progress.css.map +1 -1
  35. package/libs/components/progress/progress.min.css +2 -2
  36. package/libs/components/tag/tag.css +1 -1
  37. package/libs/components/tag/tag.css.map +1 -1
  38. package/libs/components/tag/tag.min.css +2 -2
  39. package/libs/components/text-to-speech/text-to-speech.css +1 -1
  40. package/libs/components/text-to-speech/text-to-speech.css.map +1 -1
  41. package/libs/components/text-to-speech/text-to-speech.min.css +2 -2
  42. package/libs/components/title/title.css +1 -1
  43. package/libs/components/title/title.css.map +1 -1
  44. package/libs/components/title/title.min.css +2 -2
  45. package/libs/{icons-df8e744f.d.ts → icons-952d9bc5.d.ts} +32 -32
  46. package/libs/icons.d.cts +1 -1
  47. package/libs/icons.d.ts +1 -1
  48. package/libs/index.css +1 -1
  49. package/libs/index.css.map +1 -1
  50. package/libs/index.d.cts +2 -2
  51. package/libs/index.d.ts +2 -2
  52. package/package.json +2 -2
  53. package/src/components/alert/alert.scss +22 -22
  54. package/src/components/badge/badge.scss +1 -1
  55. package/src/components/buttons/button.scss +8 -8
  56. package/src/components/cards/card.scss +7 -7
  57. package/src/components/details/details.scss +2 -3
  58. package/src/components/dialog/dialog.scss +4 -4
  59. package/src/components/form/checkbox.scss +11 -11
  60. package/src/components/form/form.scss +19 -10
  61. package/src/components/link/link.scss +1 -1
  62. package/src/components/nav/nav.scss +1 -1
  63. package/src/components/progress/progress.scss +2 -2
  64. package/src/components/tag/tag.scss +7 -7
  65. package/src/components/text-to-speech/text-to-speech.scss +1 -1
  66. package/src/components/title/title.scss +4 -4
  67. package/src/index.scss +15 -1
  68. package/src/sass/_globals.scss +3 -3
  69. package/src/sass/styles/_colors.scss +16 -0
  70. package/src/sass/tokens/_color-primitives.scss +112 -0
  71. package/src/sass/tokens/_color-semantic.scss +144 -0
  72. package/src/sass/tokens/_index.scss +15 -0
  73. package/src/sass/utilities/_color-bg.scss +62 -0
  74. package/src/sass/utilities/_color-border.scss +61 -0
  75. package/src/sass/utilities/_color-text.scss +58 -0
  76. package/src/sass/utilities/_index.scss +17 -0
  77. package/src/sass/utilities/color-utilities.stories.tsx +608 -0
  78. package/src/styles/alert/alert.css +19 -19
  79. package/src/styles/badge/badge.css +1 -1
  80. package/src/styles/buttons/button.css +8 -8
  81. package/src/styles/cards/card.css +7 -7
  82. package/src/styles/details/details.css +2 -3
  83. package/src/styles/details/details.css.map +1 -1
  84. package/src/styles/dialog/dialog.css +4 -4
  85. package/src/styles/form/checkbox.css +11 -11
  86. package/src/styles/form/form.css +26 -21
  87. package/src/styles/form/form.css.map +1 -1
  88. package/src/styles/index.css +516 -82
  89. package/src/styles/index.css.map +1 -1
  90. package/src/styles/link/link.css +1 -1
  91. package/src/styles/nav/nav.css +1 -1
  92. package/src/styles/progress/progress.css +2 -2
  93. package/src/styles/tag/tag.css +7 -7
  94. package/src/styles/text-to-speech/text-to-speech.css +1 -1
  95. package/src/styles/title/title.css +4 -4
  96. package/src/styles/title/title.css.map +1 -1
@@ -1,4 +1,236 @@
1
1
  @charset "UTF-8";
2
+ /**
3
+ * Color Tokens - Main Export
4
+ *
5
+ * This file exports the complete color token system.
6
+ * Import order matters: primitives must load before semantic tokens.
7
+ *
8
+ * Usage in main index.scss:
9
+ * @use "./sass/tokens";
10
+ */
11
+ /* Tier 1: Primitive color scales (foundation) */
12
+ /**
13
+ * Color Primitives - Foundation Layer (Tier 1)
14
+ *
15
+ * Raw color values that form the foundation of the design system.
16
+ * All colors are WCAG AA compliant (4.5:1 for text, 3:1 for UI components).
17
+ *
18
+ * Pattern: --color-{hue}-{scale}
19
+ * Scale: 50 (lightest) to 900 (darkest)
20
+ *
21
+ * Industry-standard palette based on accessible color scales.
22
+ * No rebeccapurple or purple colors per project requirements.
23
+ */
24
+ :root {
25
+ /* ========================================
26
+ Neutral Scale (Grays)
27
+ Purpose: Text, borders, surfaces, backgrounds
28
+ ======================================== */
29
+ --color-neutral-0: #ffffff; /* Pure white - Surfaces, text inverse */
30
+ --color-neutral-50: #fafafa; /* Off-white - Secondary surfaces */
31
+ --color-neutral-100: #f5f5f5; /* Light gray - Disabled backgrounds, tertiary surfaces */
32
+ --color-neutral-200: #e5e5e5; /* Border subtle - Light borders, dividers */
33
+ --color-neutral-300: #d4d4d4; /* Border default - Standard borders */
34
+ --color-neutral-400: #a3a3a3; /* Border interactive - Hover borders, interactive elements */
35
+ --color-neutral-500: #737373; /* Text disabled - Disabled text, placeholders */
36
+ --color-neutral-600: #525252; /* Text tertiary - Less emphasized text */
37
+ --color-neutral-700: #404040; /* Text secondary - Secondary text */
38
+ --color-neutral-800: #262626; /* Text primary - Body text, primary content */
39
+ --color-neutral-900: #171717; /* Text emphasis - Headings, emphasized text */
40
+ /* ========================================
41
+ Blue Scale (Primary/Info)
42
+ Purpose: Primary brand, focus states, links, info messages
43
+ WCAG: 4.5:1+ contrast ratios verified
44
+ ======================================== */
45
+ --color-blue-100: #dbeafe; /* Info background light - Subtle info backgrounds */
46
+ --color-blue-200: #bfdbfe; /* Info background - Info alert backgrounds */
47
+ --color-blue-300: #93c5fd; /* Info border light - Light info borders */
48
+ --color-blue-400: #60a5fa; /* Info hover - Hover states for info elements */
49
+ --color-blue-500: #3b82f6; /* Info default - Standard info color */
50
+ --color-blue-600: #2563eb; /* Primary default - Primary brand color */
51
+ --color-blue-700: #1d4ed8; /* Primary hover - Primary button hover */
52
+ --color-blue-800: #1e40af; /* Primary active - Primary button active/pressed */
53
+ --color-blue-900: #1e3a8a; /* Info text - Dark text on info backgrounds (WCAG AAA: 12.6:1) */
54
+ /* ========================================
55
+ Green Scale (Success)
56
+ Purpose: Success states, positive feedback, valid inputs
57
+ WCAG: 4.5:1+ contrast ratios verified
58
+ ======================================== */
59
+ --color-green-100: #dcfce7; /* Success background light - Subtle success backgrounds */
60
+ --color-green-200: #bbf7d0; /* Success background - Success alert backgrounds */
61
+ --color-green-300: #86efac; /* Success border light - Light success borders */
62
+ --color-green-400: #4ade80; /* Success hover - Hover states for success elements */
63
+ --color-green-500: #22c55e; /* Success default - Standard success color */
64
+ --color-green-600: #16a34a; /* Success border - Success borders, checkmarks */
65
+ --color-green-700: #15803d; /* Success dark - Dark success emphasis */
66
+ --color-green-800: #166534; /* Success text - Dark text on success backgrounds (WCAG AAA: 8.3:1) */
67
+ --color-green-900: #14532d; /* Success emphasis - Highest contrast success text */
68
+ /* ========================================
69
+ Red Scale (Error/Danger)
70
+ Purpose: Errors, destructive actions, invalid inputs, alerts
71
+ WCAG: 4.5:1+ contrast ratios verified
72
+ ======================================== */
73
+ --color-red-100: #fee2e2; /* Error background light - Subtle error backgrounds */
74
+ --color-red-200: #fecaca; /* Error background - Error alert backgrounds */
75
+ --color-red-300: #fca5a5; /* Error border light - Light error borders */
76
+ --color-red-400: #f87171; /* Error hover - Hover states for error elements */
77
+ --color-red-500: #ef4444; /* Error default - Standard error color */
78
+ --color-red-600: #dc2626; /* Error border - Error borders, icons */
79
+ --color-red-700: #b91c1c; /* Error dark - Dark error emphasis */
80
+ --color-red-800: #991b1b; /* Error text - Dark text on error backgrounds (WCAG AAA: 10.3:1) */
81
+ --color-red-900: #7f1d1d; /* Error emphasis - Highest contrast error text */
82
+ /* ========================================
83
+ Amber Scale (Warning)
84
+ Purpose: Warnings, cautions, pending states
85
+ WCAG: 4.5:1+ contrast ratios verified
86
+ ======================================== */
87
+ --color-amber-100: #fef3c7; /* Warning background light - Subtle warning backgrounds */
88
+ --color-amber-200: #fde68a; /* Warning background - Warning alert backgrounds */
89
+ --color-amber-300: #fcd34d; /* Warning border light - Light warning borders */
90
+ --color-amber-400: #fbbf24; /* Warning hover - Hover states for warning elements */
91
+ --color-amber-500: #f59e0b; /* Warning default - Standard warning color */
92
+ --color-amber-600: #d97706; /* Warning border - Warning borders, icons */
93
+ --color-amber-700: #b45309; /* Warning dark - Dark warning emphasis */
94
+ --color-amber-800: #92400e; /* Warning text - Dark text on warning backgrounds (WCAG AAA: 9.8:1) */
95
+ --color-amber-900: #78350f; /* Warning emphasis - Highest contrast warning text */
96
+ /* ========================================
97
+ Cyan Scale (Info Alternative)
98
+ Purpose: Alternative info states, highlights, accents
99
+ WCAG: 4.5:1+ contrast ratios verified
100
+ Note: Used instead of purple/rebeccapurple per requirements
101
+ ======================================== */
102
+ --color-cyan-100: #cffafe; /* Info alt background light - Subtle cyan backgrounds */
103
+ --color-cyan-200: #a5f3fc; /* Info alt background - Cyan alert backgrounds */
104
+ --color-cyan-300: #67e8f9; /* Info alt border light - Light cyan borders */
105
+ --color-cyan-400: #22d3ee; /* Info alt hover - Hover states for cyan elements */
106
+ --color-cyan-500: #06b6d4; /* Info alt default - Standard cyan color */
107
+ --color-cyan-600: #0891b2; /* Info alt border - Cyan borders, icons */
108
+ --color-cyan-700: #0e7490; /* Info alt dark - Dark cyan emphasis */
109
+ --color-cyan-800: #155e75; /* Info alt text - Dark text on cyan backgrounds (WCAG AAA: 7.2:1) */
110
+ --color-cyan-900: #164e63; /* Info alt emphasis - Highest contrast cyan text */
111
+ }
112
+
113
+ /* Tier 2: Semantic color mappings (purpose-based) */
114
+ /**
115
+ * Color Semantic Tokens - Purpose Layer (Tier 2)
116
+ *
117
+ * Intent-based color mappings for common use cases.
118
+ * All semantic tokens reference primitive tokens (Tier 1).
119
+ *
120
+ * Pattern: --color-{purpose}-{variant}
121
+ *
122
+ * This layer provides meaning to colors and enables easy theming.
123
+ * To theme the application, override these semantic tokens.
124
+ */
125
+ :root {
126
+ /* ========================================
127
+ Brand Colors
128
+ Purpose: Primary and secondary brand identity
129
+ ======================================== */
130
+ /* Primary brand color - Main CTAs, primary buttons, primary links */
131
+ --color-primary: var(--color-blue-600); /* #2563eb */
132
+ --color-primary-hover: var(--color-blue-700); /* #1d4ed8 */
133
+ --color-primary-active: var(--color-blue-800); /* #1e40af */
134
+ --color-primary-light: var(--color-blue-100); /* #dbeafe */
135
+ /* Secondary brand color - Secondary actions, alternative emphasis */
136
+ --color-secondary: var(--color-neutral-700); /* #404040 */
137
+ --color-secondary-hover: var(--color-neutral-800); /* #262626 */
138
+ --color-secondary-light: var(--color-neutral-100); /* #f5f5f5 */
139
+ /* ========================================
140
+ State Colors - Success
141
+ Purpose: Positive feedback, valid inputs, confirmations
142
+ ======================================== */
143
+ --color-success: var(--color-green-600); /* #16a34a */
144
+ --color-success-bg: var(--color-green-100); /* #dcfce7 */
145
+ --color-success-border: var(--color-green-600); /* #16a34a */
146
+ --color-success-text: var(--color-green-800); /* #166534 */
147
+ --color-success-hover: var(--color-green-700); /* #15803d */
148
+ /* ========================================
149
+ State Colors - Error
150
+ Purpose: Errors, validation failures, destructive actions
151
+ ======================================== */
152
+ --color-error: var(--color-red-600); /* #dc2626 */
153
+ --color-error-bg: var(--color-red-100); /* #fee2e2 */
154
+ --color-error-border: var(--color-red-600); /* #dc2626 */
155
+ --color-error-text: var(--color-red-800); /* #991b1b */
156
+ --color-error-hover: var(--color-red-700); /* #b91c1c */
157
+ /* ========================================
158
+ State Colors - Warning
159
+ Purpose: Warnings, cautions, pending actions
160
+ ======================================== */
161
+ --color-warning: var(--color-amber-600); /* #d97706 */
162
+ --color-warning-bg: var(--color-amber-100); /* #fef3c7 */
163
+ --color-warning-border: var(--color-amber-600); /* #d97706 */
164
+ --color-warning-text: var(--color-amber-800); /* #92400e */
165
+ --color-warning-hover: var(--color-amber-700); /* #b45309 */
166
+ /* ========================================
167
+ State Colors - Info
168
+ Purpose: Informational messages, tips, notices
169
+ ======================================== */
170
+ --color-info: var(--color-blue-500); /* #3b82f6 */
171
+ --color-info-bg: var(--color-blue-100); /* #dbeafe */
172
+ --color-info-border: var(--color-blue-500); /* #3b82f6 */
173
+ --color-info-text: var(--color-blue-900); /* #1e3a8a */
174
+ --color-info-hover: var(--color-blue-600); /* #2563eb */
175
+ /* ========================================
176
+ UI Surface Colors
177
+ Purpose: Backgrounds, containers, cards, modals
178
+ ======================================== */
179
+ --color-surface: var(--color-neutral-0); /* #ffffff - Primary background */
180
+ --color-surface-secondary: var(--color-neutral-50); /* #fafafa - Secondary background */
181
+ --color-surface-tertiary: var(--color-neutral-100); /* #f5f5f5 - Tertiary background */
182
+ --color-surface-elevated: var(--color-neutral-0); /* #ffffff - Cards, modals, raised elements */
183
+ --color-surface-overlay: rgba(0, 0, 0, 0.5); /* Modal overlay, backdrop */
184
+ /* ========================================
185
+ Border Colors
186
+ Purpose: Borders, dividers, separators, outlines
187
+ ======================================== */
188
+ --color-border: var(--color-neutral-300); /* #d4d4d4 - Default borders */
189
+ --color-border-subtle: var(--color-neutral-200); /* #e5e5e5 - Subtle borders, dividers */
190
+ --color-border-strong: var(--color-neutral-400); /* #a3a3a3 - Emphasized borders */
191
+ --color-border-interactive: var(--color-neutral-400); /* #a3a3a3 - Hover borders on inputs */
192
+ /* ========================================
193
+ Text Colors
194
+ Purpose: Body text, headings, labels, captions
195
+ ======================================== */
196
+ --color-text: var(--color-neutral-800); /* #262626 - Primary body text */
197
+ --color-text-secondary: var(--color-neutral-700); /* #404040 - Secondary text, labels */
198
+ --color-text-tertiary: var(--color-neutral-600); /* #525252 - Tertiary text, captions */
199
+ --color-text-disabled: var(--color-neutral-500); /* #737373 - Disabled text */
200
+ --color-text-inverse: var(--color-neutral-0); /* #ffffff - Text on dark backgrounds */
201
+ /* ========================================
202
+ Interactive States
203
+ Purpose: Focus, hover, active, disabled states
204
+ ======================================== */
205
+ --color-focus: var(--color-blue-600); /* #2563eb - Focus outlines (WCAG 3:1 contrast) */
206
+ --color-focus-ring: var(--color-blue-600); /* #2563eb - Focus rings on inputs */
207
+ --color-hover-overlay: rgba(0, 0, 0, 0.05); /* Subtle hover overlay on buttons */
208
+ --color-active-overlay: rgba(0, 0, 0, 0.1); /* Active/pressed overlay on buttons */
209
+ --color-disabled-bg: var(--color-neutral-100); /* #f5f5f5 - Disabled backgrounds */
210
+ --color-disabled-text: var(--color-neutral-500); /* #737373 - Disabled text */
211
+ /* ========================================
212
+ Link Colors
213
+ Purpose: Hyperlinks, navigation links
214
+ ======================================== */
215
+ --color-link: var(--color-blue-700); /* #1d4ed8 - Default link color */
216
+ --color-link-hover: var(--color-blue-800); /* #1e40af - Link hover state */
217
+ --color-link-visited: var(--color-blue-900); /* #1e3a8a - Visited link color */
218
+ --color-link-active: var(--color-blue-800); /* #1e40af - Link active/pressed state */
219
+ /* ========================================
220
+ Validation Colors
221
+ Purpose: Form validation, required fields
222
+ ======================================== */
223
+ --color-required: var(--color-red-600); /* #dc2626 - Required field indicators */
224
+ --color-valid: var(--color-green-600); /* #16a34a - Valid input indicators */
225
+ --color-invalid: var(--color-red-600); /* #dc2626 - Invalid input indicators */
226
+ /* ========================================
227
+ Skip Link & Accessibility
228
+ Purpose: Skip navigation, accessibility utilities
229
+ ======================================== */
230
+ --color-skip-link-bg: var(--color-neutral-100); /* #f5f5f5 - Skip link background */
231
+ --color-skip-link-text: var(--color-text); /* Inherits default text color */
232
+ }
233
+
2
234
  *,
3
235
  *::before,
4
236
  *::after {
@@ -311,7 +543,7 @@ body > a[href^="#"] {
311
543
  z-index: 100;
312
544
  transition: top 0.3s;
313
545
  border-radius: 0;
314
- background-color: var(--color-skip-link-bg, #f5f5f5);
546
+ background-color: var(--color-skip-link-bg, var(--color-neutral-100));
315
547
  }
316
548
  body > a[href^="#"]:focus {
317
549
  top: 0;
@@ -371,7 +603,7 @@ blockquote {
371
603
  --blockquote-padding: 1rem;
372
604
  --blockquote-border-width: 0.3125rem;
373
605
  --blockquote-border-style: solid;
374
- --blockquote-border-color: var(--color-border, #d3d3d3);
606
+ --blockquote-border-color: var(--color-border);
375
607
  padding: var(--blockquote-padding);
376
608
  border-left: var(--blockquote-border-width) var(--blockquote-border-style) var(--blockquote-border-color);
377
609
  }
@@ -394,7 +626,7 @@ h6 {
394
626
 
395
627
  hr {
396
628
  --hr-border-width: 0.0625rem;
397
- --hr-border-color: var(--color-border-subtle, #d3d3d3);
629
+ --hr-border-color: var(--color-border-subtle);
398
630
  --hr-margin-block: 1.5rem;
399
631
  --hr-border-style: solid;
400
632
  border: none;
@@ -424,6 +656,16 @@ h6:has(span:first-of-type) > span {
424
656
  --title-6: var(--h6);
425
657
  }
426
658
 
659
+ /**
660
+ * Utilities - Main Export
661
+ *
662
+ * This file exports all utility classes.
663
+ * Utilities are loaded after tokens and base styles, before components.
664
+ *
665
+ * Usage in main index.scss:
666
+ * @use "./sass/utilities";
667
+ */
668
+ /* Existing utilities */
427
669
  /**
428
670
  * Disabled State Utility Styles
429
671
  *
@@ -483,6 +725,179 @@ h6:has(span:first-of-type) > span {
483
725
  outline-color: var(--focus-color, currentColor);
484
726
  }
485
727
 
728
+ /* New color utilities (semantic only) */
729
+ /**
730
+ * Text Color Utilities
731
+ *
732
+ * Semantic text color utility classes for quick styling.
733
+ * All utilities reference semantic tokens (Tier 2), not primitives.
734
+ *
735
+ * Usage:
736
+ * <p class="text-primary">Primary text</p>
737
+ * <span class="text-error">Error message</span>
738
+ */
739
+ /* ========================================
740
+ Brand Text Colors
741
+ ======================================== */
742
+ .text-primary {
743
+ color: var(--color-primary);
744
+ }
745
+
746
+ .text-secondary {
747
+ color: var(--color-secondary);
748
+ }
749
+
750
+ /* ========================================
751
+ State Text Colors
752
+ ======================================== */
753
+ .text-success {
754
+ color: var(--color-success-text);
755
+ }
756
+
757
+ .text-error {
758
+ color: var(--color-error-text);
759
+ }
760
+
761
+ .text-warning {
762
+ color: var(--color-warning-text);
763
+ }
764
+
765
+ .text-info {
766
+ color: var(--color-info-text);
767
+ }
768
+
769
+ /* ========================================
770
+ Text Hierarchy Colors
771
+ ======================================== */
772
+ .text-muted {
773
+ color: var(--color-text-tertiary);
774
+ }
775
+
776
+ .text-disabled {
777
+ color: var(--color-text-disabled);
778
+ }
779
+
780
+ .text-inverse {
781
+ color: var(--color-text-inverse);
782
+ }
783
+
784
+ /**
785
+ * Background Color Utilities
786
+ *
787
+ * Semantic background color utility classes for quick styling.
788
+ * All utilities reference semantic tokens (Tier 2), not primitives.
789
+ *
790
+ * Usage:
791
+ * <div class="bg-primary">Primary background</div>
792
+ * <div class="bg-success">Success background</div>
793
+ */
794
+ /* ========================================
795
+ Brand Backgrounds
796
+ ======================================== */
797
+ .bg-primary {
798
+ background-color: var(--color-primary);
799
+ }
800
+
801
+ .bg-primary-light {
802
+ background-color: var(--color-primary-light);
803
+ }
804
+
805
+ .bg-secondary {
806
+ background-color: var(--color-secondary-light);
807
+ }
808
+
809
+ /* ========================================
810
+ State Backgrounds
811
+ ======================================== */
812
+ .bg-success {
813
+ background-color: var(--color-success-bg);
814
+ }
815
+
816
+ .bg-error {
817
+ background-color: var(--color-error-bg);
818
+ }
819
+
820
+ .bg-warning {
821
+ background-color: var(--color-warning-bg);
822
+ }
823
+
824
+ .bg-info {
825
+ background-color: var(--color-info-bg);
826
+ }
827
+
828
+ /* ========================================
829
+ Surface Backgrounds
830
+ ======================================== */
831
+ .bg-surface {
832
+ background-color: var(--color-surface);
833
+ }
834
+
835
+ .bg-surface-secondary {
836
+ background-color: var(--color-surface-secondary);
837
+ }
838
+
839
+ .bg-transparent {
840
+ background-color: transparent;
841
+ }
842
+
843
+ /**
844
+ * Border Color Utilities
845
+ *
846
+ * Semantic border color utility classes for quick styling.
847
+ * All utilities reference semantic tokens (Tier 2), not primitives.
848
+ *
849
+ * Note: These utilities only set border-color.
850
+ * You may need to set border-width and border-style separately.
851
+ *
852
+ * Usage:
853
+ * <div class="border-primary" style="border: 1px solid;">
854
+ * <div class="border-error" style="border-width: 2px; border-style: solid;">
855
+ */
856
+ /* ========================================
857
+ Brand Borders
858
+ ======================================== */
859
+ .border-primary {
860
+ border-color: var(--color-primary);
861
+ }
862
+
863
+ .border-secondary {
864
+ border-color: var(--color-secondary);
865
+ }
866
+
867
+ /* ========================================
868
+ State Borders
869
+ ======================================== */
870
+ .border-success {
871
+ border-color: var(--color-success-border);
872
+ }
873
+
874
+ .border-error {
875
+ border-color: var(--color-error-border);
876
+ }
877
+
878
+ .border-warning {
879
+ border-color: var(--color-warning-border);
880
+ }
881
+
882
+ .border-info {
883
+ border-color: var(--color-info-border);
884
+ }
885
+
886
+ /* ========================================
887
+ UI Borders
888
+ ======================================== */
889
+ .border-default {
890
+ border-color: var(--color-border);
891
+ }
892
+
893
+ .border-subtle {
894
+ border-color: var(--color-border-subtle);
895
+ }
896
+
897
+ .border-transparent {
898
+ border-color: transparent;
899
+ }
900
+
486
901
  button {
487
902
  --btn-size-xs: 0.6875rem;
488
903
  --btn-size-sm: 0.8125rem;
@@ -491,7 +906,7 @@ button {
491
906
  --btn-pill: 100rem;
492
907
  --btn-fs: var(--btn-size-md);
493
908
  --btn-height: calc(var(--btn-fs) * 2.25);
494
- --btn-bg: lightgray;
909
+ --btn-bg: var(--color-neutral-300);
495
910
  --btn-width: max-content;
496
911
  font-size: var(--btn-fs);
497
912
  font-weight: var(--btn-fw, 500);
@@ -516,12 +931,12 @@ button {
516
931
  line-height: 0cap;
517
932
  }
518
933
  button[type] {
519
- background-color: var(--btn-bg, var(--neutral-300));
934
+ background-color: var(--btn-bg, var(--color-neutral-300));
520
935
  --btn-border: solid var(--btn-sg);
521
936
  }
522
937
  button[type=submit], button[style*=submit] {
523
- --btn-bg: var(--primary-500, royal-blue);
524
- --btn-color: white;
938
+ --btn-bg: var(--color-primary);
939
+ --btn-color: var(--color-text-inverse);
525
940
  }
526
941
  button[disabled], button[aria-disabled=true] {
527
942
  cursor: var(--btn-cursor, not-allowed);
@@ -546,12 +961,12 @@ button:focus-visible {
546
961
  }
547
962
  button[type=reset] {
548
963
  --btn-bg: transparent;
549
- --btn-color: gray;
550
- --btn-border: gray thin solid;
964
+ --btn-color: var(--color-text-secondary);
965
+ --btn-border: var(--color-border) thin solid;
551
966
  }
552
967
  button[type=submit] {
553
- --btn-bg: var(--primary-700, blue);
554
- --btn-color: #fff;
968
+ --btn-bg: var(--color-primary);
969
+ --btn-color: var(--color-text-inverse);
555
970
  --btn-border: none;
556
971
  }
557
972
  button[data-fp-btn~=pill], button[data-btn~=pill], button[data-style~=pill] {
@@ -625,15 +1040,15 @@ p[role=note],
625
1040
  small > span,
626
1041
  [data-tag] {
627
1042
  /* Variant color tokens - WCAG AA compliant colors */
628
- --beta: #fbbf24; /* Amber: 6.94:1 contrast with black */
629
- --stable: #0f7c3e; /* Dark green: 4.56:1 contrast with white */
630
- --production: #1e3a8a; /* Dark blue: 8.59:1 contrast with white */
1043
+ --beta: var(--color-amber-400); /* Amber: 6.94:1 contrast with black */
1044
+ --stable: var(--color-green-700); /* Dark green: 4.56:1 contrast with white */
1045
+ --production: var(--color-blue-900); /* Dark blue: 8.59:1 contrast with white */
631
1046
  /* Tag component tokens */
632
1047
  --tag-padding-inline: 0.7rem; /* Horizontal padding (11.2px at 16px base) */
633
1048
  --tag-padding-block: 0.2rem; /* Vertical padding (3.2px at 16px base) */
634
1049
  --tag-fs: 0.8rem; /* Font size (12.8px at 16px base) */
635
1050
  --tag-radius: 99rem; /* Fully rounded pill shape */
636
- --tag-bg: lightgray; /* Default background color */
1051
+ --tag-bg: var(--color-neutral-300); /* Default background color */
637
1052
  --tag-fw: 500; /* Medium font weight */
638
1053
  --tag-color: currentColor; /* Default text color (inherits) */
639
1054
  --tag-display: inline-block; /* Display type */
@@ -677,7 +1092,7 @@ p[role=note][data-tag~=alpha],
677
1092
  [role=note][data-tag~=alpha],
678
1093
  small > span[data-tag~=alpha],
679
1094
  [data-tag][data-tag~=alpha] {
680
- --tag-color: #000000; /* Black: maximum contrast with amber background */
1095
+ --tag-color: var(--color-neutral-900); /* Black: maximum contrast with amber background */
681
1096
  --tag-bg: var(--beta);
682
1097
  /* Visual indicator beyond color - warning symbol */
683
1098
  }
@@ -694,7 +1109,7 @@ p[role=note][data-tag~=beta],
694
1109
  [role=note][data-tag~=beta],
695
1110
  small > span[data-tag~=beta],
696
1111
  [data-tag][data-tag~=beta] {
697
- --tag-color: #000000; /* Black: maximum contrast with amber background */
1112
+ --tag-color: var(--color-neutral-900); /* Black: maximum contrast with amber background */
698
1113
  --tag-bg: var(--beta);
699
1114
  /* Visual indicator beyond color - warning symbol */
700
1115
  }
@@ -711,7 +1126,7 @@ p[role=note][data-tag~=stable],
711
1126
  [role=note][data-tag~=stable],
712
1127
  small > span[data-tag~=stable],
713
1128
  [data-tag][data-tag~=stable] {
714
- --tag-color: #ffffff; /* White: 4.56:1 contrast with dark green */
1129
+ --tag-color: var(--color-text-inverse); /* White: 4.56:1 contrast with dark green */
715
1130
  --tag-bg: var(--stable);
716
1131
  /* Visual indicator beyond color - checkmark symbol */
717
1132
  }
@@ -806,20 +1221,20 @@ figure:has(img[alt]) > figcaption {
806
1221
 
807
1222
  :root {
808
1223
  --card-padding: 1.5rem;
809
- --card-bg: var(--color-surface, #ffffff);
1224
+ --card-bg: var(--color-surface);
810
1225
  --card-radius: calc(var(--card-padding) / 4);
811
1226
  --card-gap: 1rem;
812
1227
  --card-header-padding: 1rem 1.5rem;
813
- --card-header-bg: var(--color-surface-secondary, #f8f9fa);
1228
+ --card-header-bg: var(--color-surface-secondary);
814
1229
  --card-header-border-bottom-width: 0.0625rem;
815
1230
  --card-header-border-bottom-style: solid;
816
- --card-header-border-bottom-color: var(--color-border, #dee2e6);
1231
+ --card-header-border-bottom-color: var(--color-border);
817
1232
  --card-body-padding: 1.5rem;
818
1233
  --card-footer-padding: 1rem 1.5rem;
819
- --card-footer-bg: var(--color-surface-secondary, #f8f9fa);
1234
+ --card-footer-bg: var(--color-surface-secondary);
820
1235
  --card-footer-border-top-width: 0.0625rem;
821
1236
  --card-footer-border-top-style: solid;
822
- --card-footer-border-top-color: var(--color-border, #dee2e6);
1237
+ --card-footer-border-top-color: var(--color-border);
823
1238
  }
824
1239
 
825
1240
  [data-card],
@@ -828,7 +1243,7 @@ figure:has(img[alt]) > figcaption {
828
1243
  flex-direction: column;
829
1244
  gap: var(--card-gap);
830
1245
  border-radius: var(--card-radius);
831
- border: var(--card-border, 0.0625rem solid rgba(0, 0, 0, 0.08));
1246
+ border: var(--card-border, 0.0625rem solid var(--color-border-subtle));
832
1247
  background-color: var(--card-bg);
833
1248
  text-align: var(--card-align, left);
834
1249
  }
@@ -898,7 +1313,7 @@ figure:has(img[alt]) > figcaption {
898
1313
  box-shadow: var(--card-hover-shadow);
899
1314
  }
900
1315
  [data-card=interactive]:focus-visible {
901
- outline: 0.125rem solid var(--color-focus, #0066cc);
1316
+ outline: 0.125rem solid var(--color-focus);
902
1317
  outline-offset: 0.125rem;
903
1318
  }
904
1319
  [data-card=interactive]:focus:not(:focus-visible) {
@@ -910,8 +1325,8 @@ progress {
910
1325
  all: revert;
911
1326
  --progress-width: 100%;
912
1327
  --progress-height: 1rem;
913
- --progress-bg: #cccccc;
914
- --progress-color: rgb(71, 71, 245);
1328
+ --progress-bg: var(--color-neutral-300);
1329
+ --progress-color: var(--color-primary);
915
1330
  --progress-accent-color: var(--progress-color);
916
1331
  /* This code changes the color of the progress bar. */
917
1332
  /* The variable names indicate the colors that are used. */
@@ -959,7 +1374,7 @@ progress[aria-busy]::-webkit-progress-bar {
959
1374
  }
960
1375
 
961
1376
  details {
962
- --details-border: 0.0625rem solid #dfdfdf;
1377
+ --details-border: 0.0625rem solid var(--color-border-subtle);
963
1378
  --details-direction: column;
964
1379
  --details-display: flex;
965
1380
  --details-gap: 0rem;
@@ -993,7 +1408,6 @@ details {
993
1408
  @starting-style {
994
1409
  details {
995
1410
  transition: var(--summary-transitions);
996
- color: red;
997
1411
  }
998
1412
  }
999
1413
  details + details {
@@ -1031,7 +1445,7 @@ details summary::-webkit-details-marker {
1031
1445
  details summary:focus-within {
1032
1446
  outline: none;
1033
1447
  border-bottom: solid 2px currentColor;
1034
- background-color: whitesmoke;
1448
+ background-color: var(--color-surface-secondary);
1035
1449
  }
1036
1450
  details summary:hover {
1037
1451
  cursor: var(--summary-cursor);
@@ -1085,7 +1499,7 @@ details[open] > section {
1085
1499
  * - Uses :focus-visible for better UX (keyboard vs mouse)
1086
1500
  */
1087
1501
  a[href] {
1088
- --link-color: #085ab7;
1502
+ --link-color: var(--color-link);
1089
1503
  --link-fw: 400;
1090
1504
  --link-fs: 1rem;
1091
1505
  --link-decoration: none;
@@ -1941,20 +2355,20 @@ footer > div {
1941
2355
  :root {
1942
2356
  --dialog-min-width: max(20rem, 80%);
1943
2357
  --dialog-gap: 0.625rem;
1944
- --dialog-border-color: lightgray;
2358
+ --dialog-border-color: var(--color-border);
1945
2359
  --dialog-border-width: thin;
1946
2360
  --dialog-border-style: solid;
1947
2361
  --dialog-border-radius: var(--border-radius);
1948
2362
  --dialog-padding: 1.5rem;
1949
2363
  --dialog-padding-inline: 1rem;
1950
- --dialog-close-color: gray;
2364
+ --dialog-close-color: var(--color-text-secondary);
1951
2365
  --dialog-button-bg: transparent;
1952
2366
  --dialog-button-border: transparent thin solid;
1953
- --dialog-button-hover-bg: whitesmoke;
2367
+ --dialog-button-hover-bg: var(--color-surface-secondary);
1954
2368
  --dialog-display: flex;
1955
2369
  --dialog-flex-direction: column;
1956
2370
  /* Focus and accessibility */
1957
- --dialog-focus-color: #0066cc;
2371
+ --dialog-focus-color: var(--color-focus);
1958
2372
  --dialog-focus-width: 0.125rem;
1959
2373
  --dialog-focus-offset: 0.125rem;
1960
2374
  --dialog-focus-outline: var(--dialog-focus-width) solid var(--dialog-focus-color);
@@ -2997,7 +3411,7 @@ dialog section {
2997
3411
  }
2998
3412
 
2999
3413
  sup:has(> span) {
3000
- --badge-bg: lightgray;
3414
+ --badge-bg: var(--color-neutral-300);
3001
3415
  --badge-color: currentColor;
3002
3416
  --badge-radius: 0.5rem;
3003
3417
  --badge-padding: 0.3rem;
@@ -3067,7 +3481,7 @@ body > nav ul > li,
3067
3481
  body > nav ul > li:hover,
3068
3482
  [aria-label~=navbar] ul > li:hover,
3069
3483
  .navbar ul > li:hover {
3070
- background-color: var(--nav-hover-bg, #e8e8e8);
3484
+ background-color: var(--nav-hover-bg, var(--color-surface-secondary));
3071
3485
  }
3072
3486
  body > nav ul > li:hover:has(img, button),
3073
3487
  [aria-label~=navbar] ul > li:hover:has(img, button),
@@ -3156,15 +3570,15 @@ nav button:focus-visible {
3156
3570
  * CSS Custom Properties:
3157
3571
  * - --checkbox-gap: Space between checkbox and label (default: 0.5rem)
3158
3572
  * - --checkbox-disabled-opacity: Opacity for disabled state (default: 0.6)
3159
- * - --checkbox-disabled-color: Label color when disabled (default: #6b7280)
3573
+ * - --checkbox-disabled-color: Label color when disabled (default: var(--color-disabled-text))
3160
3574
  * - --checkbox-label-fs: Label font size (default: 1rem)
3161
3575
  * - --checkbox-label-lh: Label line height (default: 1.5)
3162
- * - --color-required: Required indicator color (default: #dc2626)
3163
- * - --checkbox-focus-ring-color: Focus ring color (default: #2563eb)
3576
+ * - --color-required: Required indicator color (default: var(--color-required))
3577
+ * - --checkbox-focus-ring-color: Focus ring color (default: var(--color-focus-ring))
3164
3578
  * - --checkbox-focus-ring-width: Focus ring width (default: 0.125rem)
3165
3579
  * - --checkbox-focus-ring-offset: Focus ring offset (default: 0.125rem)
3166
3580
  * - --checkbox-hover-label-color: Label color on hover (default: inherit)
3167
- * - --checkbox-error-label-color: Label color when invalid (default: #dc2626)
3581
+ * - --checkbox-error-label-color: Label color when invalid (default: var(--color-error-text))
3168
3582
  * - --checkbox-valid-label-color: Label color when valid (default: #16a34a)
3169
3583
  * - --checkbox-focus-radius: Focus outline border radius (default: 0.125rem)
3170
3584
  *
@@ -3186,10 +3600,10 @@ div:has(> input[type=checkbox]) > input[type=checkbox] {
3186
3600
  order: -1;
3187
3601
  }
3188
3602
  div:has(> input[type=checkbox]):not(:has(> input[aria-disabled=true])):hover .checkbox-label {
3189
- color: var(--checkbox-hover-label-color, inherit);
3603
+ color: var(--checkbox-hover-label-color, currentColor);
3190
3604
  }
3191
3605
  div:has(> input[type=checkbox]):has(> input:focus-visible) .checkbox-label {
3192
- outline: var(--checkbox-focus-ring-width, 0.125rem) solid var(--checkbox-focus-ring-color, #2563eb);
3606
+ outline: var(--checkbox-focus-ring-width, 0.125rem) solid var(--checkbox-focus-ring-color, var(--color-focus-ring));
3193
3607
  outline-offset: var(--checkbox-focus-ring-offset, 0.125rem);
3194
3608
  border-radius: var(--checkbox-focus-radius, 0.125rem);
3195
3609
  }
@@ -3198,14 +3612,14 @@ div:has(> input[type=checkbox]):has(> input[aria-disabled=true]) {
3198
3612
  cursor: not-allowed;
3199
3613
  }
3200
3614
  div:has(> input[type=checkbox]):has(> input[aria-disabled=true]) .checkbox-label {
3201
- color: var(--checkbox-disabled-color, #6b7280);
3615
+ color: var(--checkbox-disabled-color, var(--color-disabled-text));
3202
3616
  cursor: not-allowed;
3203
3617
  }
3204
3618
  div:has(> input[type=checkbox]):has(> input[aria-invalid=true]) .checkbox-label {
3205
- color: var(--checkbox-error-label-color, #dc2626);
3619
+ color: var(--checkbox-error-label-color, var(--color-error-text));
3206
3620
  }
3207
- div:has(> input[type=checkbox]):has(> input[aria-invalid=false]:checked) .checkbox-label {
3208
- color: var(--checkbox-valid-label-color, #16a34a);
3621
+ div:has(> input[type=checkbox]):has(> input[aria-invalid=false]:checked) label[for] {
3622
+ color: var(--checkbox-valid-label-color, currentColor);
3209
3623
  }
3210
3624
 
3211
3625
  .checkbox-label {
@@ -3224,7 +3638,7 @@ div:has(> input[type=checkbox]):has(> input[aria-invalid=false]:checked) .checkb
3224
3638
  }
3225
3639
  }
3226
3640
  .checkbox-label .checkbox-required {
3227
- color: var(--color-required, #dc2626);
3641
+ color: var(--color-required);
3228
3642
  font-weight: 600;
3229
3643
  margin-inline-start: 0.125rem;
3230
3644
  }
@@ -3242,7 +3656,7 @@ div:has(> input[type=checkbox]):has(> input[aria-invalid=false]:checked) .checkb
3242
3656
  }
3243
3657
  }
3244
3658
  :root {
3245
- --input-border-color: gray;
3659
+ --input-border-color: var(--color-border);
3246
3660
  --input-appearance: none;
3247
3661
  --input-bg: inherit;
3248
3662
  --input-border: none;
@@ -3254,10 +3668,10 @@ div:has(> input[type=checkbox]):has(> input[aria-invalid=false]:checked) .checkb
3254
3668
  --input-width: clamp(200px, 100%, 500px);
3255
3669
  --input-focus-outline: medium solid var(--input-border-color);
3256
3670
  --input-focus-outline-offset: 0;
3257
- --input-disabled-bg: #f5f5f5;
3671
+ --input-disabled-bg: var(--color-disabled-bg);
3258
3672
  --input-disabled-opacity: 0.6;
3259
3673
  --input-disabled-cursor: not-allowed;
3260
- --placeholder-color: gray;
3674
+ --placeholder-color: var(--color-text-tertiary);
3261
3675
  --placeholder-style: italic;
3262
3676
  --placeholder-fs: smaller;
3263
3677
  --form-direction: column;
@@ -3272,12 +3686,17 @@ div:has(> input[type=checkbox]):has(> input[aria-invalid=false]:checked) .checkb
3272
3686
  Base Properties
3273
3687
  ========================================================================== */
3274
3688
  --checkbox-size: var(--checkbox-size-md);
3275
- --checkbox-bg: #ffffff;
3276
- --checkbox-border: 0.125rem solid #6b7280; /* 2px border */
3277
- --checkbox-border-color: #6b7280; /* Gray 500 */
3689
+ --checkbox-bg: var(--color-surface);
3690
+ --checkbox-border: 0.125rem solid var(--color-neutral-600); /* 2px border */
3691
+ --checkbox-border-color: var(--color-neutral-600); /* Gray 500 */
3278
3692
  --checkbox-radius: 0.25rem; /* 4px */
3279
3693
  --checkbox-cursor: pointer;
3280
3694
  --checkbox-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
3695
+ /* ==========================================================================
3696
+ Checked State Properties
3697
+ ========================================================================== */
3698
+ --checkbox-checked-outline-color: var(--color-success);
3699
+ --checkbox-checked-bg: var(--color-success);
3281
3700
  }
3282
3701
 
3283
3702
  form {
@@ -3304,14 +3723,14 @@ input {
3304
3723
  padding-inline: var(--input-padding-inline);
3305
3724
  padding-block: var(--input-padding-block);
3306
3725
  border-radius: var(--input-radius);
3307
- background-color: var(--input-bg, #fff);
3726
+ background-color: var(--input-bg, var(--color-surface));
3308
3727
  }
3309
3728
  input:focus-visible, input:focus {
3310
3729
  outline: var(--input-focus-outline);
3311
3730
  outline-offset: var(--input-focus-outline-offset);
3312
3731
  }
3313
3732
  input[aria-disabled=true], input:disabled {
3314
- --input-border-color: lightgray;
3733
+ --input-border-color: var(--color-border-subtle);
3315
3734
  background-color: var(--input-disabled-bg);
3316
3735
  opacity: var(--input-disabled-opacity);
3317
3736
  cursor: var(--input-disabled-cursor);
@@ -3349,8 +3768,8 @@ input[type=checkbox] {
3349
3768
  }
3350
3769
  input[type=checkbox]:checked {
3351
3770
  background-color: var(--checkbox-bg, red);
3352
- outline: rebeccapurple solid 2px;
3353
- background: #dbeafe;
3771
+ outline: var(--checkbox-checked-outline-color) solid 2px;
3772
+ background: var(--checkbox-checked-bg) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M6.173 11.414l-3.89-3.89 1.414-1.414 2.476 2.475 5.657-5.657 1.414 1.414z'/></svg>") no-repeat center center;
3354
3773
  }
3355
3774
 
3356
3775
  select {
@@ -3630,28 +4049,28 @@ li:has(> button) {
3630
4049
  }
3631
4050
 
3632
4051
  [role=alert] {
3633
- /* Success colors */
3634
- --alert-success-bg: #e6f4ea;
3635
- --alert-success-border: #34a853;
3636
- --alert-success-text: #1e4620;
3637
- /* Error colors */
3638
- --alert-error-bg: #fdeded;
3639
- --alert-error-border: #d32f2f;
3640
- --alert-error-text: #5f2120;
3641
- /* Warning colors */
3642
- --alert-warning-bg: #fff4e5;
3643
- --alert-warning-border: #ff9800;
3644
- --alert-warning-text: #663c00;
3645
- /* Info colors */
3646
- --alert-info-bg: #e5f6fd;
3647
- --alert-info-border: #0288d1;
3648
- --alert-info-text: #084154;
4052
+ /* Success colors - WCAG AA compliant (mapped to semantic tokens) */
4053
+ --alert-success-bg: var(--color-success-bg);
4054
+ --alert-success-border: var(--color-success-border);
4055
+ --alert-success-text: var(--color-success-text);
4056
+ /* Error colors - WCAG AA compliant (mapped to semantic tokens) */
4057
+ --alert-error-bg: var(--color-error-bg);
4058
+ --alert-error-border: var(--color-error-border);
4059
+ --alert-error-text: var(--color-error-text);
4060
+ /* Warning colors - WCAG AA compliant (mapped to semantic tokens) */
4061
+ --alert-warning-bg: var(--color-warning-bg);
4062
+ --alert-warning-border: var(--color-warning-border);
4063
+ --alert-warning-text: var(--color-warning-text);
4064
+ /* Info colors - WCAG AA compliant (mapped to semantic tokens) */
4065
+ --alert-info-bg: var(--color-info-bg);
4066
+ --alert-info-border: var(--color-info-border);
4067
+ --alert-info-text: var(--color-info-text);
3649
4068
  /* Animation */
3650
4069
  --alert-transition-duration: 0.3s;
3651
4070
  --alert-border: thin solid currentColor;
3652
- background-color: var(--alert-bg, whitesmoke);
3653
- border: var(--alert-border, currentColor);
3654
- color: var(--alert-color, currentColor);
4071
+ background-color: var(--alert-bg, var(--color-surface));
4072
+ border: var(--alert-border, var(--color-border));
4073
+ color: var(--alert-color, var(--color-text));
3655
4074
  padding: var(--alert-padding, var(--spc-4));
3656
4075
  margin-block-end: var(--alert-margin-block-end);
3657
4076
  font-size: var(--fs-0);
@@ -3772,7 +4191,7 @@ li:has(> button) {
3772
4191
 
3773
4192
  [data-tts] {
3774
4193
  --tts-gap: 0.5rem;
3775
- --tts-bg: #fff;
4194
+ --tts-bg: var(--color-surface);
3776
4195
  --tts-border-width: 0.125rem;
3777
4196
  --tts-border-style: solid;
3778
4197
  --tts-border-color: currentColor;
@@ -3854,16 +4273,16 @@ li:has(> button) {
3854
4273
  --title-fs: var(--title-size-2xl);
3855
4274
  }
3856
4275
  [data-title][data-title~=primary] {
3857
- --title-color: #1e3a8a;
4276
+ --title-color: var(--color-primary);
3858
4277
  }
3859
4278
  [data-title][data-title~=secondary] {
3860
- --title-color: #4b5563;
4279
+ --title-color: var(--color-text-secondary);
3861
4280
  }
3862
4281
  [data-title][data-title~=accent] {
3863
- --title-color: #7c3aed;
4282
+ --title-color: var(--color-primary);
3864
4283
  }
3865
4284
  [data-title][data-title~=muted] {
3866
- --title-color: #6b7280;
4285
+ --title-color: var(--color-text-tertiary);
3867
4286
  }
3868
4287
  [data-title][data-title~=inherit] {
3869
4288
  --title-color: inherit;
@@ -4650,6 +5069,21 @@ li:has(> button) {
4650
5069
  box-shadow: var(--shadow-xl);
4651
5070
  }
4652
5071
 
5072
+ /**
5073
+ * DEPRECATED: This file is deprecated in favor of the new token system.
5074
+ *
5075
+ * Use tokens from src/sass/tokens/ instead:
5076
+ * - Primitives: src/sass/tokens/_color-primitives.scss
5077
+ * - Semantic: src/sass/tokens/_color-semantic.scss
5078
+ *
5079
+ * Use utility classes from src/sass/utilities/ for quick styling:
5080
+ * - .text-primary, .text-success, .text-error, etc.
5081
+ * - .bg-primary, .bg-success, .bg-error, etc.
5082
+ * - .border-primary, .border-success, .border-error, etc.
5083
+ *
5084
+ * This file will be removed in v6.0.0
5085
+ * Keeping for backward compatibility only.
5086
+ */
4653
5087
  :root {
4654
5088
  --transparent: transparent;
4655
5089
  }