@cellarnode/ui 0.209.2 → 0.211.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 (95) hide show
  1. package/dist/agent/confirm-card.d.ts +9 -0
  2. package/dist/agent/confirm-card.d.ts.map +1 -1
  3. package/dist/agent/confirm-card.js +28 -2
  4. package/dist/agent/confirm-card.js.map +1 -1
  5. package/dist/agent/conversation.d.ts +10 -0
  6. package/dist/agent/conversation.d.ts.map +1 -1
  7. package/dist/agent/conversation.js +4 -4
  8. package/dist/agent/conversation.js.map +1 -1
  9. package/dist/agent/index.d.ts +1 -1
  10. package/dist/agent/index.d.ts.map +1 -1
  11. package/dist/agent/index.js.map +1 -1
  12. package/dist/agent/message.d.ts +4 -1
  13. package/dist/agent/message.d.ts.map +1 -1
  14. package/dist/agent/message.js +2 -2
  15. package/dist/agent/message.js.map +1 -1
  16. package/dist/agent/schema.d.ts +25 -0
  17. package/dist/agent/schema.d.ts.map +1 -1
  18. package/dist/agent/schema.js +7 -0
  19. package/dist/agent/schema.js.map +1 -1
  20. package/dist/agent/states.d.ts +24 -1
  21. package/dist/agent/states.d.ts.map +1 -1
  22. package/dist/agent/states.js +35 -6
  23. package/dist/agent/states.js.map +1 -1
  24. package/dist/components/filter-chips.d.ts +23 -0
  25. package/dist/components/filter-chips.d.ts.map +1 -0
  26. package/dist/components/filter-chips.js +6 -0
  27. package/dist/components/filter-chips.js.map +1 -0
  28. package/dist/components/importer-picker-modal.js +5 -5
  29. package/dist/components/importer-picker-modal.js.map +1 -1
  30. package/dist/components/page-header.d.ts +9 -0
  31. package/dist/components/page-header.d.ts.map +1 -0
  32. package/dist/components/page-header.js +7 -0
  33. package/dist/components/page-header.js.map +1 -0
  34. package/dist/components/segmented-tabs.d.ts +19 -0
  35. package/dist/components/segmented-tabs.d.ts.map +1 -0
  36. package/dist/components/segmented-tabs.js +7 -0
  37. package/dist/components/segmented-tabs.js.map +1 -0
  38. package/dist/fic-label-renderer/brand-font.js +2 -2
  39. package/dist/globe/svg-globe-geo.d.ts +16 -0
  40. package/dist/globe/svg-globe-geo.d.ts.map +1 -0
  41. package/dist/globe/svg-globe-geo.js +48 -0
  42. package/dist/globe/svg-globe-geo.js.map +1 -0
  43. package/dist/globe/svg-globe-map-layer.d.ts +18 -0
  44. package/dist/globe/svg-globe-map-layer.d.ts.map +1 -0
  45. package/dist/globe/svg-globe-map-layer.js +47 -0
  46. package/dist/globe/svg-globe-map-layer.js.map +1 -0
  47. package/dist/globe/svg-globe-pin-layer.d.ts +17 -0
  48. package/dist/globe/svg-globe-pin-layer.d.ts.map +1 -0
  49. package/dist/globe/svg-globe-pin-layer.js +111 -0
  50. package/dist/globe/svg-globe-pin-layer.js.map +1 -0
  51. package/dist/globe/svg-globe-renderer.d.ts +3 -0
  52. package/dist/globe/svg-globe-renderer.d.ts.map +1 -0
  53. package/dist/globe/svg-globe-renderer.js +57 -0
  54. package/dist/globe/svg-globe-renderer.js.map +1 -0
  55. package/dist/globe/svg-globe.css +247 -0
  56. package/dist/globe/svg-globe.d.ts +46 -0
  57. package/dist/globe/svg-globe.d.ts.map +1 -0
  58. package/dist/globe/svg-globe.js +45 -0
  59. package/dist/globe/svg-globe.js.map +1 -0
  60. package/dist/globe/svg.d.ts +9 -0
  61. package/dist/globe/svg.d.ts.map +1 -0
  62. package/dist/globe/svg.js +6 -0
  63. package/dist/globe/svg.js.map +1 -0
  64. package/dist/globe/use-svg-globe-gestures.d.ts +21 -0
  65. package/dist/globe/use-svg-globe-gestures.d.ts.map +1 -0
  66. package/dist/globe/use-svg-globe-gestures.js +190 -0
  67. package/dist/globe/use-svg-globe-gestures.js.map +1 -0
  68. package/dist/globe/use-svg-globe-item-interactions.d.ts +20 -0
  69. package/dist/globe/use-svg-globe-item-interactions.d.ts.map +1 -0
  70. package/dist/globe/use-svg-globe-item-interactions.js +66 -0
  71. package/dist/globe/use-svg-globe-item-interactions.js.map +1 -0
  72. package/dist/globe/use-svg-globe-navigation.d.ts +17 -0
  73. package/dist/globe/use-svg-globe-navigation.d.ts.map +1 -0
  74. package/dist/globe/use-svg-globe-navigation.js +107 -0
  75. package/dist/globe/use-svg-globe-navigation.js.map +1 -0
  76. package/dist/index.d.ts +3 -0
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +3 -0
  79. package/dist/index.js.map +1 -1
  80. package/dist/product-editor/product-editor-surface.d.ts.map +1 -1
  81. package/dist/product-editor/product-editor-surface.js +5 -3
  82. package/dist/product-editor/product-editor-surface.js.map +1 -1
  83. package/dist/product-editor/tabs/product-status-tab.js +4 -4
  84. package/package.json +30 -23
  85. package/src/theme/fonts/OFL-Hanken-Grotesk.txt +93 -0
  86. package/src/theme/fonts/OFL-Instrument-Sans.txt +93 -0
  87. package/src/theme/fonts/OFL-JetBrains-Mono.txt +93 -0
  88. package/src/theme/fonts/README.md +20 -0
  89. package/src/theme/fonts/hanken-grotesk-latin-ext-wght-normal.woff2 +0 -0
  90. package/src/theme/fonts/hanken-grotesk-latin-wght-normal.woff2 +0 -0
  91. package/src/theme/fonts/instrument-sans-latin-ext-wght-normal.woff2 +0 -0
  92. package/src/theme/fonts/instrument-sans-latin-wght-normal.woff2 +0 -0
  93. package/src/theme/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
  94. package/src/theme/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
  95. package/src/theme/tokens.css +145 -67
@@ -1,19 +1,61 @@
1
- /* @cellarnode/ui — Canonical Design Tokens
2
- * Import in your app: @import "@cellarnode/ui/theme/tokens.css";
3
- * Then import tailwindcss after it.
4
- *
5
- * FONT CONTRACT (CEL-84):
6
- * --font-inter and --font-sora MUST be bound by the consumer BEFORE this
7
- * file is imported. The lib does not vendor font files. See
8
- * ../../FONTS.md (or FONTS.md at the package root) for the full contract,
9
- * recommended @font-face blocks, and override-only fallback.
10
- * If unbound, the stacks fall through to ui-sans-serif / system-ui /
11
- * sans-serif — readable, but not design-system-matching.
12
- */
1
+ @font-face {
2
+ font-family: "Instrument Sans Variable";
3
+ font-style: normal;
4
+ font-display: swap;
5
+ font-weight: 400 700;
6
+ src: url("./fonts/instrument-sans-latin-ext-wght-normal.woff2") format("woff2-variations");
7
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
8
+ }
9
+
10
+ @font-face {
11
+ font-family: "Instrument Sans Variable";
12
+ font-style: normal;
13
+ font-display: swap;
14
+ font-weight: 400 700;
15
+ src: url("./fonts/instrument-sans-latin-wght-normal.woff2") format("woff2-variations");
16
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
17
+ }
18
+
19
+ @font-face {
20
+ font-family: "Hanken Grotesk Variable";
21
+ font-style: normal;
22
+ font-display: swap;
23
+ font-weight: 100 900;
24
+ src: url("./fonts/hanken-grotesk-latin-ext-wght-normal.woff2") format("woff2-variations");
25
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
26
+ }
27
+
28
+ @font-face {
29
+ font-family: "Hanken Grotesk Variable";
30
+ font-style: normal;
31
+ font-display: swap;
32
+ font-weight: 100 900;
33
+ src: url("./fonts/hanken-grotesk-latin-wght-normal.woff2") format("woff2-variations");
34
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
35
+ }
36
+
37
+ @font-face {
38
+ font-family: "JetBrains Mono Variable";
39
+ font-style: normal;
40
+ font-display: swap;
41
+ font-weight: 100 800;
42
+ src: url("./fonts/jetbrains-mono-latin-ext-wght-normal.woff2") format("woff2-variations");
43
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
44
+ }
45
+
46
+ @font-face {
47
+ font-family: "JetBrains Mono Variable";
48
+ font-style: normal;
49
+ font-display: swap;
50
+ font-weight: 100 800;
51
+ src: url("./fonts/jetbrains-mono-latin-wght-normal.woff2") format("woff2-variations");
52
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
53
+ }
13
54
 
14
55
  @theme inline {
15
- --font-sans: var(--font-inter), ui-sans-serif, system-ui, sans-serif;
16
- --font-display: var(--font-sora), ui-sans-serif, system-ui, sans-serif;
56
+ --font-sans: "Instrument Sans Variable", ui-sans-serif, system-ui, sans-serif;
57
+ --font-display: "Hanken Grotesk Variable", ui-sans-serif, system-ui, sans-serif;
58
+ --font-mono: "JetBrains Mono Variable", ui-monospace, monospace;
17
59
 
18
60
  --color-background: var(--background);
19
61
  --color-foreground: var(--foreground);
@@ -25,6 +67,8 @@
25
67
  --color-popover-foreground: var(--popover-foreground);
26
68
  --color-primary: var(--primary);
27
69
  --color-primary-foreground: var(--primary-foreground);
70
+ --color-primary-soft: var(--primary-soft);
71
+ --color-primary-soft-foreground: var(--primary-soft-foreground);
28
72
  --color-secondary: var(--secondary);
29
73
  --color-secondary-foreground: var(--secondary-foreground);
30
74
  --color-muted: var(--muted);
@@ -35,12 +79,15 @@
35
79
  --color-accent-secondary-foreground: var(--accent-secondary-foreground);
36
80
  --color-success: var(--success);
37
81
  --color-success-foreground: var(--success-foreground);
82
+ --color-success-soft: var(--success-soft);
38
83
  --color-warning: var(--warning);
39
84
  --color-warning-foreground: var(--warning-foreground);
85
+ --color-warning-soft: var(--warning-soft);
40
86
  --color-destructive: var(--destructive);
41
87
  --color-destructive-foreground: var(--destructive-foreground);
42
88
  --color-info: var(--info);
43
89
  --color-info-foreground: var(--info-foreground);
90
+ --color-info-soft: var(--info-soft);
44
91
  --color-border: var(--border);
45
92
  --color-input: var(--input);
46
93
  --color-input-hover: var(--input-hover);
@@ -93,6 +140,13 @@
93
140
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
94
141
  --color-sidebar-border: var(--sidebar-border);
95
142
  --color-sidebar-ring: var(--sidebar-ring);
143
+ --color-sidebar-muted: var(--sidebar-muted);
144
+ --color-canvas: var(--canvas);
145
+ --color-bubble-own: var(--bubble-own);
146
+ --color-bubble-own-foreground: var(--bubble-own-foreground);
147
+ --color-bubble-other: var(--bubble-other);
148
+ --color-label-ink: var(--label-ink);
149
+ --color-label-paper: var(--label-paper);
96
150
 
97
151
  /* Marketing surface tokens (CEL-726): semantic page/CTA surfaces for the
98
152
  marketing kit so consumers use bg-surface-soft / bg-surface-strong instead
@@ -156,6 +210,7 @@
156
210
  `shadow-soft` / `shadow-medium` compiled to nothing. */
157
211
  --shadow-soft: var(--shadow-soft);
158
212
  --shadow-medium: var(--shadow-medium);
213
+ --shadow-lift: var(--shadow-lift);
159
214
  --shadow-glow: var(--shadow-glow);
160
215
  --shadow-warm-glow: var(--shadow-warm-glow);
161
216
 
@@ -356,10 +411,13 @@
356
411
  }
357
412
 
358
413
  :root {
359
- --radius: 1.2rem;
414
+ --radius: 0.75rem;
360
415
  --glass-blur: 16px;
361
416
  --field-placeholder: oklch(0.5 0.018 182);
362
417
  --overlay-tinted: oklch(0.18 0.012 180);
418
+ --canvas: oklch(0.965 0.008 120);
419
+ --label-ink: oklch(0.2 0.04 220);
420
+ --label-paper: var(--regulated-mark-contrast-surface);
363
421
  /* Fixed carrier for approved artwork. Theme and brand tokens cannot reduce its contrast. */
364
422
  --regulated-mark-contrast-surface: oklch(0.985 0.003 95);
365
423
  --fic-label-foreground: oklch(0.141 0.005 285.823);
@@ -398,6 +456,7 @@
398
456
 
399
457
  --print-paper: oklch(0.995 0.002 95);
400
458
  --print-ink: var(--light-foreground);
459
+ --shadow-lift: var(--shadow-medium);
401
460
 
402
461
  /* Gutter between the AppShell's dark surround and its rounded content card,
403
462
  mirroring the shell's own `p-2 pt-0 lg:pt-2 lg:pl-1`. Declared on :root
@@ -419,13 +478,13 @@
419
478
  --app-shell-overlay-safe-bottom: max(1rem, env(safe-area-inset-bottom));
420
479
  --notification-tray-badge-ring: var(--card);
421
480
 
422
- --background: oklch(0.995 0.002 95);
423
- --foreground: var(--light-foreground);
424
- --card: color-mix(in oklab, white 98.5%, oklch(0.40 0.062 178) 1.5%);
481
+ --background: oklch(0.99 0.004 100);
482
+ --foreground: oklch(0.22 0.025 165);
483
+ --card: oklch(1 0 0);
425
484
  --card-foreground: var(--foreground);
426
- --card-elevated: color-mix(in oklch, var(--card), white 6%);
427
- --card-feature: color-mix(in oklab, white 96%, oklch(0.40 0.062 178) 4%);
428
- --popover: color-mix(in oklab, white 98.5%, oklch(0.40 0.062 178) 1.5%);
485
+ --card-elevated: color-mix(in oklch, var(--card), oklch(0.965 0.008 120) 6%);
486
+ --card-feature: oklch(0.985 0.012 155);
487
+ --popover: var(--card);
429
488
  --popover-foreground: var(--foreground);
430
489
 
431
490
  /* Marketing surfaces (CEL-726). surface-soft: warm page surface, sits between
@@ -438,14 +497,16 @@
438
497
  --surface-strong: oklch(0.22 0.012 180);
439
498
  --surface-strong-foreground: var(--primary-foreground);
440
499
 
441
- --primary: oklch(0.40 0.062 178);
500
+ --primary: oklch(0.36 0.06 168);
442
501
  --primary-foreground: oklch(0.988 0.004 98);
443
- --secondary: color-mix(in oklab, white 95%, var(--primary) 5%);
444
- --secondary-foreground: color-mix(in oklab, black 54%, var(--primary) 46%);
445
- --muted: color-mix(in oklab, white 96%, var(--foreground) 4%);
502
+ --primary-soft: oklch(0.94 0.03 160);
503
+ --primary-soft-foreground: oklch(0.3 0.06 168);
504
+ --secondary: oklch(0.955 0.01 110);
505
+ --secondary-foreground: oklch(0.28 0.03 165);
506
+ --muted: oklch(0.96 0.008 110);
446
507
  --muted-foreground: var(--light-muted-foreground);
447
- --accent: color-mix(in oklab, white 94%, var(--primary) 6%);
448
- --accent-foreground: color-mix(in oklab, black 48%, var(--primary) 52%);
508
+ --accent: oklch(0.95 0.015 140);
509
+ --accent-foreground: oklch(0.28 0.05 168);
449
510
  --accent-secondary: oklch(0.666 0.179 58.318);
450
511
  --accent-secondary-foreground: oklch(0.29 0.045 58.318);
451
512
  /* L 0.56 -> 0.54: near-white --success-foreground on a --success solid (badge/
@@ -456,6 +517,7 @@
456
517
  See CEL-494. */
457
518
  --success: var(--light-success);
458
519
  --success-foreground: var(--light-success-foreground);
520
+ --success-soft: oklch(0.94 0.05 155);
459
521
  /* CEL-681: --warning is now its own hue (yellow-amber h76) distinct from
460
522
  --accent-secondary (warm amber h58 used by the "Your range" band).
461
523
  L 0.50 / C 0.102 (sRGB gamut limit at h76) is the highest lightness at
@@ -466,11 +528,13 @@
466
528
  derivatives inherit the hue automatically. */
467
529
  --warning: var(--light-warning);
468
530
  --warning-foreground: var(--light-warning-foreground);
531
+ --warning-soft: oklch(0.95 0.05 80);
469
532
  --destructive: var(--light-destructive);
470
533
  --destructive-foreground: var(--light-destructive-foreground);
471
- --info: var(--light-info); /* approachable blue */
534
+ --info: oklch(0.43 0.1 230);
472
535
  --info-foreground: var(--light-info-foreground); /* near-white */
473
- --border: color-mix(in oklab, white 88%, var(--primary) 12%);
536
+ --info-soft: oklch(0.95 0.03 230);
537
+ --border: oklch(0.91 0.01 120);
474
538
  /* CEL-2379: WCAG 2.2 SC 1.4.11 needs a form control's boundary at >= 3:1 against what it sits on
475
539
  (--card, --background, --muted, --popover). The old 10% tint measured ~1.17:1. These two ARE the boundary
476
540
  of every text field, select, combobox, listbox, textarea, checkbox and radio; they are tinted from the brand
@@ -542,8 +606,8 @@
542
606
  --surface-selected: color-mix(in oklab, white 90%, var(--primary) 10%);
543
607
  --panel-border-strong: color-mix(in oklab, var(--border) 84%, var(--primary) 16%);
544
608
  --panel-shadow: 0 26px 60px -34px oklch(0.2 0.005 230 / 0.12);
545
- --shadow-soft: 0 18px 42px -30px oklch(0.2 0.005 230 / 0.10);
546
- --shadow-medium: 0 26px 60px -34px oklch(0.2 0.005 230 / 0.14);
609
+ --shadow-soft: 0 1px 2px oklch(0.2 0.03 165 / 6%), 0 8px 24px -12px oklch(0.2 0.03 165 / 18%);
610
+ --shadow-medium: 0 2px 4px oklch(0.2 0.03 165 / 6%), 0 20px 40px -20px oklch(0.2 0.03 165 / 30%);
547
611
  --shadow-glow: 0 20px 60px -34px oklch(0.40 0.062 178 / 0.36);
548
612
  --shadow-warm-glow: 0 20px 60px -34px oklch(0.666 0.179 58.318 / 0.30);
549
613
  --table-header-bg: color-mix(in oklab, white 98%, var(--primary) 2%);
@@ -653,14 +717,18 @@
653
717
  --transition-smooth: all 0.3s var(--ease-emphasized);
654
718
 
655
719
  /* Sidebar — dark green (matches producer dashboard) */
656
- --sidebar-background: oklch(0.22 0.038 155);
657
- --sidebar-foreground: oklch(0.95 0 0);
658
- --sidebar-primary: oklch(0.85 0.1 95);
659
- --sidebar-primary-foreground: oklch(0.22 0.038 155);
660
- --sidebar-accent: oklch(0.28 0.042 155);
661
- --sidebar-accent-foreground: oklch(0.95 0 0);
662
- --sidebar-border: oklch(0.30 0.036 155);
663
- --sidebar-ring: oklch(0.85 0.1 95);
720
+ --sidebar-background: oklch(0.23 0.04 168);
721
+ --sidebar-foreground: oklch(0.9 0.02 140);
722
+ --sidebar-muted: oklch(0.68 0.03 160);
723
+ --sidebar-primary: oklch(0.82 0.1 150);
724
+ --sidebar-primary-foreground: oklch(0.2 0.04 168);
725
+ --sidebar-accent: oklch(0.3 0.045 168);
726
+ --sidebar-accent-foreground: oklch(0.98 0.01 120);
727
+ --sidebar-border: oklch(0.32 0.04 168);
728
+ --sidebar-ring: oklch(0.55 0.08 168);
729
+ --bubble-own: oklch(0.36 0.06 168);
730
+ --bubble-own-foreground: oklch(0.98 0.01 120);
731
+ --bubble-other: oklch(0.955 0.01 110);
664
732
  }
665
733
 
666
734
  @media (min-width: 40rem) {
@@ -683,17 +751,20 @@
683
751
  .dark {
684
752
  --field-placeholder: oklch(0.76 0.02 180);
685
753
  --overlay-tinted: oklch(0.08 0.012 180);
754
+ --canvas: oklch(0.17 0.02 168);
755
+ --label-ink: oklch(0.2 0.04 220);
756
+ --label-paper: var(--regulated-mark-contrast-surface);
686
757
  --regulated-mark-contrast-surface: oklch(0.985 0.003 95);
687
758
  --fic-label-foreground: oklch(0.141 0.005 285.823);
688
759
  --fic-label-muted-foreground: oklch(0.37 0.013 285.805);
689
760
 
690
- --background: oklch(0.21 0.012 184);
691
- --foreground: oklch(0.965 0.006 102);
692
- --card: color-mix(in oklab, black 78%, var(--primary) 22%);
761
+ --background: oklch(0.15 0.022 168);
762
+ --foreground: oklch(0.94 0.01 120);
763
+ --card: oklch(0.18 0.024 168);
693
764
  --card-foreground: var(--foreground);
694
765
  --card-elevated: color-mix(in oklch, var(--card), white 4%);
695
- --card-feature: color-mix(in oklab, black 82%, var(--primary) 18%);
696
- --popover: color-mix(in oklab, black 80%, var(--primary) 20%);
766
+ --card-feature: oklch(0.21 0.035 168);
767
+ --popover: oklch(0.19 0.025 168);
697
768
  --popover-foreground: var(--foreground);
698
769
 
699
770
  /* Marketing surfaces (CEL-726) — dark counterparts. The marketing kit ships
@@ -707,27 +778,32 @@
707
778
  --surface-strong: oklch(0.17 0.012 180);
708
779
  --surface-strong-foreground: var(--foreground);
709
780
 
710
- --primary: oklch(0.77 0.07 178);
711
- --primary-foreground: oklch(0.21 0.012 184);
712
- --secondary: color-mix(in oklab, black 70%, var(--primary) 30%);
713
- --secondary-foreground: var(--foreground);
714
- --muted: color-mix(in oklab, black 78%, var(--foreground) 22%);
715
- --muted-foreground: oklch(0.77 0.02 180);
716
- --accent: color-mix(in oklab, black 68%, var(--primary) 32%);
717
- --accent-foreground: var(--foreground);
781
+ --primary: oklch(0.8 0.1 155);
782
+ --primary-foreground: oklch(0.2 0.04 168);
783
+ --primary-soft: oklch(0.3 0.05 165);
784
+ --primary-soft-foreground: oklch(0.88 0.08 155);
785
+ --secondary: oklch(0.28 0.022 165);
786
+ --secondary-foreground: oklch(0.92 0.01 120);
787
+ --muted: oklch(0.27 0.02 165);
788
+ --muted-foreground: oklch(0.72 0.02 150);
789
+ --accent: oklch(0.3 0.03 165);
790
+ --accent-foreground: oklch(0.94 0.02 140);
718
791
  --accent-secondary: oklch(0.74 0.154 58.318);
719
792
  --accent-secondary-foreground: oklch(0.22 0.02 58.318);
720
- --success: oklch(0.75 0.112 163);
793
+ --success: oklch(0.72 0.14 155);
721
794
  --success-foreground: oklch(0.19 0.012 163);
795
+ --success-soft: oklch(0.3 0.06 155);
722
796
  /* CEL-681: --warning is now its own hue (yellow-amber h76) distinct from
723
797
  --accent-secondary (warm amber h58). Lightened slightly vs light theme to
724
798
  read well on dark surfaces. Foreground near-black keeps ≥4.5:1 contrast. */
725
- --warning: oklch(0.82 0.155 76);
799
+ --warning: oklch(0.78 0.14 75);
726
800
  --warning-foreground: oklch(0.18 0.04 76);
727
- --destructive: oklch(0.69 0.184 29);
801
+ --warning-soft: oklch(0.32 0.06 75);
802
+ --destructive: oklch(0.65 0.18 27);
728
803
  --destructive-foreground: oklch(0.18 0.01 25);
729
- --info: oklch(0.74 0.14 237); /* lighter blue for dark surfaces */
804
+ --info: oklch(0.72 0.11 230); /* lighter blue for dark surfaces */
730
805
  --info-foreground: oklch(0.18 0.01 240); /* near-black */
806
+ --info-soft: oklch(0.3 0.05 230);
731
807
  --border: color-mix(in oklab, black 62%, var(--primary) 38%);
732
808
  /* CEL-2379: see the light block. Dark boundary, >= 3:1 on every dark surface. */
733
809
  --input: color-mix(in oklab, black 28%, var(--primary) 72%);
@@ -746,7 +822,7 @@
746
822
  --chart-other: oklch(0.72 0.012 195);
747
823
 
748
824
  /* Chart framework — dark theme (CEL-41) */
749
- --chart-bg: color-mix(in oklab, black 76%, var(--primary) 24%);
825
+ --chart-bg: color-mix(in oklab, black 80%, var(--primary) 20%);
750
826
  --chart-grid: oklch(0.34 0.012 180 / 0.5);
751
827
  --chart-tooltip-bg: color-mix(in oklab, black 70%, var(--primary) 30%);
752
828
  --chart-axis-text: var(--muted-foreground);
@@ -784,8 +860,6 @@
784
860
  --surface-selected: color-mix(in oklab, black 64%, var(--primary) 36%);
785
861
  --panel-border-strong: color-mix(in oklab, black 62%, var(--primary) 38%);
786
862
  --panel-shadow: 0 30px 78px -36px oklch(0 0 0 / 0.52);
787
- --shadow-soft: 0 20px 44px -30px oklch(0 0 0 / 0.48);
788
- --shadow-medium: 0 30px 70px -34px oklch(0 0 0 / 0.58);
789
863
  --shadow-glow: 0 20px 60px -36px oklch(0.77 0.07 178 / 0.24);
790
864
  --shadow-warm-glow: 0 20px 60px -36px oklch(0.74 0.154 58.318 / 0.20);
791
865
  --shadow-kanban-column: 0 1px 3px oklch(0 0 0 / 0.18), 0 8px 24px -12px oklch(0 0 0 / 0.28);
@@ -872,14 +946,18 @@
872
946
  --gradient-subtle: linear-gradient(180deg, oklch(0.24 0.012 184) 0%, oklch(0.21 0.012 184) 100%);
873
947
 
874
948
  /* Sidebar — dark green (matches producer dashboard dark mode) */
875
- --sidebar-background: oklch(0.18 0.034 155);
876
- --sidebar-foreground: oklch(0.92 0 0);
877
- --sidebar-primary: oklch(0.85 0.1 95);
878
- --sidebar-primary-foreground: oklch(0.18 0.034 155);
879
- --sidebar-accent: oklch(0.24 0.038 155);
880
- --sidebar-accent-foreground: oklch(0.92 0 0);
881
- --sidebar-border: oklch(0.26 0.034 155);
882
- --sidebar-ring: oklch(0.85 0.1 95);
949
+ --sidebar-background: oklch(0.15 0.02 168);
950
+ --sidebar-foreground: oklch(0.9 0.02 140);
951
+ --sidebar-muted: oklch(0.62 0.03 160);
952
+ --sidebar-primary: oklch(0.82 0.1 150);
953
+ --sidebar-primary-foreground: oklch(0.2 0.04 168);
954
+ --sidebar-accent: oklch(0.22 0.03 168);
955
+ --sidebar-accent-foreground: oklch(0.98 0.01 120);
956
+ --sidebar-border: oklch(0.25 0.03 168);
957
+ --sidebar-ring: oklch(0.7 0.09 160);
958
+ --bubble-own: oklch(0.42 0.07 165);
959
+ --bubble-own-foreground: oklch(0.97 0.01 120);
960
+ --bubble-other: oklch(0.28 0.022 165);
883
961
  }
884
962
 
885
963
  @layer base {