@orion-ds/core 1.2.3 → 3.2.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/dist/theme.css CHANGED
@@ -11,7 +11,255 @@
11
11
  GENERATED TOKENS — Auto-generated from JSON
12
12
  Includes: primitives, semantics, brand overrides
13
13
  ═══════════════════════════════════════════════════════════════════════════ */
14
- @import url('tokens/generated.css');
14
+ /* Inlined: tokens/generated.css */
15
+ /**
16
+ * ═══════════════════════════════════════════════════════════════════════════
17
+ * ORION DESIGN SYSTEM — Generated Tokens
18
+ * DO NOT EDIT MANUALLY - Generated from tokens/*.json
19
+ * Run: node scripts/build-tokens.js
20
+ * ═══════════════════════════════════════════════════════════════════════════
21
+ */
22
+
23
+ /* ─── Primitives (from primary.json) ─── */
24
+ :root {
25
+ /* Colors */
26
+ /* Brand: Orion (default) */
27
+ --color-brand-50: #e8f0ff;
28
+ --color-brand-100: #c7daff;
29
+ --color-brand-200: #a3c2ff;
30
+ --color-brand-300: #7ea9ff;
31
+ --color-brand-400: #5990ff;
32
+ --color-brand-500: #1B5BFF;
33
+ --color-brand-600: #1850e6;
34
+ --color-brand-700: #1544cc;
35
+ --color-brand-800: #1139b3;
36
+ --color-brand-900: #0d2d99;
37
+ --color-brand-950: #071a5c;
38
+
39
+ /* Neutral */
40
+ --color-neutral-0: #ffffff;
41
+ --color-neutral-50: #f8fafc;
42
+ --color-neutral-100: #f1f5f9;
43
+ --color-neutral-200: #e2e8f0;
44
+ --color-neutral-300: #cbd5e1;
45
+ --color-neutral-400: #94a3b8;
46
+ --color-neutral-500: #64748b;
47
+ --color-neutral-600: #475569;
48
+ --color-neutral-700: #334155;
49
+ --color-neutral-800: #1e293b;
50
+ --color-neutral-900: #0f172a;
51
+ --color-neutral-950: #020617;
52
+ --color-neutral-1000: #000000;
53
+
54
+ /* Status */
55
+ --color-error-500: #ef4444;
56
+ --color-success-500: #22c55e;
57
+ --color-warning-500: #eab308;
58
+
59
+ /* Typography */
60
+ --font-primary: Libre Baskerville, system-ui, sans-serif;
61
+ --font-secondary: Inter, system-ui, sans-serif;
62
+ --font-mono: JetBrains Mono, monospace;
63
+
64
+ /* Font Sizes */
65
+ --font-size-10: 10px;
66
+ --font-size-11: 11px;
67
+ --font-size-12: 12px;
68
+ --font-size-13: 13px;
69
+ --font-size-14: 14px;
70
+ --font-size-16: 16px;
71
+ --font-size-18: 18px;
72
+ --font-size-20: 20px;
73
+ --font-size-24: 24px;
74
+ --font-size-32: 32px;
75
+ --font-size-48: 48px;
76
+ --font-size-64: 64px;
77
+ --font-size-80: 80px;
78
+ --font-size-96: 96px;
79
+
80
+ /* Font Weights */
81
+ --font-weight-regular: 400;
82
+ --font-weight-medium: 500;
83
+ --font-weight-bold: 700;
84
+
85
+ /* Spacing (base: 4px) */
86
+ --spacing-0: 0px;
87
+ --spacing-1: 4px;
88
+ --spacing-2: 8px;
89
+ --spacing-3: 12px;
90
+ --spacing-4: 16px;
91
+ --spacing-5: 20px;
92
+ --spacing-6: 24px;
93
+ --spacing-7: 28px;
94
+ --spacing-8: 32px;
95
+ --spacing-9: 36px;
96
+ --spacing-10: 40px;
97
+ --spacing-11: 44px;
98
+ --spacing-12: 48px;
99
+ --spacing-16: 64px;
100
+ --spacing-20: 80px;
101
+ --spacing-24: 96px;
102
+ --spacing-32: 128px;
103
+ --spacing-px: 1px;
104
+ --spacing-05: 2px;
105
+
106
+ /* Border Radius */
107
+ --radius-0: 0px;
108
+ --radius-xs: 4px;
109
+ --radius-sm: 8px;
110
+ --radius-md: 12px;
111
+ --radius-lg: 16px;
112
+ --radius-lg-2: 20px;
113
+ --radius-xl: 24px;
114
+ --radius-2xl: 32px;
115
+ --radius-3xl: 36px;
116
+ --radius-full: 9999px;
117
+
118
+ /* Blur */
119
+ --blur-sm: 4px;
120
+ --blur-md: 8px;
121
+ --blur-lg: 12px;
122
+ --blur-xl: 24px;
123
+ }
124
+
125
+ /* ─── Light Theme Semantics ─── */
126
+ [data-theme="light"] {
127
+ /* Surfaces */
128
+ --surface-base: var(--color-neutral-0);
129
+ --surface-subtle: var(--color-neutral-50);
130
+ --surface-layer: var(--color-neutral-100);
131
+ --surface-primary: var(--color-neutral-100);
132
+ --surface-secondary: var(--color-neutral-50);
133
+ --surface-glass: color-mix(in srgb, {color.neutral.0} 70%, transparent);
134
+ --surface-sunken: color-mix(in srgb, {color.neutral.0} 40%, transparent);
135
+ --surface-overlay: color-mix(in srgb, {color.neutral.1000} 50%, transparent);
136
+
137
+ /* Text */
138
+ --text-primary: var(--color-neutral-900);
139
+ --text-secondary: var(--color-neutral-500);
140
+ --text-tertiary: var(--color-neutral-400);
141
+ --text-inverse: var(--color-neutral-0);
142
+ --text-brand: var(--color-brand-500);
143
+ --text-on-brand: [object Object];
144
+
145
+ /* Borders */
146
+ --border-subtle: var(--color-neutral-200);
147
+ --border-strong: var(--color-neutral-300);
148
+ --border-interactive: var(--color-brand-500);
149
+
150
+ /* Interactive */
151
+ --interactive-primary: var(--color-brand-500);
152
+ --interactive-primary-hover: var(--color-brand-700);
153
+ --interactive-primary-text: var(--color-neutral-0);
154
+ --interactive-secondary: var(--color-neutral-100);
155
+ --interactive-secondary-hover: var(--color-neutral-200);
156
+ --interactive-secondary-text: var(--color-neutral-900);
157
+
158
+ /* Status */
159
+ --status-error: var(--color-error-500);
160
+ --status-success: var(--color-success-500);
161
+ --status-warning: var(--color-warning-500);
162
+ --status-info: var(--color-info-500);
163
+
164
+ /* Gradient */
165
+ --gradient-start: var(--color-brand-400);
166
+ --gradient-end: var(--color-brand-600);
167
+
168
+ /* Chart Palette */
169
+ --chart-1: var(--color-brand-500);
170
+ --chart-2: var(--color-brand-300);
171
+ --chart-3: var(--color-brand-700);
172
+ --chart-4: var(--color-success-500);
173
+ --chart-5: var(--color-warning-500);
174
+ }
175
+
176
+ /* ─── Dark Theme Semantics ─── */
177
+ [data-theme="dark"] {
178
+ /* Surfaces */
179
+ --surface-base: var(--color-neutral-900);
180
+ --surface-subtle: var(--color-neutral-950);
181
+ --surface-layer: var(--color-neutral-900);
182
+ --surface-primary: var(--color-neutral-900);
183
+ --surface-secondary: var(--color-neutral-900);
184
+ --surface-glass: color-mix(in srgb, {color.neutral.950} 60%, transparent);
185
+ --surface-sunken: color-mix(in srgb, {color.neutral.950} 40%, transparent);
186
+ --surface-overlay: color-mix(in srgb, {color.neutral.1000} 70%, transparent);
187
+
188
+ /* Text */
189
+ --text-primary: var(--color-neutral-50);
190
+ --text-secondary: var(--color-neutral-400);
191
+ --text-tertiary: var(--color-neutral-600);
192
+ --text-inverse: var(--color-neutral-950);
193
+ --text-brand: var(--color-brand-400);
194
+ --text-on-brand: [object Object];
195
+
196
+ /* Borders */
197
+ --border-subtle: var(--color-neutral-800);
198
+ --border-strong: var(--color-neutral-700);
199
+ --border-interactive: var(--color-brand-500);
200
+
201
+ /* Interactive */
202
+ --interactive-primary: var(--color-brand-500);
203
+ --interactive-primary-hover: var(--color-brand-400);
204
+ --interactive-primary-text: var(--color-neutral-0);
205
+ --interactive-secondary: var(--color-neutral-800);
206
+ --interactive-secondary-hover: var(--color-neutral-700);
207
+ --interactive-secondary-text: var(--color-neutral-50);
208
+
209
+ /* Status */
210
+ --status-error: var(--color-error-500);
211
+ --status-success: var(--color-success-500);
212
+ --status-warning: var(--color-warning-500);
213
+ --status-info: var(--color-info-500);
214
+
215
+ /* Gradient */
216
+ --gradient-start: var(--color-brand-400);
217
+ --gradient-end: var(--color-brand-600);
218
+
219
+ /* Chart Palette */
220
+ --chart-1: var(--color-brand-400);
221
+ --chart-2: var(--color-brand-200);
222
+ --chart-3: var(--color-brand-600);
223
+ --chart-4: var(--color-success-500);
224
+ --chart-5: var(--color-warning-500);
225
+ }
226
+
227
+ /* ─── Radius Scale (Button → Container Derivation) ─── */
228
+ :root {
229
+ /* Derived: button="full" (9999px) → container="3xl" (36px) */
230
+ --radius-button: var(--radius-full);
231
+ --radius-container: var(--radius-3xl);
232
+ }
233
+
234
+ /* ─── Deepblue Radius ─── */
235
+ [data-brand="deepblue"] {
236
+ /* Derived: button="md" (12px) → container="xl" (24px) */
237
+ --radius-button: var(--radius-md);
238
+ --radius-container: var(--radius-xl);
239
+ }
240
+
241
+ /* ─── Red Radius ─── */
242
+ [data-brand="red"] {
243
+ /* Derived: button="full" (9999px) → container="3xl" (36px) */
244
+ --radius-button: var(--radius-full);
245
+ --radius-container: var(--radius-3xl);
246
+ }
247
+
248
+ /* ─── Orange Radius ─── */
249
+ [data-brand="orange"] {
250
+ /* Derived: button="full" (9999px) → container="3xl" (36px) */
251
+ --radius-button: var(--radius-full);
252
+ --radius-container: var(--radius-3xl);
253
+ }
254
+
255
+ /* ─── Lemon Radius ─── */
256
+ [data-brand="lemon"] {
257
+ /* Derived: button="full" (9999px) → container="3xl" (36px) */
258
+ --radius-button: var(--radius-full);
259
+ --radius-container: var(--radius-3xl);
260
+ }
261
+
262
+
15
263
 
16
264
  /* ═══════════════════════════════════════════════════════════════════════════
17
265
  PRIMITIVES — Raw values from primary.json
@@ -133,6 +381,10 @@
133
381
  --spacing-24: 6rem;
134
382
  --spacing-32: 8rem;
135
383
 
384
+ /* ─── Card Padding (Brand-Aware) ─── */
385
+ --card-padding: var(--spacing-4); /* 16px default (rounded brands) */
386
+ --card-padding-gap: var(--spacing-2); /* 8px gap between Header and Body */
387
+
136
388
  /* ─── Component Sizes ─── */
137
389
  /* FAB sizes */
138
390
  --size-fab-sm: 2.5rem; /* 40px */
@@ -143,6 +395,7 @@
143
395
  --size-icon-sm: 1rem; /* 16px */
144
396
  --size-icon-md: 1.25rem; /* 20px */
145
397
  --size-icon-lg: 1.5rem; /* 24px */
398
+ --size-icon-xl: 2rem; /* 32px */
146
399
 
147
400
  /* Modal max-widths */
148
401
  --size-modal-sm: 25rem; /* 400px */
@@ -151,11 +404,16 @@
151
404
  --size-modal-xl: 56.25rem; /* 900px */
152
405
 
153
406
  /* Avatar sizes */
407
+ --size-avatar-xs: 1.25rem; /* 20px */
154
408
  --size-avatar-sm: 2rem; /* 32px */
155
409
  --size-avatar-md: 2.5rem; /* 40px */
156
410
  --size-avatar-lg: 3rem; /* 48px */
157
411
  --size-avatar-xl: 4rem; /* 64px */
158
412
 
413
+ /* Border widths */
414
+ --border-width: 1px;
415
+ --border-width-bold: 2px;
416
+
159
417
  /* Badge dot size */
160
418
  --size-badge-dot: 0.375rem; /* 6px */
161
419
 
@@ -193,18 +451,11 @@
193
451
  --z-maximum: 100;
194
452
 
195
453
  /* ─── Radius (The Geometry Contract) ─── */
196
- --radius-0: 0;
197
- --radius-sm: 0.5rem;
198
- --radius-md: 0.75rem;
199
- --radius-lg: 1rem;
200
- --radius-xl: 1.5rem;
201
- --radius-2xl: 2rem;
202
- --radius-full: 9999px;
454
+ /* Primitives (--radius-0 through --radius-full) are defined in generated.css from primary.json */
455
+ /* --radius-button and --radius-container are derived via radiusScale in generated.css */
203
456
 
204
457
  /* Master Control: Change this to transform the entire system */
205
458
  --radius-control: var(--radius-md);
206
- --radius-container: var(--radius-lg);
207
- --radius-button: var(--radius-full);
208
459
 
209
460
  /* ─── Effects (Atmospheric Depth) ─── */
210
461
  --blur-sm: 4px;
@@ -230,6 +481,24 @@
230
481
  --size-card-carousel-height: 530px;
231
482
  --size-calendar-time-col: 80px;
232
483
 
484
+ /* Chat component sizes */
485
+ --chat-max-width: 50rem; /* 800px */
486
+ --chat-bubble-radius: 1.25rem; /* 20px - rounded message bubbles */
487
+ --chat-textarea-min-height: 1.5rem; /* 24px */
488
+ --chat-textarea-max-height: 12.5rem; /* 200px */
489
+ --chat-image-max-width: 18.75rem; /* 300px */
490
+ --chat-image-max-height: 12.5rem; /* 200px */
491
+ --chat-image-max-width-mobile: 12.5rem; /* 200px */
492
+ --chat-image-max-height-mobile: 9.375rem; /* 150px */
493
+ --chat-typing-dot-size: 0.625rem; /* 10px */
494
+
495
+ /* Typography extension */
496
+ --letter-spacing-wide: 0.05em;
497
+
498
+ /* Animation extension - spring easing */
499
+ --transition-spring: 300ms cubic-bezier(0.16, 1, 0.3, 1);
500
+ --easing-spring: cubic-bezier(0.16, 1, 0.3, 1);
501
+
233
502
  --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
234
503
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.08);
235
504
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.08);
@@ -344,6 +613,13 @@
344
613
  --gradient-start: var(--color-brand-400);
345
614
  --gradient-end: var(--color-brand-600);
346
615
 
616
+ /* ─── Chart Palette ─── */
617
+ --chart-1: var(--color-brand-500);
618
+ --chart-2: var(--color-brand-300);
619
+ --chart-3: var(--color-brand-700);
620
+ --chart-4: var(--color-success-500);
621
+ --chart-5: var(--color-warning-500);
622
+
347
623
  /* ─── Switch Component ─── */
348
624
  --switch-thumb-bg: var(--color-neutral-0);
349
625
  /* Always white for consistent thumb appearance across themes */
@@ -454,6 +730,13 @@
454
730
  --gradient-start: var(--color-brand-400);
455
731
  --gradient-end: var(--color-brand-600);
456
732
 
733
+ /* ─── Chart Palette ─── */
734
+ --chart-1: var(--color-brand-400);
735
+ --chart-2: var(--color-brand-200);
736
+ --chart-3: var(--color-brand-600);
737
+ --chart-4: var(--color-success-500);
738
+ --chart-5: var(--color-warning-500);
739
+
457
740
  /* ─── Switch Component ─── */
458
741
  --switch-thumb-bg: var(--color-neutral-0);
459
742
  /* Always white for consistent thumb appearance across themes */
@@ -494,9 +777,6 @@
494
777
 
495
778
  /* Geometry: Pill Buttons (Full Radius) */
496
779
  --radius-control: var(--radius-lg);
497
- --radius-container: 24px;
498
- /* Explicitly match radius-control if needed, but root default is already full */
499
- --radius-button: 9999px;
500
780
 
501
781
  /* Override Neutrals to Pure Scale */
502
782
  --color-neutral-0: var(--color-neutral-pure-0);
@@ -533,8 +813,8 @@
533
813
  --border-interactive: var(--color-brand-800);
534
814
 
535
815
  /* ─── Glass Effect: Neutral Gray ─── */
536
- --surface-glass: rgba(245, 245, 245, 0.7);
537
- --surface-sunken: rgba(250, 250, 250, 0.4);
816
+ --surface-glass: color-mix(in srgb, var(--color-neutral-100) 70%, transparent);
817
+ --surface-sunken: color-mix(in srgb, var(--color-neutral-50) 40%, transparent);
538
818
 
539
819
  /* ─── Hero Gradients ─── */
540
820
  --hero-gradient-1: var(--color-brand-900);
@@ -542,7 +822,7 @@
542
822
 
543
823
  /* ─── Feature Gradients ─── */
544
824
  --surface-brand-gradient: linear-gradient(135deg, var(--color-brand-soft) 0%, transparent 100%);
545
- --status-warning-bg: rgba(234, 179, 8, 0.1);
825
+ --status-warning-bg: color-mix(in srgb, var(--color-warning-500) 10%, transparent);
546
826
  }
547
827
 
548
828
  /* ─── Red Dark Mode Semantics ─── */
@@ -564,8 +844,8 @@
564
844
  --border-interactive: var(--color-brand-100);
565
845
 
566
846
  /* ─── Glass Effect: Neutral Gray ─── */
567
- --surface-glass: rgba(23, 23, 23, 0.6);
568
- --surface-sunken: rgba(10, 10, 10, 0.4);
847
+ --surface-glass: color-mix(in srgb, var(--color-neutral-900) 60%, transparent);
848
+ --surface-sunken: color-mix(in srgb, var(--color-neutral-950) 40%, transparent);
569
849
 
570
850
  /* ─── Hero Gradients ─── */
571
851
  --hero-gradient-1: var(--color-brand-900);
@@ -573,12 +853,12 @@
573
853
 
574
854
  /* ─── Feature Gradients ─── */
575
855
  --surface-brand-gradient: linear-gradient(135deg, var(--color-brand-soft) 0%, transparent 100%);
576
- --status-warning-bg: rgba(234, 179, 8, 0.15);
856
+ --status-warning-bg: color-mix(in srgb, var(--color-warning-500) 15%, transparent);
577
857
  }
578
858
 
579
859
  /* ─── UVM Component Overrides ─── */
580
860
  [data-brand="red"] .badge {
581
- border-radius: 9999px;
861
+ border-radius: var(--radius-full);
582
862
  }
583
863
 
584
864
  [data-brand="red"] .badge-primary {
@@ -586,6 +866,12 @@
586
866
  color: var(--interactive-primary-text);
587
867
  }
588
868
 
869
+ /* ─── Red Brand Card Padding (Pill Button Visual Elegance) ─── */
870
+ [data-brand="red"] {
871
+ --card-padding: var(--spacing-6); /* 24px - generous padding for pill aesthetic */
872
+ --card-padding-gap: var(--spacing-3); /* 12px - scaled gap */
873
+ }
874
+
589
875
 
590
876
  /* ═══════════════════════════════════════════════════════════════════════════
591
877
  DEEPBLUE BRAND — Deep Blue Theme Override
@@ -611,8 +897,6 @@
611
897
  --color-brand-900: #003b69;
612
898
  --color-brand-950: #002540;
613
899
 
614
- /* Override button radius to match control radius (rounded 12px) */
615
- --radius-button: 12px;
616
900
  }
617
901
 
618
902
  /* ─── Deepblue Light Mode Semantics ─── */
@@ -623,7 +907,7 @@
623
907
 
624
908
  /* ─── Feature Gradients ─── */
625
909
  --surface-brand-gradient: linear-gradient(135deg, var(--color-brand-soft) 0%, transparent 100%);
626
- --status-warning-bg: rgba(234, 179, 8, 0.1);
910
+ --status-warning-bg: color-mix(in srgb, var(--color-warning-500) 10%, transparent);
627
911
  }
628
912
 
629
913
  /* ─── Deepblue Dark Mode Semantics ─── */
@@ -634,7 +918,7 @@
634
918
 
635
919
  /* ─── Feature Gradients ─── */
636
920
  --surface-brand-gradient: linear-gradient(135deg, var(--color-brand-soft) 0%, transparent 100%);
637
- --status-warning-bg: rgba(234, 179, 8, 0.15);
921
+ --status-warning-bg: color-mix(in srgb, var(--color-warning-500) 15%, transparent);
638
922
  }
639
923
 
640
924
  /* ═══════════════════════════════════════════════════════════════════════════
@@ -664,8 +948,6 @@
664
948
 
665
949
  /* Geometry: Pill Buttons (100% Rounded) */
666
950
  --radius-control: var(--radius-md);
667
- --radius-container: var(--radius-lg);
668
- --radius-button: 9999px;
669
951
 
670
952
  /* Override Neutrals to Pure Scale */
671
953
  --color-neutral-0: var(--color-neutral-pure-0);
@@ -702,8 +984,8 @@
702
984
  --border-interactive: var(--color-brand-500);
703
985
 
704
986
  /* ─── Glass Effect: Neutral Gray ─── */
705
- --surface-glass: rgba(245, 245, 245, 0.7);
706
- --surface-sunken: rgba(250, 250, 250, 0.4);
987
+ --surface-glass: color-mix(in srgb, var(--color-neutral-100) 70%, transparent);
988
+ --surface-sunken: color-mix(in srgb, var(--color-neutral-50) 40%, transparent);
707
989
 
708
990
  /* ─── Hero Gradients ─── */
709
991
  --hero-gradient-1: var(--color-brand-600);
@@ -711,7 +993,7 @@
711
993
 
712
994
  /* ─── Feature Gradients ─── */
713
995
  --surface-brand-gradient: linear-gradient(135deg, var(--color-brand-soft) 0%, transparent 100%);
714
- --status-warning-bg: rgba(234, 179, 8, 0.1);
996
+ --status-warning-bg: color-mix(in srgb, var(--color-warning-500) 10%, transparent);
715
997
  }
716
998
 
717
999
  /* ─── Orange Dark Mode Semantics ─── */
@@ -733,8 +1015,8 @@
733
1015
  --border-interactive: var(--color-brand-500);
734
1016
 
735
1017
  /* ─── Glass Effect: Neutral Gray ─── */
736
- --surface-glass: rgba(23, 23, 23, 0.6);
737
- --surface-sunken: rgba(10, 10, 10, 0.4);
1018
+ --surface-glass: color-mix(in srgb, var(--color-neutral-900) 60%, transparent);
1019
+ --surface-sunken: color-mix(in srgb, var(--color-neutral-950) 40%, transparent);
738
1020
 
739
1021
  /* ─── Hero Gradients ─── */
740
1022
  --hero-gradient-1: var(--color-brand-600);
@@ -742,12 +1024,12 @@
742
1024
 
743
1025
  /* ─── Feature Gradients ─── */
744
1026
  --surface-brand-gradient: linear-gradient(135deg, var(--color-brand-soft) 0%, transparent 100%);
745
- --status-warning-bg: rgba(234, 179, 8, 0.15);
1027
+ --status-warning-bg: color-mix(in srgb, var(--color-warning-500) 15%, transparent);
746
1028
  }
747
1029
 
748
1030
  /* ─── Laureate Component Overrides ─── */
749
1031
  [data-brand="orange"] .badge {
750
- border-radius: 9999px;
1032
+ border-radius: var(--radius-full);
751
1033
  }
752
1034
 
753
1035
  [data-brand="orange"] .badge-primary {
@@ -755,6 +1037,12 @@
755
1037
  color: var(--interactive-primary-text);
756
1038
  }
757
1039
 
1040
+ /* ─── Orange Brand Card Padding (Pill Button Visual Elegance) ─── */
1041
+ [data-brand="orange"] {
1042
+ --card-padding: var(--spacing-6); /* 24px - generous padding for pill aesthetic */
1043
+ --card-padding-gap: var(--spacing-3); /* 12px - scaled gap */
1044
+ }
1045
+
758
1046
  /* ═══════════════════════════════════════════════════════════════════════════
759
1047
  LEMON BRAND — Bright Lime Green Theme Override
760
1048
  Usage: <html data-theme="light|dark" data-brand="lemon">
@@ -782,8 +1070,6 @@
782
1070
 
783
1071
  /* Geometry: Rounded Design with Usable Controls */
784
1072
  --radius-control: var(--radius-lg); /* 16px - usable for inputs/selects */
785
- --radius-container: var(--radius-xl); /* 24px - generous for cards */
786
- --radius-button: var(--radius-full); /* 9999px - pill buttons preserved */
787
1073
 
788
1074
  /* Override Neutrals to Pure Scale for Better Contrast */
789
1075
  --color-neutral-0: var(--color-neutral-pure-0);
@@ -831,8 +1117,8 @@
831
1117
  --border-interactive: var(--color-brand-700);
832
1118
 
833
1119
  /* ─── Glass Effect: Neutral Gray ─── */
834
- --surface-glass: rgba(245, 245, 245, 0.7);
835
- --surface-sunken: rgba(250, 250, 250, 0.4);
1120
+ --surface-glass: color-mix(in srgb, var(--color-neutral-100) 70%, transparent);
1121
+ --surface-sunken: color-mix(in srgb, var(--color-neutral-50) 40%, transparent);
836
1122
 
837
1123
  /* ─── Hero Gradients ─── */
838
1124
  --hero-gradient-1: var(--color-brand-700);
@@ -840,7 +1126,7 @@
840
1126
 
841
1127
  /* ─── Feature Gradients ─── */
842
1128
  --surface-brand-gradient: linear-gradient(135deg, var(--color-brand-soft) 0%, transparent 100%);
843
- --status-warning-bg: rgba(234, 179, 8, 0.1);
1129
+ --status-warning-bg: color-mix(in srgb, var(--color-warning-500) 10%, transparent);
844
1130
  }
845
1131
 
846
1132
  /* ─── Lemon Dark Mode Semantics ─── */
@@ -862,8 +1148,8 @@
862
1148
  --border-interactive: var(--color-brand-500);
863
1149
 
864
1150
  /* ─── Glass Effect: Neutral Gray ─── */
865
- --surface-glass: rgba(23, 23, 23, 0.6);
866
- --surface-sunken: rgba(10, 10, 10, 0.4);
1151
+ --surface-glass: color-mix(in srgb, var(--color-neutral-900) 60%, transparent);
1152
+ --surface-sunken: color-mix(in srgb, var(--color-neutral-950) 40%, transparent);
867
1153
 
868
1154
  /* ─── Hero Gradients ─── */
869
1155
  --hero-gradient-1: var(--color-brand-600);
@@ -871,12 +1157,12 @@
871
1157
 
872
1158
  /* ─── Feature Gradients ─── */
873
1159
  --surface-brand-gradient: linear-gradient(135deg, var(--color-brand-soft) 0%, transparent 100%);
874
- --status-warning-bg: rgba(234, 179, 8, 0.15);
1160
+ --status-warning-bg: color-mix(in srgb, var(--color-warning-500) 15%, transparent);
875
1161
  }
876
1162
 
877
1163
  /* ─── Lemon Component Overrides ─── */
878
1164
  [data-brand="lemon"] .badge {
879
- border-radius: 9999px;
1165
+ border-radius: var(--radius-full);
880
1166
  }
881
1167
 
882
1168
  [data-brand="lemon"] .badge-primary {
@@ -884,6 +1170,12 @@
884
1170
  color: var(--interactive-primary-text);
885
1171
  }
886
1172
 
1173
+ /* ─── Lemon Brand Card Padding (Bold Visual Elegance) ─── */
1174
+ [data-brand="lemon"] {
1175
+ --card-padding: var(--spacing-6); /* 24px - generous padding for visual impact */
1176
+ --card-padding-gap: var(--spacing-3); /* 12px - scaled gap */
1177
+ }
1178
+
887
1179
  /* ═══════════════════════════════════════════════════════════════════════════
888
1180
  TRI-MODAL OPERATING SYSTEM
889
1181
  Three distinct contexts: Display (Marketing) | Product (SaaS) | App (Touch)
@@ -2026,51 +2318,57 @@ a.navbar-link:focus:not(:focus-visible) {
2026
2318
  }
2027
2319
 
2028
2320
  /* ═══════════════════════════════════════════════════════════════════════════
2029
- BRAND VISUAL DIFFERENTIATION — Deepblue vs Orange
2321
+ BRAND VISUAL DIFFERENTIATION — Deepblue, Orange, Lemon
2030
2322
  ═══════════════════════════════════════════════════════════════════════════ */
2031
2323
 
2032
2324
  /* Deepblue: Bold & Energetic personality */
2033
2325
  [data-brand="deepblue"] .btn,
2034
2326
  [data-brand="deepblue"] .card {
2035
2327
  border-width: 2px;
2036
- /* More prominent borders */
2037
2328
  }
2038
2329
 
2039
2330
  [data-brand="deepblue"] .card-interactive:hover {
2040
- box-shadow: 0 12px 20px -4px rgba(0, 111, 186, 0.3);
2041
- /* Blue-tinted shadow */
2331
+ box-shadow: 0 12px 20px -4px color-mix(in srgb, var(--color-brand-500) 30%, transparent);
2042
2332
  }
2043
2333
 
2044
2334
  [data-brand="deepblue"] .btn:hover:not(:disabled) {
2045
- box-shadow: 0 8px 12px -2px rgba(0, 111, 186, 0.25);
2335
+ box-shadow: 0 8px 12px -2px color-mix(in srgb, var(--color-brand-500) 25%, transparent);
2046
2336
  }
2047
2337
 
2048
2338
  /* Orange: Refined & Professional personality */
2049
2339
  [data-brand="orange"] .btn,
2050
2340
  [data-brand="orange"] .card {
2051
2341
  border-width: 1px;
2052
- /* Subtle borders */
2053
2342
  }
2054
2343
 
2055
2344
  [data-brand="orange"] .card-interactive:hover {
2056
- box-shadow: 0 8px 16px -4px rgba(241, 93, 34, 0.2);
2057
- /* Red-orange tinted shadow, more subtle */
2345
+ box-shadow: 0 8px 16px -4px color-mix(in srgb, var(--color-brand-500) 20%, transparent);
2058
2346
  }
2059
2347
 
2060
2348
  [data-brand="orange"] .btn:hover:not(:disabled) {
2061
- box-shadow: 0 6px 10px -2px rgba(241, 93, 34, 0.2);
2062
- transition-duration: 300ms;
2063
- /* Slower, more deliberate interaction */
2349
+ box-shadow: 0 6px 10px -2px color-mix(in srgb, var(--color-brand-500) 20%, transparent);
2350
+ transition-duration: var(--transition-duration-slow, 300ms);
2064
2351
  }
2065
2352
 
2066
2353
  [data-brand="orange"] .btn:active:not(:disabled) {
2067
- transition-duration: 150ms;
2068
- /* Slightly slower press response */
2354
+ transition-duration: var(--transition-duration-fast, 150ms);
2069
2355
  }
2070
2356
 
2071
- /* Laureate refined modal appearance */
2072
2357
  [data-brand="orange"] .modal {
2073
- box-shadow: 0 16px 24px -4px rgba(241, 93, 34, 0.15);
2358
+ box-shadow: 0 16px 24px -4px color-mix(in srgb, var(--color-brand-500) 15%, transparent);
2359
+ }
2360
+
2361
+ /* Lemon: Bold & Vivid personality */
2362
+ [data-brand="lemon"] .card-interactive:hover {
2363
+ box-shadow: 0 10px 18px -4px color-mix(in srgb, var(--color-brand-700) 25%, transparent);
2364
+ }
2365
+
2366
+ [data-brand="lemon"] .btn:hover:not(:disabled) {
2367
+ box-shadow: 0 8px 12px -2px color-mix(in srgb, var(--color-brand-700) 20%, transparent);
2368
+ }
2369
+
2370
+ [data-brand="lemon"] .modal {
2371
+ box-shadow: 0 16px 24px -4px color-mix(in srgb, var(--color-brand-700) 15%, transparent);
2074
2372
  }
2075
2373
 
2076
2374
  .sidebar-item.is-active .sidebar-item-icon {
@@ -1 +1 @@
1
- {"version":3,"file":"brands.d.ts","sourceRoot":"","sources":["../../src/tokens/brands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,CAqLpC,CAAC;AAEX,eAAO,MAAM,YAAY,EAAE,KAAe,CAAC"}
1
+ {"version":3,"file":"brands.d.ts","sourceRoot":"","sources":["../../src/tokens/brands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,CAgLpC,CAAC;AAEX,eAAO,MAAM,YAAY,EAAE,KAAe,CAAC"}