@mrintel/villain-ui 0.8.2 → 0.9.1

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 (68) hide show
  1. package/README.md +52 -3
  2. package/dist/components/buttons/Button.svelte +1 -1
  3. package/dist/components/buttons/FloatingActionButton.svelte +1 -1
  4. package/dist/components/buttons/IconButton.svelte +2 -2
  5. package/dist/components/buttons/LinkButton.svelte +1 -1
  6. package/dist/components/buttons/buttonClasses.js +7 -7
  7. package/dist/components/cards/Card.svelte +43 -11
  8. package/dist/components/cards/Card.svelte.d.ts +11 -0
  9. package/dist/components/cards/Panel.svelte +44 -5
  10. package/dist/components/cards/Panel.svelte.d.ts +7 -0
  11. package/dist/components/cards/SectionHeader.svelte +2 -2
  12. package/dist/components/data/Avatar.svelte +1 -1
  13. package/dist/components/data/Badge.svelte +3 -3
  14. package/dist/components/data/CalendarGrid.svelte +6 -4
  15. package/dist/components/data/CalendarGrid.svelte.d.ts +3 -0
  16. package/dist/components/data/CodeBlock.svelte +1 -1
  17. package/dist/components/data/List.svelte +1 -1
  18. package/dist/components/data/Pagination.svelte +3 -3
  19. package/dist/components/data/Stat.svelte +3 -5
  20. package/dist/components/data/Table.svelte +12 -14
  21. package/dist/components/data/Tag.svelte +1 -1
  22. package/dist/components/data/WeekHeatmap.svelte +2 -2
  23. package/dist/components/forms/Checkbox.svelte +1 -1
  24. package/dist/components/forms/DatePicker.svelte +3 -1
  25. package/dist/components/forms/DateTimePicker.svelte +3 -1
  26. package/dist/components/forms/FileUpload.svelte +1 -1
  27. package/dist/components/forms/FormSection.svelte +21 -0
  28. package/dist/components/forms/FormSection.svelte.d.ts +14 -0
  29. package/dist/components/forms/InputGroup.svelte +1 -1
  30. package/dist/components/forms/RadioGroup.svelte +0 -1
  31. package/dist/components/forms/RangeSlider.svelte +2 -6
  32. package/dist/components/forms/SelectMenu.svelte +4 -3
  33. package/dist/components/forms/Switch.svelte +1 -1
  34. package/dist/components/forms/TimePicker.svelte +1 -1
  35. package/dist/components/forms/TimePickerGrid.svelte +0 -3
  36. package/dist/components/forms/formClasses.d.ts +2 -2
  37. package/dist/components/forms/formClasses.js +2 -2
  38. package/dist/components/forms/index.d.ts +1 -0
  39. package/dist/components/forms/index.js +1 -0
  40. package/dist/components/navigation/Breadcrumbs.svelte +3 -3
  41. package/dist/components/navigation/ContextMenu.svelte +2 -2
  42. package/dist/components/navigation/DropdownMenu.svelte +2 -2
  43. package/dist/components/navigation/Menu.svelte +2 -2
  44. package/dist/components/navigation/Navbar.svelte +10 -2
  45. package/dist/components/navigation/Sidebar.svelte +6 -9
  46. package/dist/components/navigation/Tabs.svelte +2 -2
  47. package/dist/components/overlays/Alert.svelte +1 -1
  48. package/dist/components/overlays/CommandPalette.svelte +2 -2
  49. package/dist/components/overlays/Drawer.svelte +5 -5
  50. package/dist/components/overlays/Dropdown.svelte +1 -1
  51. package/dist/components/overlays/Modal.svelte +2 -2
  52. package/dist/components/overlays/Popover.svelte +1 -1
  53. package/dist/components/overlays/ProgressBar.svelte +3 -3
  54. package/dist/components/overlays/SkeletonLoader.svelte +2 -2
  55. package/dist/components/overlays/Spinner.svelte +1 -1
  56. package/dist/components/overlays/Toast.svelte +2 -2
  57. package/dist/components/overlays/Tooltip.svelte +1 -1
  58. package/dist/components/typography/Code.svelte +1 -1
  59. package/dist/components/utilities/Carousel.svelte +4 -4
  60. package/dist/components/utilities/Collapse.svelte +1 -1
  61. package/dist/components/utilities/Hero.svelte +3 -2
  62. package/dist/components/utilities/SystemConsole.svelte +1 -1
  63. package/dist/components/utilities/SystemInterface.svelte +1 -2
  64. package/dist/components/wizard/StepForm.svelte +1 -1
  65. package/dist/index.d.ts +2 -2
  66. package/dist/index.js +2 -2
  67. package/dist/theme.css +207 -190
  68. package/package.json +2 -1
package/dist/theme.css CHANGED
@@ -5,7 +5,7 @@
5
5
  :root, :host {
6
6
  --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
7
7
  "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
8
- --font-mono: 'JetBrains Mono', monospace;
8
+ --font-mono: 'IBM Plex Mono', monospace;
9
9
  --color-red-400: oklch(70.4% 0.191 22.216);
10
10
  --color-red-500: oklch(63.7% 0.237 25.331);
11
11
  --color-neutral-400: oklch(70.8% 0 0);
@@ -42,19 +42,19 @@
42
42
  --font-weight-medium: 500;
43
43
  --font-weight-semibold: 600;
44
44
  --font-weight-bold: 700;
45
+ --tracking-normal: 0em;
45
46
  --tracking-wide: 0.025em;
46
47
  --tracking-wider: 0.05em;
47
48
  --leading-tight: 1.25;
48
49
  --leading-snug: 1.375;
49
50
  --leading-relaxed: 1.625;
50
- --radius-sm: 6px;
51
- --radius-md: 10px;
52
- --radius-lg: 14px;
53
- --radius-xl: 18px;
54
- --radius-2xl: 24px;
51
+ --radius-sm: 2px;
52
+ --radius-md: 4px;
53
+ --radius-lg: 6px;
54
+ --radius-xl: 8px;
55
+ --radius-2xl: 8px;
55
56
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
56
57
  --animate-spin: spin 1s linear infinite;
57
- --blur-md: 12px;
58
58
  --default-transition-duration: 150ms;
59
59
  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
60
60
  --default-font-family: var(--font-sans);
@@ -63,9 +63,9 @@
63
63
  --color-base-1: #121212;
64
64
  --color-base-2: #1a1a1a;
65
65
  --color-base-3: #242424;
66
- --color-accent: #6b21a8;
66
+ --color-accent: #621d9e;
67
67
  --color-accent-soft: #8b5cf6;
68
- --color-accent-dark: #581c87;
68
+ --color-accent-dark: #521a80;
69
69
  --color-secondary: #3b82f6;
70
70
  --color-crimson: #ef4444;
71
71
  --color-text: #e0e0e0;
@@ -77,12 +77,14 @@
77
77
  --color-info: #0891b2;
78
78
  --color-surface: var(--color-base-1);
79
79
  --color-panel: var(--color-base-2);
80
- --color-overlay: color-mix(in srgb, black 75%, transparent);
80
+ --color-overlay: color-mix(in srgb, black 85%, transparent);
81
+ --color-border-subtle: color-mix(in srgb, white 8%, transparent);
81
82
  --color-border: color-mix(in srgb, white 15%, transparent);
82
- --color-border-strong: color-mix(in srgb, white 20%, transparent);
83
+ --color-border-strong: color-mix(in srgb, white 25%, transparent);
84
+ --color-border-bright: color-mix(in srgb, white 35%, transparent);
83
85
  --color-border-glow: color-mix(
84
86
  in srgb,
85
- #6b21a8 30%,
87
+ #621d9e 30%,
86
88
  transparent
87
89
  );
88
90
  @supports (color: color-mix(in lab, red, red)) {
@@ -92,9 +94,10 @@
92
94
  transparent
93
95
  );
94
96
  }
97
+ --color-border-metal: color-mix(in srgb, white 25%, transparent);
95
98
  --color-accent-overlay-5: color-mix(
96
99
  in srgb,
97
- #6b21a8 5%,
100
+ #621d9e 5%,
98
101
  transparent
99
102
  );
100
103
  @supports (color: color-mix(in lab, red, red)) {
@@ -106,7 +109,7 @@
106
109
  }
107
110
  --color-accent-overlay-10: color-mix(
108
111
  in srgb,
109
- #6b21a8 10%,
112
+ #621d9e 10%,
110
113
  transparent
111
114
  );
112
115
  @supports (color: color-mix(in lab, red, red)) {
@@ -118,7 +121,7 @@
118
121
  }
119
122
  --color-accent-overlay-15: color-mix(
120
123
  in srgb,
121
- #6b21a8 15%,
124
+ #621d9e 15%,
122
125
  transparent
123
126
  );
124
127
  @supports (color: color-mix(in lab, red, red)) {
@@ -130,7 +133,7 @@
130
133
  }
131
134
  --color-accent-overlay-20: color-mix(
132
135
  in srgb,
133
- #6b21a8 20%,
136
+ #621d9e 20%,
134
137
  transparent
135
138
  );
136
139
  @supports (color: color-mix(in lab, red, red)) {
@@ -142,7 +145,7 @@
142
145
  }
143
146
  --color-accent-overlay-30: color-mix(
144
147
  in srgb,
145
- #6b21a8 30%,
148
+ #621d9e 30%,
146
149
  transparent
147
150
  );
148
151
  @supports (color: color-mix(in lab, red, red)) {
@@ -154,7 +157,7 @@
154
157
  }
155
158
  --color-accent-overlay-50: color-mix(
156
159
  in srgb,
157
- #6b21a8 50%,
160
+ #621d9e 50%,
158
161
  transparent
159
162
  );
160
163
  @supports (color: color-mix(in lab, red, red)) {
@@ -166,7 +169,7 @@
166
169
  }
167
170
  --color-accent-overlay-70: color-mix(
168
171
  in srgb,
169
- #6b21a8 70%,
172
+ #621d9e 70%,
170
173
  transparent
171
174
  );
172
175
  @supports (color: color-mix(in lab, red, red)) {
@@ -310,15 +313,11 @@
310
313
  transparent
311
314
  );
312
315
  }
313
- --shadow-accent-glow: 0 0 20px
314
- color-mix(in srgb, #6b21a8 50%, transparent),
315
- 0 0 40px color-mix(in srgb, #6b21a8 30%, transparent),
316
- 0 0 60px color-mix(in srgb, #6b21a8 15%, transparent);
316
+ --shadow-accent-glow: 0 0 12px
317
+ color-mix(in srgb, #621d9e 25%, transparent);
317
318
  @supports (color: color-mix(in lab, red, red)) {
318
- --shadow-accent-glow: 0 0 20px
319
- color-mix(in srgb, var(--color-accent) 50%, transparent),
320
- 0 0 40px color-mix(in srgb, var(--color-accent) 30%, transparent),
321
- 0 0 60px color-mix(in srgb, var(--color-accent) 15%, transparent);
319
+ --shadow-accent-glow: 0 0 12px
320
+ color-mix(in srgb, var(--color-accent) 25%, transparent);
322
321
  }
323
322
  --shadow-error-glow: 0 0 20px
324
323
  color-mix(in srgb, #ef4444 30%, transparent);
@@ -326,44 +325,42 @@
326
325
  --shadow-error-glow: 0 0 20px
327
326
  color-mix(in srgb, var(--color-error) 30%, transparent);
328
327
  }
329
- --shadow-deep: 0 10px 40px color-mix(in srgb, black 60%, transparent);
330
- --shadow-text-glow: 0 0 20px
331
- color-mix(in srgb, #6b21a8 60%, transparent),
332
- 0 0 40px color-mix(in srgb, #6b21a8 40%, transparent);
328
+ --shadow-deep: 0 8px 24px color-mix(in srgb, black 40%, transparent);
329
+ --shadow-text-glow: 0 0 16px
330
+ color-mix(in srgb, #621d9e 35%, transparent);
333
331
  @supports (color: color-mix(in lab, red, red)) {
334
- --shadow-text-glow: 0 0 20px
335
- color-mix(in srgb, var(--color-accent) 60%, transparent),
336
- 0 0 40px color-mix(in srgb, var(--color-accent) 40%, transparent);
332
+ --shadow-text-glow: 0 0 16px
333
+ color-mix(in srgb, var(--color-accent) 35%, transparent);
337
334
  }
338
- --glass-panel-background: color-mix(in srgb, white 5%, transparent);
339
- --glass-panel-blur: 12px;
335
+ --glass-panel-background: var(--color-base-1);
336
+ --glass-panel-blur: 0px;
340
337
  --radius-none: 0px;
341
338
  --radius-pill: 999px;
342
- --font-heading: 'Inter', sans-serif;
343
- --font-body: 'Inter', sans-serif;
339
+ --font-heading: 'Archivo', sans-serif;
340
+ --font-body: 'Archivo', sans-serif;
344
341
  --text-h1-size: 3.5rem;
345
- --text-h1-line-height: 1.2;
346
- --text-h1-weight: 700;
347
- --text-h1-letter-spacing: -0.02em;
342
+ --text-h1-line-height: 1.1;
343
+ --text-h1-weight: 900;
344
+ --text-h1-letter-spacing: -0.03em;
348
345
  --text-h2-size: 2.5rem;
349
- --text-h2-line-height: 1.25;
350
- --text-h2-weight: 600;
351
- --text-h2-letter-spacing: -0.015em;
346
+ --text-h2-line-height: 1.15;
347
+ --text-h2-weight: 900;
348
+ --text-h2-letter-spacing: -0.03em;
352
349
  --text-h3-size: 2rem;
353
- --text-h3-line-height: 1.3;
354
- --text-h3-weight: 600;
355
- --text-h3-letter-spacing: -0.01em;
350
+ --text-h3-line-height: 1.2;
351
+ --text-h3-weight: 800;
352
+ --text-h3-letter-spacing: -0.02em;
356
353
  --text-h4-size: 1.5rem;
357
- --text-h4-line-height: 1.35;
358
- --text-h4-weight: 600;
359
- --text-h4-letter-spacing: -0.01em;
354
+ --text-h4-line-height: 1.3;
355
+ --text-h4-weight: 700;
356
+ --text-h4-letter-spacing: -0.015em;
360
357
  --text-h5-size: 1.25rem;
361
358
  --text-h5-line-height: 1.4;
362
- --text-h5-weight: 500;
363
- --text-h5-letter-spacing: -0.005em;
359
+ --text-h5-weight: 600;
360
+ --text-h5-letter-spacing: -0.01em;
364
361
  --text-h6-size: 1rem;
365
362
  --text-h6-line-height: 1.5;
366
- --text-h6-weight: 500;
363
+ --text-h6-weight: 600;
367
364
  --text-h6-letter-spacing: 0;
368
365
  --text-body-size: 1rem;
369
366
  --text-body-line-height: 1.6;
@@ -733,6 +730,9 @@
733
730
  max-width: 96rem;
734
731
  }
735
732
  }
733
+ .m-0 {
734
+ margin: calc(var(--spacing) * 0);
735
+ }
736
736
  .mx-0 {
737
737
  margin-inline: calc(var(--spacing) * 0);
738
738
  }
@@ -781,6 +781,9 @@
781
781
  .mt-4 {
782
782
  margin-top: calc(var(--spacing) * 4);
783
783
  }
784
+ .mt-5 {
785
+ margin-top: calc(var(--spacing) * 5);
786
+ }
784
787
  .mt-6 {
785
788
  margin-top: calc(var(--spacing) * 6);
786
789
  }
@@ -811,12 +814,18 @@
811
814
  .mb-4 {
812
815
  margin-bottom: calc(var(--spacing) * 4);
813
816
  }
817
+ .mb-5 {
818
+ margin-bottom: calc(var(--spacing) * 5);
819
+ }
814
820
  .mb-6 {
815
821
  margin-bottom: calc(var(--spacing) * 6);
816
822
  }
817
823
  .mb-8 {
818
824
  margin-bottom: calc(var(--spacing) * 8);
819
825
  }
826
+ .mb-12 {
827
+ margin-bottom: calc(var(--spacing) * 12);
828
+ }
820
829
  .ml-1 {
821
830
  margin-left: calc(var(--spacing) * 1);
822
831
  }
@@ -1159,26 +1168,23 @@
1159
1168
  .animate-\[fade-out_0\.2s_var\(--ease-sharp\)\] {
1160
1169
  animation: fade-out 0.2s var(--ease-sharp);
1161
1170
  }
1162
- .animate-\[fade-up_0\.2s_var\(--ease-luxe\)\] {
1163
- animation: fade-up 0.2s var(--ease-luxe);
1164
- }
1165
- .animate-\[fade-up_0\.3s_var\(--ease-luxe\)\] {
1166
- animation: fade-up 0.3s var(--ease-luxe);
1171
+ .animate-\[scale-in_0\.2s_var\(--ease-sharp\)\] {
1172
+ animation: scale-in 0.2s var(--ease-sharp);
1167
1173
  }
1168
- .animate-\[glow-pulse_3s_ease-in-out_infinite\] {
1169
- animation: glow-pulse 3s ease-in-out infinite;
1174
+ .animate-\[scale-in_0\.15s_var\(--ease-sharp\)\] {
1175
+ animation: scale-in 0.15s var(--ease-sharp);
1170
1176
  }
1171
- .animate-\[slide-in-bottom_0\.3s_var\(--ease-luxe\)\] {
1172
- animation: slide-in-bottom 0.3s var(--ease-luxe);
1177
+ .animate-\[slide-in-bottom_0\.2s_var\(--ease-sharp\)\] {
1178
+ animation: slide-in-bottom 0.2s var(--ease-sharp);
1173
1179
  }
1174
- .animate-\[slide-in-left_0\.3s_var\(--ease-luxe\)\] {
1175
- animation: slide-in-left 0.3s var(--ease-luxe);
1180
+ .animate-\[slide-in-left_0\.2s_var\(--ease-sharp\)\] {
1181
+ animation: slide-in-left 0.2s var(--ease-sharp);
1176
1182
  }
1177
- .animate-\[slide-in-right_0\.3s_var\(--ease-luxe\)\] {
1178
- animation: slide-in-right 0.3s var(--ease-luxe);
1183
+ .animate-\[slide-in-right_0\.2s_var\(--ease-sharp\)\] {
1184
+ animation: slide-in-right 0.2s var(--ease-sharp);
1179
1185
  }
1180
- .animate-\[slide-in-top_0\.3s_var\(--ease-luxe\)\] {
1181
- animation: slide-in-top 0.3s var(--ease-luxe);
1186
+ .animate-\[slide-in-top_0\.2s_var\(--ease-sharp\)\] {
1187
+ animation: slide-in-top 0.2s var(--ease-sharp);
1182
1188
  }
1183
1189
  .animate-\[step-error-shake_0\.4s_var\(--step-ease\)\] {
1184
1190
  animation: step-error-shake 0.4s var(--step-ease);
@@ -1282,6 +1288,9 @@
1282
1288
  .gap-4 {
1283
1289
  gap: calc(var(--spacing) * 4);
1284
1290
  }
1291
+ .gap-5 {
1292
+ gap: calc(var(--spacing) * 5);
1293
+ }
1285
1294
  .gap-6 {
1286
1295
  gap: calc(var(--spacing) * 6);
1287
1296
  }
@@ -1354,9 +1363,6 @@
1354
1363
  .rounded-\[var\(--radius-sm\)\] {
1355
1364
  border-radius: var(--radius-sm);
1356
1365
  }
1357
- .rounded-\[var\(--radius-xl\)\] {
1358
- border-radius: var(--radius-xl);
1359
- }
1360
1366
  .rounded-full {
1361
1367
  border-radius: calc(infinity * 1px);
1362
1368
  }
@@ -1366,19 +1372,23 @@
1366
1372
  .rounded-md {
1367
1373
  border-radius: var(--radius-md);
1368
1374
  }
1375
+ .rounded-none {
1376
+ border-radius: var(--radius-none);
1377
+ }
1369
1378
  .rounded-pill {
1370
1379
  border-radius: var(--radius-pill);
1371
1380
  }
1372
1381
  .rounded-sm {
1373
1382
  border-radius: var(--radius-sm);
1374
1383
  }
1375
- .rounded-xl {
1376
- border-radius: var(--radius-xl);
1377
- }
1378
1384
  .border {
1379
1385
  border-style: var(--tw-border-style);
1380
1386
  border-width: 1px;
1381
1387
  }
1388
+ .border-0 {
1389
+ border-style: var(--tw-border-style);
1390
+ border-width: 0px;
1391
+ }
1382
1392
  .border-2 {
1383
1393
  border-style: var(--tw-border-style);
1384
1394
  border-width: 2px;
@@ -1387,6 +1397,10 @@
1387
1397
  border-style: var(--tw-border-style);
1388
1398
  border-width: 4px;
1389
1399
  }
1400
+ .border-\[1\.5px\] {
1401
+ border-style: var(--tw-border-style);
1402
+ border-width: 1.5px;
1403
+ }
1390
1404
  .border-t {
1391
1405
  border-top-style: var(--tw-border-style);
1392
1406
  border-top-width: 1px;
@@ -1436,12 +1450,18 @@
1436
1450
  .border-\[var\(--color-border\)\] {
1437
1451
  border-color: var(--color-border);
1438
1452
  }
1453
+ .border-\[var\(--color-border-bright\)\] {
1454
+ border-color: var(--color-border-bright);
1455
+ }
1439
1456
  .border-\[var\(--color-border-glow\)\] {
1440
1457
  border-color: var(--color-border-glow);
1441
1458
  }
1442
1459
  .border-\[var\(--color-border-strong\)\] {
1443
1460
  border-color: var(--color-border-strong);
1444
1461
  }
1462
+ .border-\[var\(--color-border-subtle\)\] {
1463
+ border-color: var(--color-border-subtle);
1464
+ }
1445
1465
  .border-\[var\(--color-error\)\] {
1446
1466
  border-color: var(--color-error);
1447
1467
  }
@@ -1544,6 +1564,9 @@
1544
1564
  .bg-\[var\(--color-info-overlay-10\)\] {
1545
1565
  background-color: var(--color-info-overlay-10);
1546
1566
  }
1567
+ .bg-\[var\(--color-neutral-overlay-2\)\] {
1568
+ background-color: var(--color-neutral-overlay-2);
1569
+ }
1547
1570
  .bg-\[var\(--color-secondary-overlay-10\)\] {
1548
1571
  background-color: var(--color-secondary-overlay-10);
1549
1572
  }
@@ -1587,7 +1610,7 @@
1587
1610
  background-color: var(--color-accent-overlay-10);
1588
1611
  }
1589
1612
  .bg-accent\/20 {
1590
- background-color: color-mix(in srgb, #6b21a8 0.2, transparent);
1613
+ background-color: color-mix(in srgb, #621d9e 0.2, transparent);
1591
1614
  @supports (color: color-mix(in lab, red, red)) {
1592
1615
  background-color: color-mix(in oklab, var(--color-accent) var(--opacity-20), transparent);
1593
1616
  }
@@ -1658,9 +1681,15 @@
1658
1681
  .px-2 {
1659
1682
  padding-inline: calc(var(--spacing) * 2);
1660
1683
  }
1684
+ .px-2\.5 {
1685
+ padding-inline: calc(var(--spacing) * 2.5);
1686
+ }
1661
1687
  .px-3 {
1662
1688
  padding-inline: calc(var(--spacing) * 3);
1663
1689
  }
1690
+ .px-3\.5 {
1691
+ padding-inline: calc(var(--spacing) * 3.5);
1692
+ }
1664
1693
  .px-4 {
1665
1694
  padding-inline: calc(var(--spacing) * 4);
1666
1695
  }
@@ -1709,9 +1738,6 @@
1709
1738
  .pt-0\.5 {
1710
1739
  padding-top: calc(var(--spacing) * 0.5);
1711
1740
  }
1712
- .pt-3 {
1713
- padding-top: calc(var(--spacing) * 3);
1714
- }
1715
1741
  .pt-6 {
1716
1742
  padding-top: calc(var(--spacing) * 6);
1717
1743
  }
@@ -1825,6 +1851,10 @@
1825
1851
  --tw-font-weight: var(--font-heading);
1826
1852
  font-weight: var(--font-heading);
1827
1853
  }
1854
+ .font-\[var\(--font-mono\)\] {
1855
+ --tw-font-weight: var(--font-mono);
1856
+ font-weight: var(--font-mono);
1857
+ }
1828
1858
  .font-bold {
1829
1859
  --tw-font-weight: var(--font-weight-bold);
1830
1860
  font-weight: var(--font-weight-bold);
@@ -1837,6 +1867,14 @@
1837
1867
  --tw-font-weight: var(--font-weight-semibold);
1838
1868
  font-weight: var(--font-weight-semibold);
1839
1869
  }
1870
+ .tracking-\[0\.08em\] {
1871
+ --tw-tracking: 0.08em;
1872
+ letter-spacing: 0.08em;
1873
+ }
1874
+ .tracking-normal {
1875
+ --tw-tracking: var(--tracking-normal);
1876
+ letter-spacing: var(--tracking-normal);
1877
+ }
1840
1878
  .tracking-wide {
1841
1879
  --tw-tracking: var(--tracking-wide);
1842
1880
  letter-spacing: var(--tracking-wide);
@@ -1941,6 +1979,9 @@
1941
1979
  .lowercase {
1942
1980
  text-transform: lowercase;
1943
1981
  }
1982
+ .normal-case {
1983
+ text-transform: none;
1984
+ }
1944
1985
  .uppercase {
1945
1986
  text-transform: uppercase;
1946
1987
  }
@@ -1991,10 +2032,6 @@
1991
2032
  --tw-shadow: 0 0 12px var(--tw-shadow-color, var(--step-error-glow));
1992
2033
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1993
2034
  }
1994
- .shadow-\[0_0_20px_var\(--color-error-overlay-30\)\] {
1995
- --tw-shadow: 0 0 20px var(--tw-shadow-color, var(--color-error-overlay-30));
1996
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1997
- }
1998
2035
  .shadow-\[0_0_20px_var\(--step-active-glow\)\] {
1999
2036
  --tw-shadow: 0 0 20px var(--tw-shadow-color, var(--step-active-glow));
2000
2037
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2004,7 +2041,7 @@
2004
2041
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2005
2042
  }
2006
2043
  .shadow-deep {
2007
- --tw-shadow: 0 10px 40px var(--tw-shadow-color, color-mix(in srgb, black 60%, transparent));
2044
+ --tw-shadow: 0 8px 24px var(--tw-shadow-color, color-mix(in srgb, black 40%, transparent));
2008
2045
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2009
2046
  }
2010
2047
  .shadow-xl {
@@ -2040,11 +2077,6 @@
2040
2077
  .filter {
2041
2078
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
2042
2079
  }
2043
- .backdrop-blur-md {
2044
- --tw-backdrop-blur: blur(var(--blur-md));
2045
- -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2046
- backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2047
- }
2048
2080
  .backdrop-filter {
2049
2081
  -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2050
2082
  backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
@@ -2159,26 +2191,6 @@
2159
2191
  background-color: var(--color-accent);
2160
2192
  }
2161
2193
  }
2162
- .hover\:scale-105 {
2163
- &:hover {
2164
- @media (hover: hover) {
2165
- --tw-scale-x: 105%;
2166
- --tw-scale-y: 105%;
2167
- --tw-scale-z: 105%;
2168
- scale: var(--tw-scale-x) var(--tw-scale-y);
2169
- }
2170
- }
2171
- }
2172
- .hover\:scale-110 {
2173
- &:hover {
2174
- @media (hover: hover) {
2175
- --tw-scale-x: 110%;
2176
- --tw-scale-y: 110%;
2177
- --tw-scale-z: 110%;
2178
- scale: var(--tw-scale-x) var(--tw-scale-y);
2179
- }
2180
- }
2181
- }
2182
2194
  .hover\:scale-\[1\.01\] {
2183
2195
  &:hover {
2184
2196
  @media (hover: hover) {
@@ -2186,17 +2198,17 @@
2186
2198
  }
2187
2199
  }
2188
2200
  }
2189
- .hover\:scale-\[1\.02\] {
2201
+ .hover\:border-\[var\(--color-accent\)\] {
2190
2202
  &:hover {
2191
2203
  @media (hover: hover) {
2192
- scale: 1.02;
2204
+ border-color: var(--color-accent);
2193
2205
  }
2194
2206
  }
2195
2207
  }
2196
- .hover\:border-\[var\(--color-accent\)\] {
2208
+ .hover\:border-\[var\(--color-border-strong\)\] {
2197
2209
  &:hover {
2198
2210
  @media (hover: hover) {
2199
- border-color: var(--color-accent);
2211
+ border-color: var(--color-border-strong);
2200
2212
  }
2201
2213
  }
2202
2214
  }
@@ -2214,6 +2226,13 @@
2214
2226
  }
2215
2227
  }
2216
2228
  }
2229
+ .hover\:bg-\[var\(--color-accent-soft\)\] {
2230
+ &:hover {
2231
+ @media (hover: hover) {
2232
+ background-color: var(--color-accent-soft);
2233
+ }
2234
+ }
2235
+ }
2217
2236
  .hover\:bg-\[var\(--color-base-2\)\] {
2218
2237
  &:hover {
2219
2238
  @media (hover: hover) {
@@ -2326,14 +2345,6 @@
2326
2345
  }
2327
2346
  }
2328
2347
  }
2329
- .hover\:shadow-\[0_0_12px_var\(--color-accent-overlay-30\)\] {
2330
- &:hover {
2331
- @media (hover: hover) {
2332
- --tw-shadow: 0 0 12px var(--tw-shadow-color, var(--color-accent-overlay-30));
2333
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2334
- }
2335
- }
2336
- }
2337
2348
  .hover\:shadow-\[var\(--shadow-accent-glow\)\] {
2338
2349
  &:hover {
2339
2350
  @media (hover: hover) {
@@ -2342,7 +2353,7 @@
2342
2353
  }
2343
2354
  }
2344
2355
  }
2345
- .focus\:border-accent {
2356
+ .focus\:border-\[var\(--color-accent\)\] {
2346
2357
  &:focus {
2347
2358
  border-color: var(--color-accent);
2348
2359
  }
@@ -2385,6 +2396,12 @@
2385
2396
  outline-style: none;
2386
2397
  }
2387
2398
  }
2399
+ .active\:translate-y-px {
2400
+ &:active {
2401
+ --tw-translate-y: 1px;
2402
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2403
+ }
2404
+ }
2388
2405
  .disabled\:cursor-not-allowed {
2389
2406
  &:disabled {
2390
2407
  cursor: not-allowed;
@@ -2518,6 +2535,12 @@
2518
2535
  }
2519
2536
  }
2520
2537
  }
2538
+ [data-display='bodoni'] {
2539
+ --font-heading: 'Bodoni Moda', serif;
2540
+ }
2541
+ [data-display='oswald'] {
2542
+ --font-heading: 'Oswald', sans-serif;
2543
+ }
2521
2544
  * {
2522
2545
  box-sizing: border-box;
2523
2546
  }
@@ -2531,11 +2554,11 @@
2531
2554
  }
2532
2555
  ::-webkit-scrollbar-track {
2533
2556
  background: var(--color-base-2);
2534
- border-radius: var(--radius-sm);
2557
+ border-radius: 0;
2535
2558
  }
2536
2559
  ::-webkit-scrollbar-thumb {
2537
2560
  background: var(--color-accent-overlay-30);
2538
- border-radius: var(--radius-sm);
2561
+ border-radius: 0;
2539
2562
  border: 2px solid var(--color-base-2);
2540
2563
  transition: background 0.2s var(--ease-luxe);
2541
2564
  }
@@ -2615,26 +2638,17 @@ code,
2615
2638
  pre {
2616
2639
  font-family: var(--font-mono);
2617
2640
  }
2618
- select:focus {
2619
- box-shadow: 0 0 0 2px var(--color-accent-overlay-20),
2620
- var(--shadow-accent-glow);
2621
- border-color: var(--color-accent);
2622
- }
2623
- input:focus {
2624
- box-shadow: 0 0 0 2px var(--color-accent-overlay-20),
2625
- var(--shadow-accent-glow);
2626
- border-color: var(--color-accent);
2627
- }
2641
+ select:focus,
2642
+ input:focus,
2628
2643
  textarea:focus {
2629
- box-shadow: 0 0 0 2px var(--color-accent-overlay-20),
2630
- var(--shadow-accent-glow);
2644
+ outline: none;
2631
2645
  border-color: var(--color-accent);
2646
+ box-shadow: 0 0 0 1px var(--color-accent);
2632
2647
  }
2633
2648
  .glass-panel {
2634
- backdrop-filter: blur(var(--glass-panel-blur));
2635
2649
  background: var(--glass-panel-background);
2636
2650
  border: 1px solid var(--color-border);
2637
- box-shadow: var(--shadow-deep);
2651
+ box-shadow: inset 0 1px 0 color-mix(in srgb, white 4%, transparent);
2638
2652
  }
2639
2653
  .panel-base {
2640
2654
  background: linear-gradient(
@@ -2642,7 +2656,7 @@ textarea:focus {
2642
2656
  var(--color-base-1),
2643
2657
  var(--color-base-0)
2644
2658
  );
2645
- border: 1px solid var(--color-border);
2659
+ border: 1px solid var(--color-border-subtle);
2646
2660
  box-shadow: none;
2647
2661
  }
2648
2662
  .panel-raised {
@@ -2651,8 +2665,10 @@ textarea:focus {
2651
2665
  var(--color-base-2),
2652
2666
  var(--color-base-1)
2653
2667
  );
2654
- border: 1px solid var(--color-border);
2655
- box-shadow: 0 6px 18px color-mix(in srgb, black 55%, transparent);
2668
+ border: 1px solid var(--color-border-strong);
2669
+ border-top-color: color-mix(in srgb, white 28%, transparent);
2670
+ box-shadow: inset 0 1px 0 color-mix(in srgb, white 4%, transparent),
2671
+ 0 2px 12px color-mix(in srgb, black 45%, transparent);
2656
2672
  }
2657
2673
  .panel-floating {
2658
2674
  background: linear-gradient(
@@ -2661,25 +2677,29 @@ textarea:focus {
2661
2677
  var(--color-base-2)
2662
2678
  );
2663
2679
  border: 1px solid var(--color-border-strong);
2664
- box-shadow: 0 12px 30px color-mix(in srgb, black 65%, transparent);
2680
+ border-top-color: color-mix(in srgb, white 32%, transparent);
2681
+ box-shadow: inset 0 1px 0 color-mix(in srgb, white 5%, transparent),
2682
+ var(--shadow-deep);
2665
2683
  }
2666
2684
  .panel-spectral {
2667
2685
  background: linear-gradient(
2668
2686
  180deg,
2669
- color-mix(in srgb, #1a1a1a 92%, black),
2670
- color-mix(in srgb, #121212 96%, black)
2687
+ color-mix(in srgb, #0a0a0a 55%, #121212),
2688
+ var(--color-base-1)
2671
2689
  );
2672
2690
  @supports (color: color-mix(in lab, red, red)) {
2673
2691
  background: linear-gradient(
2674
2692
  180deg,
2675
- color-mix(in srgb, var(--color-base-2) 92%, black),
2676
- color-mix(in srgb, var(--color-base-1) 96%, black)
2693
+ color-mix(in srgb, var(--color-base-0) 55%, var(--color-base-1)),
2694
+ var(--color-base-1)
2677
2695
  );
2678
2696
  }
2679
2697
  border: 1px solid var(--color-border);
2680
- box-shadow: 0 10px 28px color-mix(in srgb, black 70%, transparent);
2698
+ border-bottom-color: color-mix(in srgb, white 22%, transparent);
2699
+ box-shadow: inset 0 2px 10px color-mix(in srgb, black 45%, transparent);
2681
2700
  }
2682
- .glass-panel.error-state {
2701
+ .glass-panel.error-state,
2702
+ .input-well.error-state {
2683
2703
  border-color: var(--color-error) !important;
2684
2704
  box-shadow: 0 0 0 3px var(--color-error-overlay-10),
2685
2705
  var(--shadow-error-glow);
@@ -2688,11 +2708,18 @@ textarea:focus {
2688
2708
  box-shadow: var(--shadow-accent-glow);
2689
2709
  }
2690
2710
  .hover-lift {
2691
- transition: all 0.3s var(--ease-sharp);
2711
+ transition: border-color 180ms var(--ease-sharp),
2712
+ transform 180ms var(--ease-sharp),
2713
+ filter 180ms var(--ease-sharp),
2714
+ background-color 180ms var(--ease-sharp);
2692
2715
  }
2693
2716
  .hover-lift:hover {
2694
- transform: translateY(-4px);
2695
- box-shadow: var(--shadow-accent-glow), var(--shadow-deep);
2717
+ border-color: var(--color-border-bright);
2718
+ transform: translateY(-2px);
2719
+ filter: brightness(1.08);
2720
+ }
2721
+ .hover-lift:active {
2722
+ transform: translateY(0);
2696
2723
  }
2697
2724
  .drag-child {
2698
2725
  transition: all var(--duration-200) var(--ease-luxe);
@@ -2816,6 +2843,31 @@ textarea:focus {
2816
2843
  border-top: 1px solid var(--color-border-metal);
2817
2844
  border-left: 0.5px solid var(--color-border-metal);
2818
2845
  }
2846
+ .machined {
2847
+ box-shadow: inset 0 1px 0 color-mix(in srgb, white 14%, transparent),
2848
+ inset 0 -1px 0 color-mix(in srgb, black 25%, transparent),
2849
+ 0 1px 3px color-mix(in srgb, black 40%, transparent);
2850
+ }
2851
+ .accent-edge {
2852
+ border-left: 2px solid var(--color-accent);
2853
+ }
2854
+ .input-well {
2855
+ background: color-mix(in srgb, #0a0a0a 50%, #121212);
2856
+ @supports (color: color-mix(in lab, red, red)) {
2857
+ background: color-mix(in srgb, var(--color-base-0) 50%, var(--color-base-1));
2858
+ }
2859
+ border: 1px solid var(--color-border);
2860
+ box-shadow: inset 0 1px 3px color-mix(in srgb, black 35%, transparent);
2861
+ transition: background-color 180ms var(--ease-sharp),
2862
+ border-color 180ms var(--ease-sharp),
2863
+ transform 180ms var(--ease-sharp),
2864
+ box-shadow 180ms var(--ease-sharp);
2865
+ }
2866
+ .input-well:focus,
2867
+ .input-well:focus-within {
2868
+ background: var(--color-base-1);
2869
+ transform: translateY(-1px);
2870
+ }
2819
2871
  .obsidian-surface {
2820
2872
  background: linear-gradient(
2821
2873
  145deg,
@@ -2833,8 +2885,8 @@ textarea:focus {
2833
2885
  .sidebar-collapsed-letter {
2834
2886
  width: 2.5rem;
2835
2887
  height: 2.5rem;
2836
- border-radius: var(--radius-pill);
2837
- background: color-mix(in srgb, #6b21a8 20%, transparent);
2888
+ border-radius: var(--radius-sm);
2889
+ background: color-mix(in srgb, #621d9e 20%, transparent);
2838
2890
  @supports (color: color-mix(in lab, red, red)) {
2839
2891
  background: color-mix(in srgb, var(--color-accent) 20%, transparent);
2840
2892
  }
@@ -3116,49 +3168,14 @@ textarea:focus {
3116
3168
  opacity: 1;
3117
3169
  }
3118
3170
  }
3119
- @keyframes fade-up {
3171
+ @keyframes scale-in {
3120
3172
  from {
3121
3173
  opacity: 0;
3122
- transform: translateY(20px);
3174
+ transform: scale(0.98);
3123
3175
  }
3124
3176
  to {
3125
3177
  opacity: 1;
3126
- transform: translateY(0);
3127
- }
3128
- }
3129
- @keyframes glow-pulse {
3130
- 0%,
3131
- 100% {
3132
- box-shadow: 0 0 20px
3133
- color-mix(in srgb, #6b21a8 50%, transparent),
3134
- 0 0 40px
3135
- color-mix(in srgb, #6b21a8 30%, transparent),
3136
- 0 0 60px
3137
- color-mix(in srgb, #6b21a8 15%, transparent);
3138
- @supports (color: color-mix(in lab, red, red)) {
3139
- box-shadow: 0 0 20px
3140
- color-mix(in srgb, var(--color-accent) 50%, transparent),
3141
- 0 0 40px
3142
- color-mix(in srgb, var(--color-accent) 30%, transparent),
3143
- 0 0 60px
3144
- color-mix(in srgb, var(--color-accent) 15%, transparent);
3145
- }
3146
- }
3147
- 50% {
3148
- box-shadow: 0 0 30px
3149
- color-mix(in srgb, #6b21a8 70%, transparent),
3150
- 0 0 60px
3151
- color-mix(in srgb, #6b21a8 40%, transparent),
3152
- 0 0 90px
3153
- color-mix(in srgb, #6b21a8 20%, transparent);
3154
- @supports (color: color-mix(in lab, red, red)) {
3155
- box-shadow: 0 0 30px
3156
- color-mix(in srgb, var(--color-accent) 70%, transparent),
3157
- 0 0 60px
3158
- color-mix(in srgb, var(--color-accent) 40%, transparent),
3159
- 0 0 90px
3160
- color-mix(in srgb, var(--color-accent) 20%, transparent);
3161
- }
3178
+ transform: scale(1);
3162
3179
  }
3163
3180
  }
3164
3181
  @keyframes fade-out {