@brokr/sdk 2.0.0 → 2.1.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 (77) hide show
  1. package/dist/feature.js +22 -2
  2. package/dist/feature.mjs +22 -2
  3. package/dist/index.js +22 -2
  4. package/dist/index.mjs +22 -2
  5. package/dist/next.js +22 -2
  6. package/dist/next.mjs +22 -2
  7. package/dist/react-notifications.js +63 -50
  8. package/dist/react-notifications.mjs +63 -50
  9. package/dist/react-styles.js +386 -169
  10. package/dist/react-styles.mjs +386 -169
  11. package/dist/react-theme.js +6 -4
  12. package/dist/react-theme.mjs +6 -4
  13. package/dist/react.js +644 -317
  14. package/dist/react.mjs +682 -355
  15. package/dist/runtime.js +22 -2
  16. package/dist/runtime.mjs +22 -2
  17. package/dist/src/chat/config.d.ts +2 -0
  18. package/dist/src/chat/config.d.ts.map +1 -1
  19. package/dist/src/gateway.d.ts.map +1 -1
  20. package/dist/src/models.d.ts +2 -0
  21. package/dist/src/models.d.ts.map +1 -1
  22. package/dist/src/react/account/AccountPanel.d.ts.map +1 -1
  23. package/dist/src/react/account/UserButton.d.ts.map +1 -1
  24. package/dist/src/react/chat/AIChat.d.ts.map +1 -1
  25. package/dist/src/react/chat/ChatContext.d.ts +3 -6
  26. package/dist/src/react/chat/ChatContext.d.ts.map +1 -1
  27. package/dist/src/react/chat/ChatInput.d.ts.map +1 -1
  28. package/dist/src/react/chat/MarkdownRenderer.d.ts.map +1 -1
  29. package/dist/src/react/chat/MessagePane.d.ts.map +1 -1
  30. package/dist/src/react/chat/ModelSelector.d.ts +1 -1
  31. package/dist/src/react/chat/ModelSelector.d.ts.map +1 -1
  32. package/dist/src/react/chat/ThreadSidebar.d.ts.map +1 -1
  33. package/dist/src/react/chat/memory.d.ts +12 -0
  34. package/dist/src/react/chat/memory.d.ts.map +1 -0
  35. package/dist/src/react/chat/types.d.ts +6 -0
  36. package/dist/src/react/chat/types.d.ts.map +1 -1
  37. package/dist/src/react/chat/useChat.d.ts +8 -6
  38. package/dist/src/react/chat/useChat.d.ts.map +1 -1
  39. package/dist/src/react/composites/FabAI.d.ts +6 -1
  40. package/dist/src/react/composites/FabAI.d.ts.map +1 -1
  41. package/dist/src/react/composites/fab-context.d.ts +26 -0
  42. package/dist/src/react/composites/fab-context.d.ts.map +1 -0
  43. package/dist/src/react/css/account.d.ts +1 -1
  44. package/dist/src/react/css/account.d.ts.map +1 -1
  45. package/dist/src/react/css/auth.d.ts +1 -1
  46. package/dist/src/react/css/auth.d.ts.map +1 -1
  47. package/dist/src/react/css/chat-extras.d.ts +1 -1
  48. package/dist/src/react/css/chat-extras.d.ts.map +1 -1
  49. package/dist/src/react/css/chat.d.ts +1 -1
  50. package/dist/src/react/css/chat.d.ts.map +1 -1
  51. package/dist/src/react/css/composites.d.ts +1 -1
  52. package/dist/src/react/css/composites.d.ts.map +1 -1
  53. package/dist/src/react/css/gates.d.ts +1 -1
  54. package/dist/src/react/css/gates.d.ts.map +1 -1
  55. package/dist/src/react/css/markdown.d.ts +1 -1
  56. package/dist/src/react/css/markdown.d.ts.map +1 -1
  57. package/dist/src/react/css/notifications.d.ts +1 -1
  58. package/dist/src/react/css/notifications.d.ts.map +1 -1
  59. package/dist/src/react/css/primitives.d.ts +1 -1
  60. package/dist/src/react/css/primitives.d.ts.map +1 -1
  61. package/dist/src/react/css/reset.d.ts +1 -1
  62. package/dist/src/react/css/reset.d.ts.map +1 -1
  63. package/dist/src/react/css/responsive.d.ts +1 -1
  64. package/dist/src/react/css/responsive.d.ts.map +1 -1
  65. package/dist/src/react/css/skeleton.d.ts +1 -1
  66. package/dist/src/react/css/skeleton.d.ts.map +1 -1
  67. package/dist/src/react/css/tokens.d.ts +1 -1
  68. package/dist/src/react/css/tokens.d.ts.map +1 -1
  69. package/dist/src/react/notifications/NotificationBell.d.ts.map +1 -1
  70. package/dist/src/react/notifications/NotificationList.d.ts.map +1 -1
  71. package/dist/src/react/notifications/Toast.d.ts.map +1 -1
  72. package/dist/src/react/payments/Plans.d.ts.map +1 -1
  73. package/dist/src/react/theme.d.ts.map +1 -1
  74. package/dist/src/react/types.d.ts +4 -4
  75. package/dist/src/react/types.d.ts.map +1 -1
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +1 -1
@@ -26,6 +26,44 @@ var TOKENS_CSS = `
26
26
  --brokr-font-size-lg: 1.125rem;
27
27
  --brokr-font-size-xl: 1.5rem;
28
28
  --brokr-font-size-2xl: clamp(2rem, 4vw, 3.5rem);
29
+
30
+ /* Z-index stacking order */
31
+ --brokr-z-chat-float: 4;
32
+ --brokr-z-drawer-backdrop: 49;
33
+ --brokr-z-drawer: 50;
34
+ --brokr-z-popover: 60;
35
+ --brokr-z-fab: 70;
36
+ --brokr-z-panel: 80;
37
+ --brokr-z-modal-backdrop: 90;
38
+ --brokr-z-dropdown: 95;
39
+ --brokr-z-notification: 9999;
40
+ --brokr-z-toast: 99999;
41
+
42
+ /* Transition durations */
43
+ --brokr-duration-fast: 100ms;
44
+ --brokr-duration-base: 150ms;
45
+ --brokr-duration-slow: 300ms;
46
+ --brokr-ease: ease;
47
+
48
+ /* Font weights */
49
+ --brokr-font-weight-normal: 400;
50
+ --brokr-font-weight-medium: 500;
51
+ --brokr-font-weight-semibold: 600;
52
+ --brokr-font-weight-bold: 700;
53
+
54
+ /* Line heights */
55
+ --brokr-leading-tight: 1.25;
56
+ --brokr-leading-snug: 1.4;
57
+ --brokr-leading-normal: 1.6;
58
+ --brokr-leading-relaxed: 1.7;
59
+
60
+ /* Font families */
61
+ --brokr-font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
62
+
63
+ /* Additional radii */
64
+ --brokr-radius-pill: 999px;
65
+ --brokr-radius-sm: 4px;
66
+
29
67
  color: var(--brokr-text-primary);
30
68
  }
31
69
  `;
@@ -47,7 +85,7 @@ var RESET_CSS = `
47
85
  .brokr-root *::-webkit-scrollbar-thumb {
48
86
  background: color-mix(in srgb, var(--brokr-text-primary) 16%, transparent);
49
87
  border: 3px solid transparent;
50
- border-radius: 999px;
88
+ border-radius: var(--brokr-radius-pill);
51
89
  background-clip: padding-box;
52
90
  }
53
91
 
@@ -85,11 +123,11 @@ var PRIMITIVES_CSS = `
85
123
  gap: var(--brokr-space-2);
86
124
  font: inherit;
87
125
  font-size: var(--brokr-font-size-sm);
88
- font-weight: 600;
126
+ font-weight: var(--brokr-font-weight-semibold);
89
127
  min-height: 44px;
90
128
  padding: 0 var(--brokr-space-4);
91
129
  text-decoration: none;
92
- transition: background-color 150ms ease, border-color 150ms ease, transform 150ms ease, opacity 150ms ease;
130
+ transition: background-color var(--brokr-duration-base) var(--brokr-ease), border-color var(--brokr-duration-base) var(--brokr-ease), transform var(--brokr-duration-base) var(--brokr-ease), opacity var(--brokr-duration-base) var(--brokr-ease);
93
131
  }
94
132
 
95
133
  .brokr-button:hover,
@@ -136,7 +174,7 @@ var PRIMITIVES_CSS = `
136
174
  font-size: var(--brokr-font-size-sm);
137
175
  min-height: 44px;
138
176
  padding: 0.825rem 0.95rem;
139
- transition: border-color 150ms ease, background-color 150ms ease;
177
+ transition: border-color var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease);
140
178
  }
141
179
 
142
180
  .brokr-input::placeholder,
@@ -165,7 +203,7 @@ var PRIMITIVES_CSS = `
165
203
  color: var(--brokr-text-secondary);
166
204
  display: block;
167
205
  font-size: var(--brokr-font-size-xs);
168
- font-weight: 600;
206
+ font-weight: var(--brokr-font-weight-semibold);
169
207
  letter-spacing: 0.02em;
170
208
  margin-bottom: var(--brokr-space-2);
171
209
  text-transform: uppercase;
@@ -174,7 +212,7 @@ var PRIMITIVES_CSS = `
174
212
  .brokr-title {
175
213
  color: var(--brokr-text-primary);
176
214
  font-size: var(--brokr-font-size-xl);
177
- font-weight: 700;
215
+ font-weight: var(--brokr-font-weight-bold);
178
216
  letter-spacing: -0.03em;
179
217
  margin: 0;
180
218
  }
@@ -182,7 +220,7 @@ var PRIMITIVES_CSS = `
182
220
  .brokr-heading {
183
221
  color: var(--brokr-text-primary);
184
222
  font-size: var(--brokr-font-size-2xl);
185
- font-weight: 700;
223
+ font-weight: var(--brokr-font-weight-bold);
186
224
  letter-spacing: -0.04em;
187
225
  line-height: 1;
188
226
  margin: 0;
@@ -209,11 +247,11 @@ var PRIMITIVES_CSS = `
209
247
  .brokr-badge {
210
248
  align-items: center;
211
249
  border: 1px solid var(--brokr-muted-border);
212
- border-radius: 999px;
250
+ border-radius: var(--brokr-radius-pill);
213
251
  color: var(--brokr-text-secondary);
214
252
  display: inline-flex;
215
253
  font-size: var(--brokr-font-size-xs);
216
- font-weight: 700;
254
+ font-weight: var(--brokr-font-weight-bold);
217
255
  gap: var(--brokr-space-1);
218
256
  letter-spacing: 0.06em;
219
257
  min-height: 28px;
@@ -305,7 +343,7 @@ var AUTH_CSS = `
305
343
  }
306
344
 
307
345
  .brokr-brand-logo {
308
- border-radius: 14px;
346
+ border-radius: calc(var(--brokr-radius-card) + 6px);
309
347
  display: block;
310
348
  height: 40px;
311
349
  object-fit: contain;
@@ -315,7 +353,7 @@ var AUTH_CSS = `
315
353
  .brokr-brand-name {
316
354
  color: var(--brokr-text-primary);
317
355
  font-size: var(--brokr-font-size-sm);
318
- font-weight: 700;
356
+ font-weight: var(--brokr-font-weight-bold);
319
357
  letter-spacing: 0.08em;
320
358
  text-transform: uppercase;
321
359
  }
@@ -378,7 +416,7 @@ var ACCOUNT_CSS = `
378
416
  }
379
417
 
380
418
  .brokr-account-trigger[data-display="avatar"] {
381
- border-radius: 999px;
419
+ border-radius: var(--brokr-radius-pill);
382
420
  gap: 0;
383
421
  justify-content: center;
384
422
  min-width: 44px;
@@ -389,10 +427,10 @@ var ACCOUNT_CSS = `
389
427
  .brokr-avatar-lg {
390
428
  align-items: center;
391
429
  background: var(--brokr-subtle-fill-strong);
392
- border-radius: 999px;
430
+ border-radius: var(--brokr-radius-pill);
393
431
  color: var(--brokr-text-primary);
394
432
  display: inline-flex;
395
- font-weight: 700;
433
+ font-weight: var(--brokr-font-weight-bold);
396
434
  justify-content: center;
397
435
  overflow: hidden;
398
436
  }
@@ -419,7 +457,7 @@ var ACCOUNT_CSS = `
419
457
  right: 0;
420
458
  top: calc(100% + 2px);
421
459
  width: min(92vw, 320px);
422
- z-index: 60;
460
+ z-index: var(--brokr-z-popover);
423
461
  }
424
462
 
425
463
  .brokr-popover[data-align="start"] {
@@ -479,7 +517,7 @@ var ACCOUNT_CSS = `
479
517
  inset: 0;
480
518
  opacity: 0;
481
519
  position: absolute;
482
- transition: opacity 150ms ease;
520
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease);
483
521
  }
484
522
 
485
523
  .brokr-profile-photo:hover .brokr-profile-photo-overlay,
@@ -521,7 +559,7 @@ var ACCOUNT_CSS = `
521
559
  .brokr-account-sidebar-kicker {
522
560
  color: var(--brokr-text-secondary);
523
561
  font-size: 0.68rem;
524
- font-weight: 700;
562
+ font-weight: var(--brokr-font-weight-bold);
525
563
  letter-spacing: 0.12em;
526
564
  line-height: 1;
527
565
  opacity: 0.8;
@@ -546,7 +584,7 @@ var ACCOUNT_CSS = `
546
584
  display: inline-flex;
547
585
  font: inherit;
548
586
  font-size: var(--brokr-font-size-sm);
549
- font-weight: 600;
587
+ font-weight: var(--brokr-font-weight-semibold);
550
588
  gap: 0.7rem;
551
589
  justify-content: flex-start;
552
590
  line-height: 1;
@@ -691,11 +729,11 @@ var ACCOUNT_CSS = `
691
729
  align-items: center;
692
730
  background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
693
731
  border: 1px solid var(--brokr-muted-border);
694
- border-radius: 999px;
732
+ border-radius: var(--brokr-radius-pill);
695
733
  color: var(--brokr-text-secondary);
696
734
  display: inline-flex;
697
735
  font-size: 0.75rem;
698
- font-weight: 600;
736
+ font-weight: var(--brokr-font-weight-semibold);
699
737
  gap: 0.35rem;
700
738
  min-height: 28px;
701
739
  padding: 0 0.7rem;
@@ -728,14 +766,14 @@ var ACCOUNT_CSS = `
728
766
  .brokr-account-summary-copy strong {
729
767
  color: var(--brokr-text-primary);
730
768
  font-size: 1.05rem;
731
- font-weight: 600;
769
+ font-weight: var(--brokr-font-weight-semibold);
732
770
  letter-spacing: -0.02em;
733
771
  }
734
772
 
735
773
  .brokr-account-summary-kicker {
736
774
  color: var(--brokr-text-secondary);
737
775
  font-size: 0.72rem;
738
- font-weight: 700;
776
+ font-weight: var(--brokr-font-weight-bold);
739
777
  letter-spacing: 0.12em;
740
778
  text-transform: uppercase;
741
779
  }
@@ -744,7 +782,7 @@ var ACCOUNT_CSS = `
744
782
  align-items: center;
745
783
  background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
746
784
  border: 1px solid var(--brokr-muted-border);
747
- border-radius: 10px;
785
+ border-radius: calc(var(--brokr-radius-card) + 2px);
748
786
  color: var(--brokr-text-secondary);
749
787
  display: inline-flex;
750
788
  height: 40px;
@@ -781,7 +819,7 @@ var ACCOUNT_CSS = `
781
819
  .brokr-account-session-info strong {
782
820
  color: var(--brokr-text-primary);
783
821
  font-size: var(--brokr-font-size-sm);
784
- font-weight: 600;
822
+ font-weight: var(--brokr-font-weight-semibold);
785
823
  }
786
824
 
787
825
  .brokr-account-session-detail,
@@ -804,11 +842,11 @@ var ACCOUNT_CSS = `
804
842
  cursor: pointer;
805
843
  font: inherit;
806
844
  font-size: 0.8125rem;
807
- font-weight: 600;
845
+ font-weight: var(--brokr-font-weight-semibold);
808
846
  min-height: 34px;
809
847
  padding: 0 0.7rem;
810
848
  text-decoration: none;
811
- transition: color 120ms ease, background-color 120ms ease, border-color 120ms ease;
849
+ transition: color var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease), border-color var(--brokr-duration-base) var(--brokr-ease);
812
850
  }
813
851
 
814
852
  .brokr-account-link-button:hover {
@@ -869,7 +907,7 @@ var ACCOUNT_CSS = `
869
907
  .brokr-account-menu-copy strong {
870
908
  color: var(--brokr-text-primary);
871
909
  font-size: 0.95rem;
872
- font-weight: 600;
910
+ font-weight: var(--brokr-font-weight-semibold);
873
911
  overflow: hidden;
874
912
  text-overflow: ellipsis;
875
913
  white-space: nowrap;
@@ -901,7 +939,7 @@ var ACCOUNT_CSS = `
901
939
  display: inline-flex;
902
940
  font: inherit;
903
941
  font-size: var(--brokr-font-size-sm);
904
- font-weight: 600;
942
+ font-weight: var(--brokr-font-weight-semibold);
905
943
  gap: 0.65rem;
906
944
  justify-content: flex-start;
907
945
  min-height: 38px;
@@ -934,7 +972,7 @@ var ACCOUNT_CSS = `
934
972
  inset: 0;
935
973
  padding: var(--brokr-space-6);
936
974
  position: fixed;
937
- z-index: 90;
975
+ z-index: var(--brokr-z-modal-backdrop);
938
976
  }
939
977
 
940
978
  .brokr-modal-dialog {
@@ -994,91 +1032,165 @@ var CHAT_CSS = `
994
1032
  }
995
1033
 
996
1034
  .brokr-ai-chat-sidebar {
1035
+ align-content: start;
1036
+ background: transparent;
997
1037
  border-right: 1px solid var(--brokr-muted-border);
998
1038
  display: grid;
999
- gap: var(--brokr-space-4);
1000
- padding: var(--brokr-space-4);
1001
- align-content: start;
1002
- overflow-y: auto;
1039
+ gap: var(--brokr-space-3);
1003
1040
  height: 100%;
1004
1041
  max-height: 100%;
1005
1042
  min-height: 0;
1043
+ overflow-y: auto;
1044
+ padding: var(--brokr-space-3);
1045
+ }
1046
+
1047
+ .brokr-ai-chat-sidebar-skeleton {
1048
+ display: grid;
1049
+ gap: var(--brokr-space-2);
1050
+ padding: 0 var(--brokr-space-3);
1051
+ }
1052
+
1053
+ .brokr-ai-chat-sidebar-new-chat {
1054
+ align-items: center;
1055
+ appearance: none;
1056
+ background: transparent;
1057
+ border: 1px solid var(--brokr-muted-border);
1058
+ border-radius: var(--brokr-radius-button);
1059
+ color: var(--brokr-text-secondary);
1060
+ cursor: pointer;
1061
+ display: inline-flex;
1062
+ font: inherit;
1063
+ font-size: var(--brokr-font-size-sm);
1064
+ font-weight: var(--brokr-font-weight-medium);
1065
+ gap: var(--brokr-space-2);
1066
+ justify-content: flex-start;
1067
+ min-height: 44px;
1068
+ padding: 0 var(--brokr-space-3);
1069
+ text-align: left;
1070
+ transition:
1071
+ background-color var(--brokr-duration-base) var(--brokr-ease),
1072
+ color var(--brokr-duration-base) var(--brokr-ease),
1073
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1074
+ width: 100%;
1075
+ }
1076
+
1077
+ .brokr-ai-chat-sidebar-new-chat:hover {
1078
+ background: var(--brokr-subtle-fill);
1079
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 15%, var(--brokr-border));
1080
+ color: var(--brokr-text-primary);
1081
+ }
1082
+
1083
+ .brokr-ai-chat-sidebar-groups {
1084
+ display: grid;
1085
+ gap: var(--brokr-space-4);
1086
+ }
1087
+
1088
+ .brokr-ai-chat-sidebar-group {
1089
+ display: grid;
1090
+ gap: var(--brokr-space-2);
1091
+ }
1092
+
1093
+ .brokr-ai-chat-sidebar-kicker {
1094
+ color: var(--brokr-text-secondary);
1095
+ font-size: var(--brokr-font-size-xs);
1096
+ font-weight: var(--brokr-font-weight-semibold);
1097
+ opacity: 0.7;
1098
+ padding: 0 var(--brokr-space-3);
1099
+ text-transform: uppercase;
1006
1100
  }
1007
1101
 
1008
1102
  .brokr-ai-chat-sidebar-empty {
1103
+ align-items: center;
1104
+ border: 1px solid var(--brokr-muted-border);
1105
+ border-radius: var(--brokr-radius-card);
1009
1106
  display: flex;
1010
1107
  flex: 1;
1011
- align-items: center;
1012
1108
  justify-content: center;
1013
- padding: var(--brokr-space-6) var(--brokr-space-4);
1109
+ padding: var(--brokr-space-5) var(--brokr-space-4);
1014
1110
  }
1015
1111
 
1016
1112
  .brokr-ai-chat-sidebar-empty-text {
1017
1113
  color: var(--brokr-text-secondary);
1018
1114
  font-size: var(--brokr-font-size-xs);
1019
- line-height: 1.5;
1115
+ line-height: var(--brokr-leading-normal);
1020
1116
  text-align: center;
1021
1117
  opacity: 0.6;
1022
1118
  }
1023
1119
 
1024
1120
  .brokr-ai-chat-sidebar-button {
1025
1121
  align-items: center;
1026
- background: transparent;
1027
- border: none;
1122
+ appearance: none;
1123
+ background: var(--brokr-subtle-fill);
1124
+ border: 1px solid var(--brokr-muted-border);
1028
1125
  border-radius: var(--brokr-radius-button);
1029
1126
  color: var(--brokr-text-secondary);
1030
1127
  cursor: pointer;
1031
1128
  display: inline-flex;
1032
1129
  font: inherit;
1033
1130
  font-size: var(--brokr-font-size-xs);
1034
- font-weight: 500;
1131
+ font-weight: var(--brokr-font-weight-medium);
1035
1132
  gap: var(--brokr-space-2);
1036
- justify-content: flex-start;
1037
- padding: 0.5rem 0.65rem;
1038
- padding-bottom: 0.65rem;
1039
- margin-bottom: var(--brokr-space-2);
1040
- border-bottom: 1px solid var(--brokr-muted-border);
1041
- border-radius: 0;
1042
- transition: color 120ms ease;
1043
- width: 100%;
1133
+ justify-content: center;
1134
+ min-height: 36px;
1135
+ padding: 0 var(--brokr-space-3);
1136
+ transition:
1137
+ color var(--brokr-duration-base) var(--brokr-ease),
1138
+ background-color var(--brokr-duration-base) var(--brokr-ease);
1044
1139
  }
1045
1140
 
1046
1141
  .brokr-ai-chat-sidebar-button:hover {
1142
+ background: var(--brokr-subtle-fill-strong);
1047
1143
  color: var(--brokr-text-primary);
1048
1144
  }
1049
1145
 
1050
1146
  .brokr-ai-chat-conversations {
1051
1147
  display: grid;
1052
- gap: 2px;
1148
+ gap: var(--brokr-space-1);
1053
1149
  }
1054
1150
 
1055
1151
  .brokr-ai-chat-conversation {
1056
1152
  appearance: none;
1153
+ align-items: center;
1057
1154
  background: transparent;
1058
- border: none;
1155
+ border: 1px solid transparent;
1059
1156
  border-radius: var(--brokr-radius-button);
1060
1157
  color: var(--brokr-text-secondary);
1061
1158
  cursor: pointer;
1159
+ display: inline-flex;
1062
1160
  font: inherit;
1063
1161
  font-size: var(--brokr-font-size-xs);
1064
- font-weight: 400;
1162
+ font-weight: var(--brokr-font-weight-medium);
1163
+ gap: var(--brokr-space-2);
1164
+ min-height: calc(var(--brokr-space-8) + var(--brokr-space-1));
1065
1165
  overflow: hidden;
1066
- padding: 0.5rem 0.65rem;
1166
+ padding: 0 var(--brokr-space-3);
1067
1167
  text-align: left;
1068
- text-overflow: ellipsis;
1069
- transition: color 120ms ease, background 120ms ease;
1070
- white-space: nowrap;
1168
+ transition:
1169
+ color var(--brokr-duration-base) var(--brokr-ease),
1170
+ background-color var(--brokr-duration-base) var(--brokr-ease),
1171
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1172
+ width: 100%;
1071
1173
  }
1072
1174
 
1073
1175
  .brokr-ai-chat-conversation:hover {
1176
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 9%, transparent);
1074
1177
  color: var(--brokr-text-primary);
1075
1178
  background: var(--brokr-subtle-fill);
1076
1179
  }
1077
1180
 
1078
1181
  .brokr-ai-chat-conversation[data-active="true"] {
1182
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 12%, transparent);
1079
1183
  color: var(--brokr-text-primary);
1080
- background: var(--brokr-subtle-fill);
1081
- font-weight: 500;
1184
+ background: var(--brokr-subtle-fill-strong);
1185
+ font-weight: var(--brokr-font-weight-semibold);
1186
+ }
1187
+
1188
+ .brokr-ai-chat-conversation-label {
1189
+ flex: 1;
1190
+ line-height: var(--brokr-leading-snug);
1191
+ overflow: hidden;
1192
+ text-overflow: ellipsis;
1193
+ white-space: nowrap;
1082
1194
  }
1083
1195
 
1084
1196
  .brokr-ai-chat-stage {
@@ -1104,7 +1216,7 @@ var CHAT_CSS = `
1104
1216
  position: absolute;
1105
1217
  right: 0;
1106
1218
  top: 0;
1107
- z-index: 4;
1219
+ z-index: var(--brokr-z-chat-float);
1108
1220
  }
1109
1221
 
1110
1222
  .brokr-ai-chat-topbar > * {
@@ -1130,7 +1242,7 @@ var CHAT_CSS = `
1130
1242
  .brokr-ai-chat-title-loading span {
1131
1243
  animation: brokrTypingBounce 1.2s ease-in-out infinite;
1132
1244
  background: color-mix(in srgb, var(--brokr-text-primary) 50%, transparent);
1133
- border-radius: 999px;
1245
+ border-radius: var(--brokr-radius-pill);
1134
1246
  display: inline-block;
1135
1247
  height: 0.28rem;
1136
1248
  width: 0.28rem;
@@ -1286,7 +1398,7 @@ var CHAT_CSS = `
1286
1398
  padding: var(--brokr-space-4) 0 var(--brokr-space-5);
1287
1399
  position: absolute;
1288
1400
  right: 0;
1289
- z-index: 4;
1401
+ z-index: var(--brokr-z-chat-float);
1290
1402
  }
1291
1403
 
1292
1404
  .brokr-ai-chat-textarea {
@@ -1339,7 +1451,7 @@ var CHAT_CSS = `
1339
1451
  .brokr-ai-chat-typing span {
1340
1452
  animation: brokrTypingBounce 1.2s ease-in-out infinite;
1341
1453
  background: color-mix(in srgb, var(--brokr-text-primary) 70%, transparent);
1342
- border-radius: 999px;
1454
+ border-radius: var(--brokr-radius-pill);
1343
1455
  display: inline-block;
1344
1456
  height: 0.42rem;
1345
1457
  width: 0.42rem;
@@ -1374,11 +1486,11 @@ var CHAT_EXTRAS_CSS = `
1374
1486
  display: inline-flex;
1375
1487
  font: inherit;
1376
1488
  font-size: var(--brokr-font-size-sm);
1377
- font-weight: 600;
1489
+ font-weight: var(--brokr-font-weight-semibold);
1378
1490
  gap: var(--brokr-space-2);
1379
1491
  min-height: 36px;
1380
1492
  padding: 0 0.75rem;
1381
- transition: background-color 120ms ease;
1493
+ transition: background-color var(--brokr-duration-base) var(--brokr-ease);
1382
1494
  white-space: nowrap;
1383
1495
  }
1384
1496
 
@@ -1400,7 +1512,7 @@ var CHAT_EXTRAS_CSS = `
1400
1512
  position: absolute;
1401
1513
  right: 0;
1402
1514
  top: calc(100% + 6px);
1403
- z-index: 100;
1515
+ z-index: var(--brokr-z-dropdown);
1404
1516
  }
1405
1517
 
1406
1518
  .brokr-model-option {
@@ -1417,7 +1529,7 @@ var CHAT_EXTRAS_CSS = `
1417
1529
  gap: var(--brokr-space-2);
1418
1530
  padding: 0.5rem 0.75rem;
1419
1531
  text-align: left;
1420
- transition: background-color 100ms ease;
1532
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
1421
1533
  width: 100%;
1422
1534
  }
1423
1535
 
@@ -1439,7 +1551,7 @@ var CHAT_EXTRAS_CSS = `
1439
1551
  }
1440
1552
 
1441
1553
  .brokr-model-dot {
1442
- border-radius: 999px;
1554
+ border-radius: var(--brokr-radius-pill);
1443
1555
  display: inline-block;
1444
1556
  flex-shrink: 0;
1445
1557
  height: 8px;
@@ -1506,7 +1618,7 @@ var CHAT_EXTRAS_CSS = `
1506
1618
  position: absolute;
1507
1619
  right: 0;
1508
1620
  top: calc(100% + 4px);
1509
- z-index: 100;
1621
+ z-index: var(--brokr-z-dropdown);
1510
1622
  }
1511
1623
 
1512
1624
  .brokr-ai-chat-thread-dropdown-item {
@@ -1523,7 +1635,7 @@ var CHAT_EXTRAS_CSS = `
1523
1635
  gap: var(--brokr-space-2);
1524
1636
  padding: 0.5rem 0.75rem;
1525
1637
  text-align: left;
1526
- transition: background-color 100ms ease;
1638
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
1527
1639
  width: 100%;
1528
1640
  }
1529
1641
 
@@ -1565,7 +1677,7 @@ var CHAT_EXTRAS_CSS = `
1565
1677
  position: absolute;
1566
1678
  right: 0;
1567
1679
  top: -4px;
1568
- transition: opacity 120ms ease, background-color 120ms ease;
1680
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease);
1569
1681
  width: 26px;
1570
1682
  }
1571
1683
 
@@ -1619,7 +1731,7 @@ var CHAT_EXTRAS_CSS = `
1619
1731
  backdrop-filter: blur(4px);
1620
1732
  inset: 0;
1621
1733
  position: fixed;
1622
- z-index: 49;
1734
+ z-index: var(--brokr-z-drawer-backdrop);
1623
1735
  }
1624
1736
 
1625
1737
  .brokr-ai-chat-drawer {
@@ -1637,7 +1749,7 @@ var CHAT_EXTRAS_CSS = `
1637
1749
  position: fixed;
1638
1750
  top: 0;
1639
1751
  width: 80vw;
1640
- z-index: 50;
1752
+ z-index: var(--brokr-z-drawer);
1641
1753
  }
1642
1754
 
1643
1755
  .brokr-ai-chat-hamburger {
@@ -1676,8 +1788,9 @@ var CHAT_EXTRAS_CSS = `
1676
1788
  color: var(--brokr-text-primary);
1677
1789
  font: inherit;
1678
1790
  font-size: var(--brokr-font-size-xs);
1791
+ min-height: calc(var(--brokr-space-8) + var(--brokr-space-1));
1679
1792
  outline: none;
1680
- padding: 0.5rem 0.65rem;
1793
+ padding: 0 var(--brokr-space-3);
1681
1794
  width: 100%;
1682
1795
  }
1683
1796
 
@@ -1696,7 +1809,45 @@ var COMPOSITES_CSS = `
1696
1809
  bottom: var(--brokr-space-6);
1697
1810
  position: fixed;
1698
1811
  right: var(--brokr-space-6);
1699
- z-index: 70;
1812
+ z-index: var(--brokr-z-fab);
1813
+ }
1814
+
1815
+ .brokr-chat-fab-trigger {
1816
+ align-items: center;
1817
+ appearance: none;
1818
+ background: var(--brokr-bg);
1819
+ border: 1px solid color-mix(in srgb, var(--brokr-border) 85%, transparent);
1820
+ border-radius: var(--brokr-radius-pill);
1821
+ box-shadow:
1822
+ 0 10px 24px color-mix(in srgb, var(--brokr-text-primary) 14%, transparent),
1823
+ 0 0 16px color-mix(in srgb, var(--brokr-text-primary) 10%, transparent);
1824
+ color: var(--brokr-text-primary);
1825
+ cursor: pointer;
1826
+ display: inline-flex;
1827
+ font: inherit;
1828
+ height: 56px;
1829
+ justify-content: center;
1830
+ min-height: 56px;
1831
+ padding: 0;
1832
+ transition:
1833
+ transform var(--brokr-duration-base) var(--brokr-ease),
1834
+ box-shadow var(--brokr-duration-base) var(--brokr-ease),
1835
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1836
+ width: 56px;
1837
+ }
1838
+
1839
+ .brokr-chat-fab-trigger:hover {
1840
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 20%, var(--brokr-border));
1841
+ transform: translateY(-1px);
1842
+ }
1843
+
1844
+ .brokr-chat-fab-trigger:active {
1845
+ transform: translateY(0);
1846
+ }
1847
+
1848
+ .brokr-chat-fab-trigger:focus-visible {
1849
+ outline: 2px solid color-mix(in srgb, var(--brokr-primary) 60%, transparent);
1850
+ outline-offset: 2px;
1700
1851
  }
1701
1852
 
1702
1853
  .brokr-chat-panel {
@@ -1712,7 +1863,7 @@ var COMPOSITES_CSS = `
1712
1863
  right: 0;
1713
1864
  top: 0;
1714
1865
  width: min(100vw, 420px);
1715
- z-index: 80;
1866
+ z-index: var(--brokr-z-panel);
1716
1867
  border-bottom-right-radius: 0;
1717
1868
  border-top-right-radius: 0;
1718
1869
  }
@@ -1748,23 +1899,6 @@ var COMPOSITES_CSS = `
1748
1899
  padding: var(--brokr-space-2);
1749
1900
  }
1750
1901
 
1751
- .brokr-chat-starters {
1752
- display: flex;
1753
- flex-wrap: wrap;
1754
- gap: var(--brokr-space-2);
1755
- }
1756
-
1757
- .brokr-chat-starter {
1758
- background: var(--brokr-subtle-fill);
1759
- border: 1px solid var(--brokr-muted-border);
1760
- border-radius: 999px;
1761
- color: var(--brokr-text-primary);
1762
- cursor: pointer;
1763
- font: inherit;
1764
- min-height: 36px;
1765
- padding: 0 0.9rem;
1766
- }
1767
-
1768
1902
  .brokr-chat-bubble[data-role="user"] {
1769
1903
  background: color-mix(in srgb, var(--brokr-primary) 10%, var(--brokr-surface));
1770
1904
  justify-self: end;
@@ -1828,7 +1962,7 @@ var COMPOSITES_CSS = `
1828
1962
  min-height: 220px;
1829
1963
  padding: var(--brokr-space-6);
1830
1964
  text-align: center;
1831
- transition: border-color 150ms ease, background-color 150ms ease, transform 150ms ease;
1965
+ transition: border-color var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease), transform var(--brokr-duration-base) var(--brokr-ease);
1832
1966
  }
1833
1967
 
1834
1968
  .brokr-upload-dropzone[data-drag="true"] {
@@ -1849,13 +1983,23 @@ var COMPOSITES_CSS = `
1849
1983
  // src/react/css/gates.ts
1850
1984
  var GATES_CSS = `
1851
1985
  .brokr-plan-card {
1852
- display: grid;
1986
+ display: flex;
1987
+ flex-direction: column;
1853
1988
  gap: var(--brokr-space-5);
1854
1989
  min-height: 100%;
1855
1990
  padding: var(--brokr-space-6);
1856
1991
  position: relative;
1857
1992
  }
1858
1993
 
1994
+ .brokr-plan-card > .brokr-feature-list {
1995
+ flex: 1;
1996
+ }
1997
+
1998
+ .brokr-plan-card > .brokr-button,
1999
+ .brokr-plan-card > .brokr-button-secondary {
2000
+ flex-shrink: 0;
2001
+ }
2002
+
1859
2003
  .brokr-plan-card[data-highlight="true"] {
1860
2004
  background: color-mix(in srgb, var(--brokr-surface) 86%, var(--brokr-bg));
1861
2005
  transform: translateY(-2px);
@@ -1869,7 +2013,7 @@ var GATES_CSS = `
1869
2013
 
1870
2014
  .brokr-plan-value {
1871
2015
  font-size: clamp(2rem, 4vw, 3rem);
1872
- font-weight: 700;
2016
+ font-weight: var(--brokr-font-weight-bold);
1873
2017
  letter-spacing: -0.05em;
1874
2018
  line-height: 1;
1875
2019
  }
@@ -1892,7 +2036,7 @@ var GATES_CSS = `
1892
2036
 
1893
2037
  .brokr-feature-bullet {
1894
2038
  background: var(--brokr-text-primary);
1895
- border-radius: 999px;
2039
+ border-radius: var(--brokr-radius-pill);
1896
2040
  height: 6px;
1897
2041
  margin-top: 0.45rem;
1898
2042
  opacity: 0.75;
@@ -1912,7 +2056,7 @@ var GATES_CSS = `
1912
2056
 
1913
2057
  .brokr-meter-bar {
1914
2058
  background: var(--brokr-subtle-fill);
1915
- border-radius: 999px;
2059
+ border-radius: var(--brokr-radius-pill);
1916
2060
  height: 8px;
1917
2061
  overflow: hidden;
1918
2062
  width: 100%;
@@ -1922,7 +2066,7 @@ var GATES_CSS = `
1922
2066
  background: var(--brokr-primary);
1923
2067
  border-radius: inherit;
1924
2068
  height: 100%;
1925
- transition: width 150ms ease;
2069
+ transition: width var(--brokr-duration-base) var(--brokr-ease);
1926
2070
  }
1927
2071
  `;
1928
2072
 
@@ -1937,7 +2081,7 @@ var SKELETON_CSS = `
1937
2081
  color-mix(in srgb, var(--brokr-text-primary) 5%, transparent) 100%
1938
2082
  );
1939
2083
  background-size: 200% 100%;
1940
- border-radius: 999px;
2084
+ border-radius: var(--brokr-radius-pill);
1941
2085
  min-height: 16px;
1942
2086
  }
1943
2087
  `;
@@ -1961,18 +2105,22 @@ var MARKDOWN_CSS = `
1961
2105
 
1962
2106
  .brokr-md strong {
1963
2107
  color: var(--brokr-text-primary);
1964
- font-weight: 600;
2108
+ font-weight: var(--brokr-font-weight-semibold);
1965
2109
  }
1966
2110
 
1967
2111
  .brokr-md em {
1968
2112
  font-style: italic;
1969
2113
  }
1970
2114
 
2115
+ .brokr-md del {
2116
+ opacity: 0.85;
2117
+ }
2118
+
1971
2119
  .brokr-md-inline-code {
1972
2120
  background: var(--brokr-subtle-fill-strong);
1973
- border-radius: 4px;
2121
+ border-radius: var(--brokr-radius-sm);
1974
2122
  color: var(--brokr-primary);
1975
- font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
2123
+ font-family: var(--brokr-font-mono);
1976
2124
  font-size: 0.85em;
1977
2125
  padding: 0.15em 0.4em;
1978
2126
  }
@@ -1989,7 +2137,7 @@ var MARKDOWN_CSS = `
1989
2137
 
1990
2138
  .brokr-md-heading {
1991
2139
  color: var(--brokr-text-primary);
1992
- font-weight: 600;
2140
+ font-weight: var(--brokr-font-weight-semibold);
1993
2141
  line-height: 1.3;
1994
2142
  margin: 1.2em 0 0.5em;
1995
2143
  }
@@ -2012,7 +2160,6 @@ var MARKDOWN_CSS = `
2012
2160
  }
2013
2161
 
2014
2162
  .brokr-md-list {
2015
- list-style: none;
2016
2163
  margin: 0.5em 0;
2017
2164
  padding: 0 0 0 1.2em;
2018
2165
  }
@@ -2020,16 +2167,85 @@ var MARKDOWN_CSS = `
2020
2167
  .brokr-md-list li {
2021
2168
  line-height: 1.7;
2022
2169
  margin-bottom: 0.25em;
2170
+ }
2171
+
2172
+ .brokr-md-list-unordered {
2173
+ list-style: none;
2174
+ }
2175
+
2176
+ .brokr-md-list-unordered li {
2023
2177
  position: relative;
2024
2178
  }
2025
2179
 
2026
- .brokr-md-list li::before {
2180
+ .brokr-md-list-unordered li::before {
2027
2181
  content: '\u2022';
2028
2182
  color: var(--brokr-text-secondary);
2029
2183
  left: -1em;
2030
2184
  position: absolute;
2031
2185
  }
2032
2186
 
2187
+ .brokr-md-list-ordered {
2188
+ list-style: decimal;
2189
+ padding-left: 1.35em;
2190
+ }
2191
+
2192
+ .brokr-md-list-ordered li::marker {
2193
+ color: var(--brokr-text-secondary);
2194
+ }
2195
+
2196
+ .brokr-md-quote {
2197
+ border-left: 1px solid var(--brokr-muted-border);
2198
+ color: var(--brokr-text-secondary);
2199
+ margin: 0.8em 0;
2200
+ padding: 0 0 0 0.9em;
2201
+ }
2202
+
2203
+ .brokr-md-quote-line {
2204
+ line-height: 1.7;
2205
+ margin: 0 0 0.4em;
2206
+ }
2207
+
2208
+ .brokr-md-quote-line:last-child {
2209
+ margin-bottom: 0;
2210
+ }
2211
+
2212
+ .brokr-md-table-wrap {
2213
+ margin: 0.9em 0;
2214
+ overflow-x: auto;
2215
+ }
2216
+
2217
+ .brokr-md-table {
2218
+ border-collapse: collapse;
2219
+ border: 1px solid var(--brokr-muted-border);
2220
+ border-radius: var(--brokr-radius-card);
2221
+ min-width: 100%;
2222
+ width: max-content;
2223
+ }
2224
+
2225
+ .brokr-md-table th,
2226
+ .brokr-md-table td {
2227
+ border-bottom: 1px solid var(--brokr-muted-border);
2228
+ font-size: var(--brokr-font-size-sm);
2229
+ line-height: var(--brokr-leading-snug);
2230
+ padding: var(--brokr-space-2) var(--brokr-space-3);
2231
+ text-align: left;
2232
+ vertical-align: top;
2233
+ }
2234
+
2235
+ .brokr-md-table th {
2236
+ background: var(--brokr-subtle-fill);
2237
+ color: var(--brokr-text-primary);
2238
+ font-weight: var(--brokr-font-weight-semibold);
2239
+ }
2240
+
2241
+ .brokr-md-table td {
2242
+ color: var(--brokr-text-secondary);
2243
+ }
2244
+
2245
+ .brokr-md-table tr:last-child td {
2246
+ border-bottom: none;
2247
+ }
2248
+
2033
2249
  /* \u2500\u2500\u2500 Code blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2034
2250
 
2035
2251
  .brokr-md-codeblock {
@@ -2051,8 +2267,8 @@ var MARKDOWN_CSS = `
2051
2267
 
2052
2268
  .brokr-md-codeblock-lang {
2053
2269
  color: var(--brokr-text-secondary);
2054
- font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
2055
- font-weight: 500;
2270
+ font-family: var(--brokr-font-mono);
2271
+ font-weight: var(--brokr-font-weight-medium);
2056
2272
  text-transform: lowercase;
2057
2273
  }
2058
2274
 
@@ -2068,7 +2284,7 @@ var MARKDOWN_CSS = `
2068
2284
  gap: 0.35em;
2069
2285
  padding: 0.15em 0.4em;
2070
2286
  border-radius: var(--brokr-radius-button);
2071
- transition: color 120ms ease, background 120ms ease;
2287
+ transition: color var(--brokr-duration-base) var(--brokr-ease), background var(--brokr-duration-base) var(--brokr-ease);
2072
2288
  }
2073
2289
 
2074
2290
  .brokr-md-codeblock-copy:hover {
@@ -2078,7 +2294,7 @@ var MARKDOWN_CSS = `
2078
2294
 
2079
2295
  .brokr-md-codeblock-pre {
2080
2296
  color: var(--brokr-text-primary);
2081
- font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
2297
+ font-family: var(--brokr-font-mono);
2082
2298
  font-size: 0.825em;
2083
2299
  line-height: 1.6;
2084
2300
  margin: 0;
@@ -2204,7 +2420,8 @@ var RESPONSIVE_CSS = `
2204
2420
  }
2205
2421
 
2206
2422
  .brokr-ai-chat-model-select,
2207
- .brokr-ai-chat-sidebar-button {
2423
+ .brokr-ai-chat-sidebar-button,
2424
+ .brokr-ai-chat-sidebar-new-chat {
2208
2425
  width: 100%;
2209
2426
  }
2210
2427
 
@@ -2271,11 +2488,11 @@ var NOTIFICATIONS_CSS = `
2271
2488
  .brokr-toast-layer {
2272
2489
  box-sizing: border-box;
2273
2490
  position: fixed;
2274
- z-index: 99999;
2491
+ z-index: var(--brokr-z-toast);
2275
2492
  display: flex;
2276
2493
  flex-direction: column;
2277
- gap: 8px;
2278
- padding: 16px;
2494
+ gap: var(--brokr-space-2);
2495
+ padding: var(--brokr-space-4);
2279
2496
  pointer-events: none;
2280
2497
  max-width: 400px;
2281
2498
  width: 100%;
@@ -2297,16 +2514,16 @@ var NOTIFICATIONS_CSS = `
2297
2514
  pointer-events: auto;
2298
2515
  display: flex;
2299
2516
  align-items: flex-start;
2300
- gap: 10px;
2301
- padding: 12px 14px;
2302
- border-radius: 10px;
2303
- background: var(--brokr-toast-bg, #ffffff);
2304
- border: 1px solid var(--brokr-toast-border, #e4e4e7);
2305
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.18);
2517
+ gap: var(--brokr-space-3);
2518
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2519
+ border-radius: calc(var(--brokr-radius-card) + 2px);
2520
+ background: var(--brokr-toast-bg);
2521
+ border: 1px solid var(--brokr-toast-border);
2522
+ box-shadow: var(--brokr-shadow-md);
2306
2523
  width: 100%;
2307
2524
  max-width: 380px;
2308
- animation: brokr-toast-enter-bottom 0.3s ease-out;
2309
- transition: opacity 0.3s ease, transform 0.3s ease;
2525
+ animation: brokr-toast-enter-bottom var(--brokr-duration-slow) ease-out;
2526
+ transition: opacity var(--brokr-duration-slow) var(--brokr-ease), transform var(--brokr-duration-slow) var(--brokr-ease);
2310
2527
  }
2311
2528
 
2312
2529
  /* Top positions: slide down from top */
@@ -2343,7 +2560,7 @@ var NOTIFICATIONS_CSS = `
2343
2560
  flex-shrink: 0;
2344
2561
  width: 8px;
2345
2562
  height: 8px;
2346
- border-radius: 50%;
2563
+ border-radius: var(--brokr-radius-pill);
2347
2564
  margin-top: 5px;
2348
2565
  background: var(--brokr-text-secondary);
2349
2566
  }
@@ -2370,16 +2587,16 @@ var NOTIFICATIONS_CSS = `
2370
2587
  }
2371
2588
 
2372
2589
  .brokr-toast-title {
2373
- font-size: 13px;
2374
- font-weight: 600;
2375
- color: var(--brokr-toast-text, #0a0a0a);
2376
- line-height: 1.35;
2590
+ font-size: var(--brokr-font-size-xs);
2591
+ font-weight: var(--brokr-font-weight-semibold);
2592
+ color: var(--brokr-toast-text);
2593
+ line-height: var(--brokr-leading-snug);
2377
2594
  }
2378
2595
 
2379
2596
  .brokr-toast-message {
2380
- font-size: 12px;
2381
- color: var(--brokr-toast-text-secondary, #52525b);
2382
- line-height: 1.4;
2597
+ font-size: var(--brokr-font-size-xs);
2598
+ color: var(--brokr-toast-text-secondary);
2599
+ line-height: var(--brokr-leading-snug);
2383
2600
  display: -webkit-box;
2384
2601
  -webkit-line-clamp: 2;
2385
2602
  -webkit-box-orient: vertical;
@@ -2395,17 +2612,17 @@ var NOTIFICATIONS_CSS = `
2395
2612
  height: 24px;
2396
2613
  border: none;
2397
2614
  background: transparent;
2398
- color: var(--brokr-toast-text-secondary, #52525b);
2615
+ color: var(--brokr-toast-text-secondary);
2399
2616
  cursor: pointer;
2400
- border-radius: 6px;
2617
+ border-radius: var(--brokr-radius-button);
2401
2618
  padding: 0;
2402
2619
  opacity: 0.5;
2403
- transition: opacity 0.15s, background 0.15s;
2620
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease), background var(--brokr-duration-base) var(--brokr-ease);
2404
2621
  }
2405
2622
 
2406
2623
  .brokr-toast-dismiss:hover {
2407
2624
  opacity: 1;
2408
- background: color-mix(in srgb, var(--brokr-toast-text, #0a0a0a) 8%, transparent);
2625
+ background: color-mix(in srgb, var(--brokr-toast-text) 8%, transparent);
2409
2626
  }
2410
2627
 
2411
2628
  /* -------------------------------------------------------------------------
@@ -2429,15 +2646,15 @@ var NOTIFICATIONS_CSS = `
2429
2646
  background: transparent;
2430
2647
  color: var(--brokr-text-secondary);
2431
2648
  cursor: pointer;
2432
- border-radius: 8px;
2649
+ border-radius: var(--brokr-radius-button);
2433
2650
  padding: 0;
2434
2651
  position: relative;
2435
- transition: color 0.15s, background 0.15s;
2652
+ transition: color var(--brokr-duration-base) var(--brokr-ease), background var(--brokr-duration-base) var(--brokr-ease);
2436
2653
  }
2437
2654
 
2438
2655
  .brokr-notif-bell:hover {
2439
2656
  color: var(--brokr-text-primary);
2440
- background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
2657
+ background: var(--brokr-subtle-fill);
2441
2658
  }
2442
2659
 
2443
2660
  .brokr-notif-badge {
@@ -2446,12 +2663,12 @@ var NOTIFICATIONS_CSS = `
2446
2663
  right: 2px;
2447
2664
  min-width: 16px;
2448
2665
  height: 16px;
2449
- padding: 0 4px;
2450
- border-radius: 999px;
2666
+ padding: 0 var(--brokr-space-1);
2667
+ border-radius: var(--brokr-radius-pill);
2451
2668
  background: var(--brokr-error, #ef4444);
2452
- color: #fff;
2669
+ color: var(--brokr-primary-contrast);
2453
2670
  font-size: 10px;
2454
- font-weight: 700;
2671
+ font-weight: var(--brokr-font-weight-bold);
2455
2672
  line-height: 16px;
2456
2673
  text-align: center;
2457
2674
  pointer-events: none;
@@ -2469,14 +2686,14 @@ var NOTIFICATIONS_CSS = `
2469
2686
  width: 360px;
2470
2687
  max-height: 420px;
2471
2688
  background: var(--brokr-surface);
2472
- border: 1px solid var(--brokr-border);
2473
- border-radius: 12px;
2474
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
2689
+ border: 1px solid var(--brokr-muted-border);
2690
+ border-radius: calc(var(--brokr-radius-card) + 4px);
2691
+ box-shadow: var(--brokr-shadow-lg);
2475
2692
  overflow: hidden;
2476
2693
  display: flex;
2477
2694
  flex-direction: column;
2478
- z-index: 9999;
2479
- animation: brokr-dropdown-enter 0.15s ease-out;
2695
+ z-index: var(--brokr-z-notification);
2696
+ animation: brokr-dropdown-enter var(--brokr-duration-base) ease-out;
2480
2697
  }
2481
2698
 
2482
2699
  @keyframes brokr-dropdown-enter {
@@ -2489,13 +2706,13 @@ var NOTIFICATIONS_CSS = `
2489
2706
  display: flex;
2490
2707
  align-items: center;
2491
2708
  justify-content: space-between;
2492
- padding: 12px 16px;
2493
- border-bottom: 1px solid var(--brokr-border);
2709
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2710
+ border-bottom: 1px solid var(--brokr-muted-border);
2494
2711
  }
2495
2712
 
2496
2713
  .brokr-notif-dropdown-title {
2497
- font-size: 13px;
2498
- font-weight: 600;
2714
+ font-size: var(--brokr-font-size-xs);
2715
+ font-weight: var(--brokr-font-weight-semibold);
2499
2716
  color: var(--brokr-text-primary);
2500
2717
  }
2501
2718
 
@@ -2504,12 +2721,12 @@ var NOTIFICATIONS_CSS = `
2504
2721
  border: none;
2505
2722
  background: transparent;
2506
2723
  color: var(--brokr-primary);
2507
- font-size: 12px;
2508
- font-weight: 500;
2724
+ font-size: var(--brokr-font-size-xs);
2725
+ font-weight: var(--brokr-font-weight-medium);
2509
2726
  cursor: pointer;
2510
2727
  padding: 2px 6px;
2511
- border-radius: 4px;
2512
- transition: background 0.15s;
2728
+ border-radius: var(--brokr-radius-sm);
2729
+ transition: background var(--brokr-duration-base) var(--brokr-ease);
2513
2730
  }
2514
2731
 
2515
2732
  .brokr-notif-mark-all:hover {
@@ -2533,14 +2750,14 @@ var NOTIFICATIONS_CSS = `
2533
2750
  box-sizing: border-box;
2534
2751
  display: flex;
2535
2752
  align-items: flex-start;
2536
- gap: 10px;
2537
- padding: 12px 16px;
2753
+ gap: var(--brokr-space-3);
2754
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2538
2755
  border: none;
2539
2756
  background: transparent;
2540
2757
  cursor: pointer;
2541
2758
  text-align: left;
2542
2759
  width: 100%;
2543
- transition: background 0.15s;
2760
+ transition: background var(--brokr-duration-base) var(--brokr-ease);
2544
2761
  border-bottom: 1px solid color-mix(in srgb, var(--brokr-border) 50%, transparent);
2545
2762
  }
2546
2763
 
@@ -2558,7 +2775,7 @@ var NOTIFICATIONS_CSS = `
2558
2775
  flex-shrink: 0;
2559
2776
  width: 8px;
2560
2777
  height: 8px;
2561
- border-radius: 50%;
2778
+ border-radius: var(--brokr-radius-pill);
2562
2779
  margin-top: 4px;
2563
2780
  background: var(--brokr-text-secondary);
2564
2781
  }
@@ -2586,16 +2803,16 @@ var NOTIFICATIONS_CSS = `
2586
2803
  }
2587
2804
 
2588
2805
  .brokr-notif-item-title {
2589
- font-size: 13px;
2590
- font-weight: 600;
2806
+ font-size: var(--brokr-font-size-xs);
2807
+ font-weight: var(--brokr-font-weight-semibold);
2591
2808
  color: var(--brokr-text-primary);
2592
- line-height: 1.35;
2809
+ line-height: var(--brokr-leading-snug);
2593
2810
  }
2594
2811
 
2595
2812
  .brokr-notif-item-message {
2596
- font-size: 12px;
2813
+ font-size: var(--brokr-font-size-xs);
2597
2814
  color: var(--brokr-text-secondary);
2598
- line-height: 1.4;
2815
+ line-height: var(--brokr-leading-snug);
2599
2816
  display: -webkit-box;
2600
2817
  -webkit-line-clamp: 2;
2601
2818
  -webkit-box-orient: vertical;
@@ -2621,12 +2838,12 @@ var NOTIFICATIONS_CSS = `
2621
2838
  flex-direction: column;
2622
2839
  align-items: center;
2623
2840
  justify-content: center;
2624
- gap: 8px;
2625
- padding: 40px 16px;
2841
+ gap: var(--brokr-space-2);
2842
+ padding: var(--brokr-space-10) var(--brokr-space-4);
2626
2843
  }
2627
2844
 
2628
2845
  .brokr-notif-empty-text {
2629
- font-size: 13px;
2846
+ font-size: var(--brokr-font-size-xs);
2630
2847
  color: var(--brokr-text-secondary);
2631
2848
  opacity: 0.6;
2632
2849
  }
@@ -2641,8 +2858,8 @@ var NOTIFICATIONS_CSS = `
2641
2858
  max-width: 640px;
2642
2859
  display: flex;
2643
2860
  flex-direction: column;
2644
- border: 1px solid var(--brokr-border);
2645
- border-radius: 12px;
2861
+ border: 1px solid var(--brokr-muted-border);
2862
+ border-radius: calc(var(--brokr-radius-card) + 4px);
2646
2863
  background: var(--brokr-surface);
2647
2864
  overflow: hidden;
2648
2865
  }
@@ -2652,13 +2869,13 @@ var NOTIFICATIONS_CSS = `
2652
2869
  display: flex;
2653
2870
  align-items: center;
2654
2871
  justify-content: space-between;
2655
- padding: 16px 20px;
2656
- border-bottom: 1px solid var(--brokr-border);
2872
+ padding: var(--brokr-space-4) var(--brokr-space-5);
2873
+ border-bottom: 1px solid var(--brokr-muted-border);
2657
2874
  }
2658
2875
 
2659
2876
  .brokr-notif-list-title {
2660
- font-size: 16px;
2661
- font-weight: 600;
2877
+ font-size: var(--brokr-font-size-md);
2878
+ font-weight: var(--brokr-font-weight-semibold);
2662
2879
  color: var(--brokr-text-primary);
2663
2880
  }
2664
2881