@fromsko/chat-ui 0.0.0-stage → 0.1.6

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 (248) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +100 -2
  3. package/lib/adapters/event-bus.d.ts +80 -0
  4. package/lib/adapters/event-bus.js +73 -0
  5. package/lib/adapters/index.d.ts +3 -0
  6. package/lib/adapters/index.js +3 -0
  7. package/lib/adapters/labels.d.ts +6 -0
  8. package/lib/adapters/labels.js +17 -0
  9. package/lib/adapters/stream-bridge.d.ts +9 -0
  10. package/lib/adapters/stream-bridge.js +7 -0
  11. package/lib/blocks/cards/AskCard.d.ts +8 -0
  12. package/lib/blocks/cards/AskCard.js +97 -0
  13. package/lib/blocks/cards/CompactionCard.d.ts +5 -0
  14. package/lib/blocks/cards/CompactionCard.js +5 -0
  15. package/lib/blocks/cards/ContextUsage.d.ts +14 -0
  16. package/lib/blocks/cards/ContextUsage.js +136 -0
  17. package/lib/blocks/cards/DisplayCard.d.ts +7 -0
  18. package/lib/blocks/cards/DisplayCard.js +27 -0
  19. package/lib/blocks/cards/MemoryPill.d.ts +5 -0
  20. package/lib/blocks/cards/MemoryPill.js +5 -0
  21. package/lib/blocks/cards/OutputCard.d.ts +5 -0
  22. package/lib/blocks/cards/OutputCard.js +13 -0
  23. package/lib/blocks/cards/PermissionCard.d.ts +21 -0
  24. package/lib/blocks/cards/PermissionCard.js +26 -0
  25. package/lib/blocks/cards/SpringCheck.d.ts +9 -0
  26. package/lib/blocks/cards/SpringCheck.js +17 -0
  27. package/lib/blocks/cards/TodoCard.d.ts +19 -0
  28. package/lib/blocks/cards/TodoCard.js +28 -0
  29. package/lib/blocks/cards/index.d.ts +10 -0
  30. package/lib/blocks/cards/index.js +10 -0
  31. package/lib/blocks/composer/Composer.d.ts +66 -0
  32. package/lib/blocks/composer/Composer.js +73 -0
  33. package/lib/blocks/composer/ComposerAttachments.d.ts +17 -0
  34. package/lib/blocks/composer/ComposerAttachments.js +10 -0
  35. package/lib/blocks/composer/ComposerGrip.d.ts +1 -0
  36. package/lib/blocks/composer/ComposerGrip.js +39 -0
  37. package/lib/blocks/composer/ComposerInput.d.ts +18 -0
  38. package/lib/blocks/composer/ComposerInput.js +60 -0
  39. package/lib/blocks/composer/ComposerMenus.d.ts +10 -0
  40. package/lib/blocks/composer/ComposerMenus.js +78 -0
  41. package/lib/blocks/composer/ComposerToolbar.d.ts +27 -0
  42. package/lib/blocks/composer/ComposerToolbar.js +16 -0
  43. package/lib/blocks/composer/MentionPicker.d.ts +13 -0
  44. package/lib/blocks/composer/MentionPicker.js +71 -0
  45. package/lib/blocks/composer/PromptPop.d.ts +7 -0
  46. package/lib/blocks/composer/PromptPop.js +40 -0
  47. package/lib/blocks/composer/QueuedPrompts.d.ts +14 -0
  48. package/lib/blocks/composer/QueuedPrompts.js +21 -0
  49. package/lib/blocks/composer/SlingButton.d.ts +10 -0
  50. package/lib/blocks/composer/SlingButton.js +112 -0
  51. package/lib/blocks/composer/index.d.ts +7 -0
  52. package/lib/blocks/composer/index.js +1 -0
  53. package/lib/blocks/conversation/ChatEmptyScene.d.ts +4 -0
  54. package/lib/blocks/conversation/ChatEmptyScene.js +21 -0
  55. package/lib/blocks/conversation/ChatHeader.d.ts +13 -0
  56. package/lib/blocks/conversation/ChatHeader.js +20 -0
  57. package/lib/blocks/conversation/ChatPane.d.ts +90 -0
  58. package/lib/blocks/conversation/ChatPane.js +60 -0
  59. package/lib/blocks/conversation/Conversation.d.ts +11 -0
  60. package/lib/blocks/conversation/Conversation.js +41 -0
  61. package/lib/blocks/conversation/LineSidebar.d.ts +14 -0
  62. package/lib/blocks/conversation/LineSidebar.js +42 -0
  63. package/lib/blocks/conversation/index.d.ts +5 -0
  64. package/lib/blocks/conversation/index.js +5 -0
  65. package/lib/blocks/index.d.ts +9 -0
  66. package/lib/blocks/index.js +9 -0
  67. package/lib/blocks/message/DayDivider.d.ts +10 -0
  68. package/lib/blocks/message/DayDivider.js +29 -0
  69. package/lib/blocks/message/DiffView.d.ts +5 -0
  70. package/lib/blocks/message/DiffView.js +18 -0
  71. package/lib/blocks/message/MermaidDiagram.d.ts +4 -0
  72. package/lib/blocks/message/MermaidDiagram.js +43 -0
  73. package/lib/blocks/message/Message.d.ts +17 -0
  74. package/lib/blocks/message/Message.js +45 -0
  75. package/lib/blocks/message/MessageActionBar.d.ts +18 -0
  76. package/lib/blocks/message/MessageActionBar.js +15 -0
  77. package/lib/blocks/message/MessageArtifacts.d.ts +13 -0
  78. package/lib/blocks/message/MessageArtifacts.js +9 -0
  79. package/lib/blocks/message/MessageAttachments.d.ts +5 -0
  80. package/lib/blocks/message/MessageAttachments.js +28 -0
  81. package/lib/blocks/message/MessageBubble.d.ts +11 -0
  82. package/lib/blocks/message/MessageBubble.js +31 -0
  83. package/lib/blocks/message/MessageRow.d.ts +20 -0
  84. package/lib/blocks/message/MessageRow.js +49 -0
  85. package/lib/blocks/message/MessageStream.d.ts +23 -0
  86. package/lib/blocks/message/MessageStream.js +80 -0
  87. package/lib/blocks/message/MessageTrace.d.ts +16 -0
  88. package/lib/blocks/message/MessageTrace.js +39 -0
  89. package/lib/blocks/message/PartView.d.ts +10 -0
  90. package/lib/blocks/message/PartView.js +29 -0
  91. package/lib/blocks/message/code-text.d.ts +15 -0
  92. package/lib/blocks/message/code-text.js +17 -0
  93. package/lib/blocks/message/index.d.ts +12 -0
  94. package/lib/blocks/message/index.js +12 -0
  95. package/lib/blocks/reasoning/Reasoning.d.ts +7 -0
  96. package/lib/blocks/reasoning/Reasoning.js +26 -0
  97. package/lib/blocks/reasoning/ReasoningBlock.d.ts +6 -0
  98. package/lib/blocks/reasoning/ReasoningBlock.js +5 -0
  99. package/lib/blocks/reasoning/index.d.ts +2 -0
  100. package/lib/blocks/reasoning/index.js +2 -0
  101. package/lib/blocks/selection/SelectionActions.d.ts +12 -0
  102. package/lib/blocks/selection/SelectionActions.js +29 -0
  103. package/lib/blocks/selection/SelectionBar.d.ts +10 -0
  104. package/lib/blocks/selection/SelectionBar.js +6 -0
  105. package/lib/blocks/selection/index.d.ts +2 -0
  106. package/lib/blocks/selection/index.js +2 -0
  107. package/lib/blocks/settings/DisplaySettingsPanel.d.ts +5 -0
  108. package/lib/blocks/settings/DisplaySettingsPanel.js +33 -0
  109. package/lib/blocks/settings/SquishSwitch.d.ts +8 -0
  110. package/lib/blocks/settings/SquishSwitch.js +21 -0
  111. package/lib/blocks/settings/index.d.ts +2 -0
  112. package/lib/blocks/settings/index.js +2 -0
  113. package/lib/blocks/status/LatticeLoader.d.ts +12 -0
  114. package/lib/blocks/status/LatticeLoader.js +22 -0
  115. package/lib/blocks/status/TypingIndicator.d.ts +5 -0
  116. package/lib/blocks/status/TypingIndicator.js +5 -0
  117. package/lib/blocks/status/index.d.ts +2 -0
  118. package/lib/blocks/status/index.js +2 -0
  119. package/lib/blocks/tool/SandboxCard.d.ts +5 -0
  120. package/lib/blocks/tool/SandboxCard.js +10 -0
  121. package/lib/blocks/tool/ToolCard.d.ts +10 -0
  122. package/lib/blocks/tool/ToolCard.js +32 -0
  123. package/lib/blocks/tool/ToolGroup.d.ts +6 -0
  124. package/lib/blocks/tool/ToolGroup.js +23 -0
  125. package/lib/blocks/tool/exec-envelope.d.ts +7 -0
  126. package/lib/blocks/tool/exec-envelope.js +43 -0
  127. package/lib/blocks/tool/index.d.ts +4 -0
  128. package/lib/blocks/tool/index.js +4 -0
  129. package/lib/domain/ask.d.ts +14 -0
  130. package/lib/domain/ask.js +50 -0
  131. package/lib/domain/attachments.d.ts +16 -0
  132. package/lib/domain/attachments.js +126 -0
  133. package/lib/domain/attribution.d.ts +4 -0
  134. package/lib/domain/attribution.js +11 -0
  135. package/lib/domain/composer-palette.d.ts +15 -0
  136. package/lib/domain/composer-palette.js +131 -0
  137. package/lib/domain/index.d.ts +12 -0
  138. package/lib/domain/index.js +12 -0
  139. package/lib/domain/mention.d.ts +17 -0
  140. package/lib/domain/mention.js +95 -0
  141. package/lib/domain/message-blocks.d.ts +29 -0
  142. package/lib/domain/message-blocks.js +63 -0
  143. package/lib/domain/message-menu.d.ts +4 -0
  144. package/lib/domain/message-menu.js +46 -0
  145. package/lib/domain/queue.d.ts +23 -0
  146. package/lib/domain/queue.js +52 -0
  147. package/lib/domain/reducer.d.ts +137 -0
  148. package/lib/domain/reducer.js +442 -0
  149. package/lib/domain/selection-actions.d.ts +13 -0
  150. package/lib/domain/selection-actions.js +56 -0
  151. package/lib/domain/selection-gates.d.ts +6 -0
  152. package/lib/domain/selection-gates.js +36 -0
  153. package/lib/domain/slash-commands.d.ts +16 -0
  154. package/lib/domain/slash-commands.js +142 -0
  155. package/lib/hooks/index.d.ts +8 -0
  156. package/lib/hooks/index.js +8 -0
  157. package/lib/hooks/useComposerPalette.d.ts +35 -0
  158. package/lib/hooks/useComposerPalette.js +120 -0
  159. package/lib/hooks/useComposerSubmit.d.ts +31 -0
  160. package/lib/hooks/useComposerSubmit.js +135 -0
  161. package/lib/hooks/useInputHistory.d.ts +14 -0
  162. package/lib/hooks/useInputHistory.js +52 -0
  163. package/lib/hooks/usePendingAsk.d.ts +11 -0
  164. package/lib/hooks/usePendingAsk.js +33 -0
  165. package/lib/hooks/usePendingPermissions.d.ts +10 -0
  166. package/lib/hooks/usePendingPermissions.js +26 -0
  167. package/lib/hooks/useQueuedPrompts.d.ts +12 -0
  168. package/lib/hooks/useQueuedPrompts.js +91 -0
  169. package/lib/hooks/useSelectionPop.d.ts +13 -0
  170. package/lib/hooks/useSelectionPop.js +130 -0
  171. package/lib/hooks/useStreamBridge.d.ts +1 -0
  172. package/lib/hooks/useStreamBridge.js +23 -0
  173. package/lib/index.d.ts +10 -0
  174. package/lib/index.js +10 -0
  175. package/lib/primitives/Badge.d.ts +7 -0
  176. package/lib/primitives/Badge.js +13 -0
  177. package/lib/primitives/Button.d.ts +9 -0
  178. package/lib/primitives/Button.js +21 -0
  179. package/lib/primitives/Collapsible.d.ts +12 -0
  180. package/lib/primitives/Collapsible.js +14 -0
  181. package/lib/primitives/Dialog.d.ts +10 -0
  182. package/lib/primitives/Dialog.js +19 -0
  183. package/lib/primitives/DropdownMenu.d.ts +28 -0
  184. package/lib/primitives/DropdownMenu.js +37 -0
  185. package/lib/primitives/Empty.d.ts +8 -0
  186. package/lib/primitives/Empty.js +6 -0
  187. package/lib/primitives/Input.d.ts +3 -0
  188. package/lib/primitives/Input.js +6 -0
  189. package/lib/primitives/Kbd.d.ts +2 -0
  190. package/lib/primitives/Kbd.js +5 -0
  191. package/lib/primitives/Popover.d.ts +15 -0
  192. package/lib/primitives/Popover.js +32 -0
  193. package/lib/primitives/ScrollArea.d.ts +5 -0
  194. package/lib/primitives/ScrollArea.js +5 -0
  195. package/lib/primitives/Separator.d.ts +5 -0
  196. package/lib/primitives/Separator.js +5 -0
  197. package/lib/primitives/Spinner.d.ts +5 -0
  198. package/lib/primitives/Spinner.js +5 -0
  199. package/lib/primitives/Textarea.d.ts +3 -0
  200. package/lib/primitives/Textarea.js +6 -0
  201. package/lib/primitives/Tooltip.d.ts +8 -0
  202. package/lib/primitives/Tooltip.js +7 -0
  203. package/lib/primitives/index.d.ts +14 -0
  204. package/lib/primitives/index.js +14 -0
  205. package/lib/reactbits/Motion.d.ts +24 -0
  206. package/lib/reactbits/Motion.js +52 -0
  207. package/lib/reactbits/index.d.ts +1 -0
  208. package/lib/reactbits/index.js +1 -0
  209. package/lib/stores/chat-store.d.ts +33 -0
  210. package/lib/stores/chat-store.js +93 -0
  211. package/lib/stores/display-store.d.ts +15 -0
  212. package/lib/stores/display-store.js +116 -0
  213. package/lib/stores/index.d.ts +3 -0
  214. package/lib/stores/index.js +3 -0
  215. package/lib/stores/theme-store.d.ts +8 -0
  216. package/lib/stores/theme-store.js +29 -0
  217. package/lib/tokens/index.d.ts +21 -0
  218. package/lib/tokens/index.js +66 -0
  219. package/lib/types/agent.d.ts +62 -0
  220. package/lib/types/agent.js +1 -0
  221. package/lib/types/callbacks.d.ts +55 -0
  222. package/lib/types/callbacks.js +1 -0
  223. package/lib/types/composer.d.ts +116 -0
  224. package/lib/types/composer.js +1 -0
  225. package/lib/types/conversation.d.ts +54 -0
  226. package/lib/types/conversation.js +1 -0
  227. package/lib/types/display.d.ts +25 -0
  228. package/lib/types/display.js +40 -0
  229. package/lib/types/index.d.ts +8 -0
  230. package/lib/types/index.js +8 -0
  231. package/lib/types/message.d.ts +100 -0
  232. package/lib/types/message.js +1 -0
  233. package/lib/types/selection.d.ts +60 -0
  234. package/lib/types/selection.js +1 -0
  235. package/lib/types/theme.d.ts +100 -0
  236. package/lib/types/theme.js +1 -0
  237. package/lib/utils/clipboard.d.ts +4 -0
  238. package/lib/utils/clipboard.js +41 -0
  239. package/lib/utils/cn.d.ts +2 -0
  240. package/lib/utils/cn.js +14 -0
  241. package/lib/utils/index.d.ts +3 -0
  242. package/lib/utils/index.js +3 -0
  243. package/lib/utils/storage.d.ts +11 -0
  244. package/lib/utils/storage.js +48 -0
  245. package/package.json +93 -4
  246. package/src/styles/blocks.css +2439 -0
  247. package/src/styles/index.css +3 -0
  248. package/src/tokens/theme.css +464 -0
@@ -0,0 +1,2439 @@
1
+
2
+
3
+
4
+ .ac-stream-wrap {
5
+ position: relative;
6
+ min-height: 0;
7
+ flex: 1;
8
+ display: flex;
9
+ flex-direction: column;
10
+ }
11
+
12
+ .ac-stream-viewport {
13
+ position: relative;
14
+ min-height: 0;
15
+ flex: 1;
16
+ display: flex;
17
+ flex-direction: column;
18
+ }
19
+ .ac-stream {
20
+ display: flex;
21
+ min-height: 0;
22
+ flex: 1;
23
+ flex-direction: column;
24
+ gap: 14px;
25
+ overflow-y: auto;
26
+ padding: 16px var(--ac-gutter) 8px;
27
+ }
28
+ .ac-stream > * {
29
+ max-width: var(--ac-content-max);
30
+ margin: 0 auto;
31
+ width: 100%;
32
+ }
33
+ .ac-stream__divider {
34
+ align-self: center;
35
+ border-radius: 999px;
36
+ background: var(--surface-800);
37
+ padding: 2px 12px;
38
+ font-size: var(--text-meta);
39
+ line-height: var(--text-meta--line-height);
40
+ color: var(--text-400);
41
+ }
42
+ .ac-stream__day {
43
+ display: flex;
44
+ align-items: center;
45
+ gap: 12px;
46
+ margin: 18px auto 10px;
47
+ font-size: var(--text-micro);
48
+ color: var(--text-500);
49
+ }
50
+ .ac-stream__day::before,
51
+ .ac-stream__day::after {
52
+ content: "";
53
+ height: 1px;
54
+ flex: 1;
55
+ background: var(--border-rule);
56
+ }
57
+ .ac-notes {
58
+ display: flex;
59
+ width: 100%;
60
+ max-width: var(--ac-content-max);
61
+ flex-direction: column;
62
+ gap: 6px;
63
+ margin: 0 auto;
64
+ }
65
+
66
+
67
+ .ac-msg-slot {
68
+ display: flex;
69
+ width: 100%;
70
+ align-items: flex-start;
71
+ gap: 8px;
72
+ }
73
+ .ac-msg-slot[data-align="end"] {
74
+ justify-content: flex-end;
75
+ }
76
+ .ac-msg-slot[data-select-mode="true"] {
77
+ cursor: pointer;
78
+ }
79
+ .ac-msg-slot[data-selected="true"] {
80
+ background: var(--surface-800);
81
+ margin: 0 max(calc((100% - var(--ac-content-max)) / -2), calc(var(--ac-gutter) * -1));
82
+ padding: 4px 20px;
83
+ border-radius: var(--radius-md);
84
+ }
85
+ .ac-select-box {
86
+ display: inline-flex;
87
+ width: 18px;
88
+ height: 18px;
89
+ flex-shrink: 0;
90
+ align-items: center;
91
+ justify-content: center;
92
+ border: 1px solid var(--border-600);
93
+ border-radius: 999px;
94
+ color: var(--surface-950);
95
+ }
96
+ .ac-select-box[data-state="checked"] {
97
+ background: var(--accent-success);
98
+ border-color: var(--accent-success);
99
+ }
100
+ .ac-msg {
101
+ display: flex;
102
+ width: 100%;
103
+ max-width: 100%;
104
+ gap: 8px;
105
+ animation: ac-msg-enter 120ms ease-out;
106
+ }
107
+ .ac-msg[data-align="end"] {
108
+ max-width: 85%;
109
+ margin-left: auto;
110
+ flex-direction: row-reverse;
111
+ }
112
+ .ac-msg__col {
113
+ display: flex;
114
+ min-width: 0;
115
+ flex-direction: column;
116
+ gap: 4px;
117
+ }
118
+ .ac-msg__col[data-align="end"],
119
+ .ac-msg-slot[data-align="end"] .ac-msg__col {
120
+ align-items: flex-end;
121
+ }
122
+
123
+ .ac-msg__meta {
124
+ display: flex;
125
+ align-items: center;
126
+ gap: 8px;
127
+ font-size: var(--text-meta);
128
+ line-height: var(--text-meta--line-height);
129
+ color: var(--text-400);
130
+ }
131
+ .ac-msg__meta time {
132
+ font-variant-numeric: tabular-nums;
133
+ font-weight: 500;
134
+ }
135
+ .ac-msg__who {
136
+ font-weight: 500;
137
+ color: var(--text-300);
138
+ }
139
+ .ac-msg__ctx {
140
+ margin-left: auto;
141
+ }
142
+ .ac-avatar {
143
+ display: inline-flex;
144
+ width: 28px;
145
+ height: 28px;
146
+ flex-shrink: 0;
147
+ align-items: center;
148
+ justify-content: center;
149
+ border-radius: 999px;
150
+ background: var(--surface-800);
151
+ border: 1px solid var(--border-700);
152
+ font-size: var(--text-meta);
153
+ color: var(--text-300);
154
+ }
155
+ .ac-avatar[data-kind="self"] {
156
+ background: var(--surface-700);
157
+ border-color: var(--border-600);
158
+ }
159
+
160
+ .ac-bubble {
161
+ padding: 0;
162
+ border-radius: 0;
163
+ background: transparent;
164
+ border: 0;
165
+ color: var(--text-200);
166
+ overflow-wrap: anywhere;
167
+ }
168
+ .ac-bubble[data-msg-role="user"] {
169
+ padding: 10px 14px;
170
+ border-radius: 16px;
171
+ background: var(--surface-700);
172
+ border: 1px solid var(--border-700);
173
+ color: var(--text-100);
174
+ }
175
+ .ac-bubble[data-msg-role="system"] {
176
+ padding: 6px 12px;
177
+ border-radius: var(--radius-md);
178
+ background: color-mix(in srgb, var(--surface-800) 50%, transparent);
179
+ color: var(--text-400);
180
+ }
181
+ .ac-bubble[data-msg-role="tool"] {
182
+ padding: 2px 0;
183
+ background: transparent;
184
+ }
185
+ .ac-bubble[data-variant="mention"] {
186
+ background: var(--surface-800);
187
+ }
188
+ .ac-bubble__mention {
189
+ display: inline-flex;
190
+ height: var(--control-xs);
191
+ align-items: center;
192
+ padding: 0 6px;
193
+ border-radius: 999px;
194
+ background: var(--surface-700);
195
+ color: var(--text-200);
196
+ font-weight: 500;
197
+ font-size: var(--text-meta);
198
+ }
199
+
200
+
201
+ .ac-card {
202
+ min-width: min(320px, 100%);
203
+ overflow: hidden;
204
+ border: 1px solid var(--border-700);
205
+ border-radius: var(--radius-md);
206
+ background: var(--surface-900);
207
+ font-size: var(--text-meta);
208
+ }
209
+ .ac-card__head {
210
+ display: flex;
211
+ align-items: center;
212
+ gap: 6px;
213
+ padding: 8px 10px;
214
+ border-bottom: 1px solid var(--border-rule);
215
+ }
216
+ .ac-card__title {
217
+ font-weight: 500;
218
+ color: var(--text-200);
219
+ }
220
+ .ac-card__state {
221
+ margin-left: auto;
222
+ color: var(--text-400);
223
+ }
224
+ .ac-card__dot {
225
+ width: 6px;
226
+ height: 6px;
227
+ border-radius: 999px;
228
+ background: var(--accent-success);
229
+ }
230
+ .ac-card__dot[data-state="running"] {
231
+ background: var(--accent-warning);
232
+ animation: ac-pulse 1.1s ease-in-out infinite;
233
+ }
234
+ .ac-card__dot[data-state="error"] {
235
+ background: var(--accent-danger);
236
+ }
237
+ .ac-card__body {
238
+ padding: 8px 10px;
239
+ font-family: var(--font-code);
240
+ white-space: pre-wrap;
241
+ overflow-wrap: anywhere;
242
+ color: var(--text-300);
243
+ }
244
+
245
+ .ac-compact {
246
+ display: flex;
247
+ align-items: center;
248
+ gap: 8px;
249
+ align-self: center;
250
+ padding: 2px 0;
251
+ font-size: var(--text-meta);
252
+ color: var(--text-500);
253
+ }
254
+ .ac-compact__tokens {
255
+ font-family: var(--font-code);
256
+ font-variant-numeric: tabular-nums;
257
+ }
258
+ .ac-compact__reason {
259
+ max-width: 180px;
260
+ overflow: hidden;
261
+ text-overflow: ellipsis;
262
+ white-space: nowrap;
263
+ }
264
+
265
+ .ac-memory {
266
+ display: inline-flex;
267
+ max-width: 100%;
268
+ align-items: center;
269
+ gap: 5px;
270
+ align-self: flex-start;
271
+ font-size: var(--text-micro);
272
+ line-height: 1.5;
273
+ color: var(--text-500);
274
+ opacity: 0.85;
275
+ }
276
+ .ac-memory__count {
277
+ flex-shrink: 0;
278
+ color: var(--text-400);
279
+ }
280
+ .ac-memory__excerpt {
281
+ max-width: 300px;
282
+ overflow: hidden;
283
+ text-overflow: ellipsis;
284
+ white-space: nowrap;
285
+ }
286
+
287
+
288
+ .ac-tools {
289
+ min-width: min(320px, 100%);
290
+ border: 1px solid var(--border-700);
291
+ border-radius: var(--radius-md);
292
+ background: var(--surface-900);
293
+ overflow: hidden;
294
+ }
295
+ .ac-tools__trigger {
296
+ display: flex;
297
+ width: 100%;
298
+ align-items: center;
299
+ gap: 6px;
300
+ padding: 8px 10px;
301
+ text-align: left;
302
+ color: var(--text-300);
303
+ }
304
+ .ac-tools__trigger:hover {
305
+ background: var(--surface-800);
306
+ }
307
+ .ac-tools__dot {
308
+ width: 6px;
309
+ height: 6px;
310
+ border-radius: 999px;
311
+ background: var(--accent-success);
312
+ }
313
+ .ac-tools__dot[data-status="running"] {
314
+ background: var(--accent-warning);
315
+ }
316
+ .ac-tools__dot[data-status="error"] {
317
+ background: var(--accent-danger);
318
+ }
319
+ .ac-tools__title {
320
+ font-weight: 500;
321
+ }
322
+ .ac-tools__names {
323
+ min-width: 0;
324
+ overflow: hidden;
325
+ text-overflow: ellipsis;
326
+ white-space: nowrap;
327
+ font-family: var(--font-code);
328
+ font-size: var(--text-micro);
329
+ color: var(--text-500);
330
+ }
331
+ .ac-tools__chevron {
332
+ margin-left: auto;
333
+ transition: transform 150ms ease;
334
+ }
335
+ .ac-tools__body {
336
+ display: flex;
337
+ flex-direction: column;
338
+ gap: 4px;
339
+ padding: 6px 8px;
340
+ border-top: 1px solid var(--border-800);
341
+ }
342
+
343
+
344
+ .ac-typing {
345
+ display: inline-flex;
346
+ align-items: center;
347
+ gap: 6px;
348
+ color: var(--text-400);
349
+ font-size: var(--text-meta);
350
+ }
351
+ .ac-typing i {
352
+ width: 4px;
353
+ height: 4px;
354
+ border-radius: 999px;
355
+ background: var(--accent-primary);
356
+ animation: ac-blink 1.2s ease-in-out infinite;
357
+ }
358
+ .ac-typing i:nth-child(2) {
359
+ animation-delay: 0.15s;
360
+ }
361
+ .ac-typing i:nth-child(3) {
362
+ animation-delay: 0.3s;
363
+ }
364
+
365
+
366
+ .ac-attach__grid {
367
+ display: grid;
368
+ gap: 6px;
369
+ margin-bottom: 6px;
370
+ }
371
+ .ac-attach__grid[data-cols="1"] {
372
+ grid-template-columns: minmax(0, 1fr);
373
+ }
374
+ .ac-attach__grid[data-cols="2"] {
375
+ grid-template-columns: repeat(2, minmax(0, 1fr));
376
+ }
377
+ .ac-attach__grid[data-cols="3"] {
378
+ grid-template-columns: repeat(3, minmax(0, 1fr));
379
+ }
380
+ .ac-attach__tile {
381
+ position: relative;
382
+ overflow: hidden;
383
+ border-radius: var(--radius-sm);
384
+ cursor: zoom-in;
385
+ }
386
+ .ac-attach__grid[data-cols="1"] .ac-attach__tile {
387
+ width: fit-content;
388
+ }
389
+ .ac-attach__grid[data-cols="1"] .ac-attach__img {
390
+ max-width: 320px;
391
+ max-height: 240px;
392
+ object-fit: contain;
393
+ }
394
+ .ac-attach__grid:not([data-cols="1"]) .ac-attach__tile {
395
+ aspect-ratio: 1;
396
+ }
397
+ .ac-attach__grid:not([data-cols="1"]) .ac-attach__img {
398
+ width: 100%;
399
+ height: 100%;
400
+ object-fit: cover;
401
+ }
402
+ .ac-attach__tile[data-state="error"] {
403
+ cursor: not-allowed;
404
+ }
405
+ .ac-attach__ph {
406
+ position: absolute;
407
+ inset: 0;
408
+ display: flex;
409
+ align-items: center;
410
+ justify-content: center;
411
+ font-size: var(--text-micro);
412
+ color: var(--text-500);
413
+ }
414
+ .ac-attach__preview-img {
415
+ max-height: 70vh;
416
+ max-width: min(92vw, 900px);
417
+ object-fit: contain;
418
+ }
419
+ .ac-attach__strip {
420
+ display: flex;
421
+ flex-wrap: wrap;
422
+ align-items: center;
423
+ gap: 6px;
424
+ padding: 6px 12px 0;
425
+ }
426
+ .ac-attach__chip {
427
+ display: inline-flex;
428
+ max-width: 220px;
429
+ align-items: center;
430
+ gap: 5px;
431
+ padding: 3px 8px 3px 5px;
432
+ border-radius: var(--radius-pill);
433
+ background: var(--surface-800);
434
+ border: 1px solid var(--border-700);
435
+ font-size: var(--text-meta);
436
+ color: var(--text-200);
437
+ }
438
+ .ac-attach__chip-thumb {
439
+ width: 16px;
440
+ height: 16px;
441
+ border-radius: 4px;
442
+ object-fit: cover;
443
+ }
444
+ .ac-attach__chip-icon {
445
+ width: 13px;
446
+ height: 13px;
447
+ flex-shrink: 0;
448
+ color: var(--text-400);
449
+ }
450
+ .ac-attach__chip-name {
451
+ overflow: hidden;
452
+ text-overflow: ellipsis;
453
+ white-space: nowrap;
454
+ }
455
+ .ac-attach__remove {
456
+ display: grid;
457
+ width: 16px;
458
+ height: 16px;
459
+ flex-shrink: 0;
460
+ place-items: center;
461
+ border-radius: 999px;
462
+ color: var(--text-500);
463
+ }
464
+ .ac-attach__remove:hover {
465
+ color: var(--accent-danger);
466
+ background: var(--surface-700);
467
+ }
468
+ .ac-vision-tag {
469
+ display: inline-flex;
470
+ align-items: center;
471
+ border-radius: 999px;
472
+ padding: 1px 8px;
473
+ font-size: var(--text-micro);
474
+ }
475
+ .ac-vision-tag[data-state="no"] {
476
+ background: var(--surface-800);
477
+ color: var(--text-300);
478
+ }
479
+
480
+
481
+ .ac-chat {
482
+ position: relative;
483
+ display: flex;
484
+ min-height: 0;
485
+ flex: 1;
486
+ flex-direction: column;
487
+ }
488
+ .ac-composer {
489
+ position: relative;
490
+ display: flex;
491
+ flex-direction: column;
492
+ padding: 10px var(--ac-gutter) 12px;
493
+ background: var(--surface-950);
494
+ }
495
+ .ac-composer__card {
496
+ position: relative;
497
+
498
+ border-radius: var(--radius-xl);
499
+ background: var(--surface-900);
500
+
501
+ border: 1px solid var(--border-control);
502
+ box-shadow: 0 1px 2px var(--shadow-strong);
503
+ transition: border-color 150ms ease;
504
+ }
505
+
506
+ .ac-composer__field {
507
+ min-height: 38px;
508
+ height: var(--ac-field-h, 64px);
509
+ padding: 10px 14px;
510
+ border: 0;
511
+ border-radius: var(--radius-xl) var(--radius-xl) 0 0;
512
+ background: transparent;
513
+ resize: none;
514
+ overflow-y: auto;
515
+ font-variant-ligatures: none;
516
+ }
517
+ .ac-composer__field:focus {
518
+ outline: none;
519
+ }
520
+
521
+ .ac-composer__field:focus-visible {
522
+ box-shadow: inset 0 0 0 1px var(--border-500);
523
+ border-radius: var(--radius-md);
524
+ }
525
+ .ac-composer__bar {
526
+ display: flex;
527
+ height: 36px;
528
+ align-items: center;
529
+ gap: 8px;
530
+ padding: 0 8px;
531
+ }
532
+ .ac-composer__left {
533
+ display: flex;
534
+ align-items: center;
535
+ gap: 6px;
536
+ }
537
+ .ac-composer__count {
538
+ margin-right: auto;
539
+ font-size: var(--text-micro);
540
+ color: var(--text-500);
541
+ }
542
+ .ac-composer__right {
543
+ display: flex;
544
+ align-items: center;
545
+ gap: 6px;
546
+ }
547
+ .ac-composer__send {
548
+ width: 30px;
549
+ height: 30px;
550
+ border-radius: 999px;
551
+ }
552
+ .ac-composer__send[data-state="idle"] {
553
+ background: var(--primary);
554
+ color: var(--primary-foreground);
555
+ }
556
+ .ac-composer__send[data-state="idle"]:hover {
557
+ opacity: 0.88;
558
+ }
559
+ .ac-composer__send[data-state="disabled"] {
560
+ background: transparent;
561
+ border: 1px solid var(--border-600);
562
+ color: var(--text-500);
563
+ }
564
+ .ac-composer__send[data-state="streaming"] {
565
+ background: var(--surface-700);
566
+ border: 1px solid var(--border-600);
567
+ color: var(--text-200);
568
+ }
569
+ .ac-composer__stop-ring {
570
+ display: grid;
571
+ width: 26px;
572
+ height: 26px;
573
+ place-items: center;
574
+ border-radius: 999px;
575
+ border: 1px solid var(--border-600);
576
+ color: var(--text-300);
577
+ }
578
+
579
+ .ac-composer__stop-ring:hover {
580
+ background: var(--surface-700);
581
+ }
582
+ .ac-composer__mic {
583
+ display: grid;
584
+ width: 28px;
585
+ height: 28px;
586
+ place-items: center;
587
+ border-radius: 999px;
588
+ color: var(--text-300);
589
+ }
590
+ .ac-composer__mic:hover {
591
+ background: var(--surface-700);
592
+ }
593
+ .ac-composer__mic[data-state="listening"] {
594
+ color: var(--accent-danger);
595
+ animation: ac-pulse 1.2s ease-in-out infinite;
596
+ }
597
+ .ac-composer__chip {
598
+ display: inline-flex;
599
+ height: var(--control-sm);
600
+ max-width: 180px;
601
+ align-items: center;
602
+ gap: 4px;
603
+ padding: 0 8px;
604
+ border: 1px solid var(--border-700);
605
+ border-radius: var(--radius-pill);
606
+ color: var(--text-300);
607
+ cursor: pointer;
608
+ }
609
+ .ac-composer__chip[data-mode="yolo"] {
610
+ color: var(--accent-warning);
611
+ }
612
+ .ac-composer__chip-label {
613
+ overflow: hidden;
614
+ text-overflow: ellipsis;
615
+ white-space: nowrap;
616
+ font-size: var(--text-meta);
617
+ }
618
+ .ac-composer__perm-icon {
619
+ width: 13px;
620
+ height: 13px;
621
+ }
622
+ .ac-composer__perm-caret {
623
+ width: 12px;
624
+ height: 12px;
625
+ opacity: 0.6;
626
+ }
627
+ .ac-menu__check-spacer {
628
+ display: inline-block;
629
+ width: 1em;
630
+ }
631
+ .ac-perm-menu__hint,
632
+ .ac-model-menu__hint {
633
+ display: block;
634
+ font-size: var(--text-micro);
635
+ color: var(--text-500);
636
+ }
637
+ .ac-model-menu__list {
638
+ max-height: 288px;
639
+ overflow-y: auto;
640
+ }
641
+ .ac-model-row {
642
+ display: flex;
643
+ align-items: center;
644
+ gap: 8px;
645
+ }
646
+ .ac-model-tile {
647
+ position: relative;
648
+ display: inline-flex;
649
+ }
650
+ .ac-model-tile__badge {
651
+ position: absolute;
652
+ right: -4px;
653
+ bottom: -4px;
654
+ color: var(--accent-primary);
655
+ }
656
+ .ac-model-menu__group {
657
+ padding-top: 6px;
658
+ }
659
+ .ac-model-menu__name-line {
660
+ display: flex;
661
+ align-items: center;
662
+ gap: 6px;
663
+ }
664
+ .ac-model-menu__multiplier {
665
+ margin-left: auto;
666
+ font-size: var(--text-micro);
667
+ color: var(--text-500);
668
+ font-variant-numeric: tabular-nums;
669
+ }
670
+ .ac-model-badge {
671
+ display: inline-flex;
672
+ align-items: center;
673
+ padding: 0 6px;
674
+ border-radius: 999px;
675
+ font-size: var(--text-micro);
676
+ line-height: 16px;
677
+ white-space: nowrap;
678
+ }
679
+ .ac-model-badge[data-tone="warn"] {
680
+ background: color-mix(in srgb, var(--accent-warning) 16%, transparent);
681
+ color: var(--accent-warning);
682
+ }
683
+ .ac-model-badge[data-tone="accent"] {
684
+ background: var(--surface-700);
685
+ color: var(--accent-primary);
686
+ }
687
+ .ac-model-badge[data-tone="danger"] {
688
+ background: color-mix(in srgb, var(--accent-danger) 16%, transparent);
689
+ color: var(--accent-danger);
690
+ }
691
+ .ac-model-badge[data-tone="neutral"] {
692
+ background: var(--surface-700);
693
+ color: var(--text-300);
694
+ }
695
+
696
+
697
+
698
+ .ac-composer__grip {
699
+ position: absolute;
700
+ top: -5px;
701
+ left: 50%;
702
+ z-index: 12;
703
+ display: grid;
704
+ width: 96px;
705
+ height: 12px;
706
+ transform: translateX(-50%);
707
+ place-items: center;
708
+ cursor: ew-resize;
709
+ touch-action: none;
710
+ opacity: 0;
711
+ transition: opacity 140ms ease;
712
+ }
713
+ .ac-composer__card:hover .ac-composer__grip,
714
+ .ac-composer__grip:focus-visible,
715
+ .ac-composer__grip[data-dragging="true"] {
716
+ opacity: 1;
717
+ }
718
+ .ac-composer__grip::before {
719
+ content: "";
720
+ width: 44px;
721
+ height: 3px;
722
+ border-radius: 999px;
723
+ background: var(--border-600);
724
+ transition:
725
+ width 140ms ease,
726
+ background 140ms ease;
727
+ }
728
+ .ac-composer__grip:hover::before,
729
+ .ac-composer__grip[data-dragging="true"]::before {
730
+ width: 72px;
731
+ background: var(--accent-primary);
732
+ }
733
+
734
+
735
+ .ac-composer__dock {
736
+ position: relative;
737
+ }
738
+ .ac-mention {
739
+ position: absolute;
740
+ left: 10px;
741
+ bottom: calc(100% + 6px);
742
+ width: min(24rem, calc(100% - 20px));
743
+ border: 1px solid var(--border-600);
744
+ border-radius: var(--radius-sm);
745
+ background: var(--surface-900);
746
+ z-index: var(--z-tooltip);
747
+ }
748
+ .ac-mention[hidden] {
749
+ display: none;
750
+ }
751
+ .ac-mention__list {
752
+ max-height: 280px;
753
+ overflow-y: auto;
754
+ overscroll-behavior: contain;
755
+ }
756
+ .ac-mention__hint {
757
+ padding: 6px 10px;
758
+ border-top: 1px solid var(--border-800);
759
+ font-size: var(--text-micro);
760
+ color: var(--text-500);
761
+ }
762
+ .ac-mention__label {
763
+ padding: 6px 10px 2px;
764
+ font-size: var(--text-micro);
765
+ color: var(--text-500);
766
+ }
767
+ .ac-mention__all,
768
+ .ac-mention__item {
769
+ display: flex;
770
+ width: 100%;
771
+ height: 44px;
772
+ align-items: center;
773
+ gap: 8px;
774
+ padding: 0 10px;
775
+ text-align: left;
776
+ color: var(--text-200);
777
+ }
778
+ .ac-mention__all {
779
+ background: var(--surface-800);
780
+ color: var(--accent-primary);
781
+ }
782
+ .ac-mention__all[data-state="active"],
783
+ .ac-mention__item[data-state="active"] {
784
+ background: var(--surface-700);
785
+ }
786
+ .ac-mention__file {
787
+ display: flex;
788
+ width: 100%;
789
+ height: 32px;
790
+ align-items: center;
791
+ gap: 8px;
792
+ padding: 0 10px;
793
+ text-align: left;
794
+ }
795
+ .ac-mention__file[data-state="active"] {
796
+ background: var(--surface-700);
797
+ }
798
+ .ac-mention__file-path {
799
+ overflow: hidden;
800
+ text-overflow: ellipsis;
801
+ white-space: nowrap;
802
+ font-family: var(--font-code);
803
+ font-size: var(--text-meta);
804
+ }
805
+ .ac-mention__cmd {
806
+ display: flex;
807
+ width: 100%;
808
+ align-items: center;
809
+ gap: 8px;
810
+ padding: 6px 10px;
811
+ text-align: left;
812
+ }
813
+ .ac-mention__cmd[data-state="active"] {
814
+ background: var(--surface-700);
815
+ }
816
+ .ac-mention__cmd-body {
817
+ display: flex;
818
+ min-width: 0;
819
+ flex: 1;
820
+ flex-direction: column;
821
+ }
822
+ .ac-mention__cmd-label {
823
+ font-size: var(--text-body);
824
+ color: var(--text-200);
825
+ }
826
+ .ac-mention__cmd-desc {
827
+ font-size: var(--text-micro);
828
+ color: var(--text-500);
829
+ }
830
+ .ac-mention__cmd-trigger {
831
+ font-family: var(--font-code);
832
+ font-size: var(--text-micro);
833
+ color: var(--text-500);
834
+ }
835
+ .ac-mention__src {
836
+ border: 1px solid var(--border-700);
837
+ border-radius: 999px;
838
+ padding: 0 6px;
839
+ font-size: var(--text-micro);
840
+ color: var(--text-500);
841
+ }
842
+
843
+
844
+ .ac-select-bar {
845
+ display: flex;
846
+ align-items: center;
847
+ gap: 8px;
848
+ padding: 10px 12px;
849
+ border-top: 1px solid var(--border-800);
850
+ background: var(--surface-950);
851
+ }
852
+ .ac-select-bar__count {
853
+ font-size: var(--text-meta);
854
+ color: var(--text-400);
855
+ }
856
+ .ac-select-bar__actions {
857
+ margin-left: auto;
858
+ display: flex;
859
+ gap: 6px;
860
+ }
861
+ .ac-select-bar__btn--danger:hover {
862
+ color: var(--accent-danger);
863
+ }
864
+
865
+
866
+ .ac-selection {
867
+ position: fixed;
868
+ z-index: var(--z-tooltip);
869
+ display: flex;
870
+ gap: 2px;
871
+ padding: 3px;
872
+ border: 1px solid var(--border-600);
873
+ border-radius: var(--radius-sm);
874
+ background: var(--surface-900);
875
+ box-shadow: 0 6px 20px rgb(0 0 0 / 35%);
876
+ }
877
+ .ac-selection .ac-selection__btn {
878
+ height: var(--control-xs);
879
+ border-radius: var(--radius-sm);
880
+ font-size: var(--text-meta);
881
+ font-weight: 500;
882
+ }
883
+ .ac-selection .ac-selection__btn:hover {
884
+ background: var(--surface-700);
885
+ }
886
+
887
+
888
+ .ac-chat__head {
889
+ display: flex;
890
+ height: 44px;
891
+ align-items: center;
892
+ gap: 8px;
893
+ padding: 0 12px;
894
+ border-bottom: 1px solid var(--border-rule);
895
+ background: var(--surface-950);
896
+ }
897
+ .ac-chat__titles {
898
+ display: flex;
899
+ min-width: 0;
900
+ align-items: center;
901
+ gap: 8px;
902
+ }
903
+ .ac-chat__title {
904
+ overflow: hidden;
905
+ text-overflow: ellipsis;
906
+ white-space: nowrap;
907
+ font-size: var(--text-title);
908
+ font-weight: 600;
909
+ color: var(--text-100);
910
+ }
911
+ .ac-chat__subline {
912
+ display: flex;
913
+ align-items: center;
914
+ gap: 8px;
915
+ }
916
+ .ac-chat__sub {
917
+ font-size: var(--text-micro);
918
+ color: var(--text-500);
919
+ }
920
+ .ac-chat__grow {
921
+ flex: 1;
922
+ }
923
+ .ac-chat__actions {
924
+ display: flex;
925
+ gap: 4px;
926
+ }
927
+ .ac-icon-btn {
928
+ color: var(--text-400);
929
+ }
930
+ .ac-icon-btn:hover {
931
+ background: var(--surface-800);
932
+ }
933
+ .ac-icon-btn[data-state="active"] {
934
+ color: var(--accent-primary);
935
+ background: var(--surface-700);
936
+ }
937
+ .ac-id-avatars {
938
+ display: flex;
939
+ flex-direction: row-reverse;
940
+ }
941
+ .ac-id-avatars__item {
942
+ margin-inline-start: -8px;
943
+ border-radius: 999px;
944
+ box-shadow: 0 0 0 2px var(--surface-900);
945
+ transition: margin-inline-start 150ms ease;
946
+ }
947
+ .ac-id-avatars:hover .ac-id-avatars__item {
948
+ margin-inline-start: 0;
949
+ }
950
+ .ac-id-avatars__more {
951
+ display: inline-flex;
952
+ height: 22px;
953
+ align-items: center;
954
+ padding: 0 6px;
955
+ border-radius: 999px;
956
+ background: var(--surface-800);
957
+ font-size: var(--text-micro);
958
+ color: var(--text-400);
959
+ }
960
+ .ac-id-meta {
961
+ display: flex;
962
+ align-items: center;
963
+ gap: 6px;
964
+ }
965
+ .ac-id-meta__chip {
966
+ border: 1px solid var(--border-700);
967
+ border-radius: 999px;
968
+ padding: 0 6px;
969
+ font-size: var(--text-micro);
970
+ color: var(--text-500);
971
+ white-space: nowrap;
972
+ }
973
+ .ac-id-meta__time {
974
+ font-size: var(--text-micro);
975
+ color: var(--text-500);
976
+ white-space: nowrap;
977
+ }
978
+ .ac-empty-scene {
979
+ display: flex;
980
+ margin: auto;
981
+ max-width: 400px;
982
+ flex-direction: column;
983
+ align-items: center;
984
+ gap: 12px;
985
+ text-align: center;
986
+ }
987
+ .ac-empty-scene__mark {
988
+ display: grid;
989
+ width: 56px;
990
+ height: 56px;
991
+ place-items: center;
992
+ border-radius: var(--radius-lg);
993
+ background: var(--surface-850, var(--surface-800));
994
+ color: var(--accent-primary);
995
+ }
996
+ .ac-empty-scene__title {
997
+ font-size: var(--text-heading);
998
+ font-weight: 600;
999
+ color: var(--text-100);
1000
+ }
1001
+ .ac-empty-scene__hint {
1002
+ font-size: var(--text-body);
1003
+ color: var(--text-400);
1004
+ }
1005
+ .ac-empty-scene__points {
1006
+ display: flex;
1007
+ flex-direction: column;
1008
+ gap: 8px;
1009
+ width: 100%;
1010
+ }
1011
+ .ac-empty-scene__point {
1012
+ display: flex;
1013
+ gap: 10px;
1014
+ padding: 10px 12px;
1015
+ border-radius: var(--radius-md);
1016
+ background: var(--surface-850, var(--surface-800));
1017
+ text-align: left;
1018
+ }
1019
+ .ac-empty-scene__point-icon {
1020
+ color: var(--accent-primary);
1021
+ }
1022
+ .ac-empty-scene__point-title {
1023
+ display: block;
1024
+ font-size: var(--text-body);
1025
+ font-weight: 500;
1026
+ color: var(--text-200);
1027
+ }
1028
+ .ac-empty-scene__point-hint {
1029
+ display: block;
1030
+ font-size: var(--text-meta);
1031
+ color: var(--text-500);
1032
+ }
1033
+
1034
+
1035
+ @keyframes ac-msg-enter {
1036
+ from {
1037
+ opacity: 0;
1038
+ transform: translateY(4px);
1039
+ }
1040
+ to {
1041
+ opacity: 1;
1042
+ transform: translateY(0);
1043
+ }
1044
+ }
1045
+ @keyframes ac-blink {
1046
+ 0%,
1047
+ 100% {
1048
+ opacity: 1;
1049
+ }
1050
+ 40% {
1051
+ opacity: 0.2;
1052
+ }
1053
+ }
1054
+ @keyframes ac-pulse {
1055
+ 0%,
1056
+ 100% {
1057
+ opacity: 1;
1058
+ }
1059
+ 50% {
1060
+ opacity: 0.4;
1061
+ }
1062
+ }
1063
+ @media (prefers-reduced-motion: reduce) {
1064
+ .ac-msg,
1065
+ .ac-typing i,
1066
+ .ac-card__dot,
1067
+ .ac-composer__card,
1068
+ .ac-tools__chevron {
1069
+ animation: none !important;
1070
+ transition: none !important;
1071
+ }
1072
+ }
1073
+
1074
+ @media (max-width: 767px) {
1075
+ .ac-card,
1076
+ .ac-tools {
1077
+ min-width: 0;
1078
+ }
1079
+ .ac-msg-slot[data-selected="true"] {
1080
+ margin: 0 -12px;
1081
+ padding: 4px 12px;
1082
+ }
1083
+ }
1084
+
1085
+
1086
+
1087
+ html[data-radius="square"] {
1088
+ --radius: 2px;
1089
+ --radius-sm: 0;
1090
+ --radius-md: 1px;
1091
+ --radius-lg: 2px;
1092
+ --radius-xl: 3px;
1093
+ }
1094
+
1095
+
1096
+ html[data-density="compact"] .ac-msg {
1097
+ gap: 6px;
1098
+ }
1099
+ html[data-density="compact"] .ac-msg__col {
1100
+ gap: 2px;
1101
+ }
1102
+ html[data-density="compact"] .ac-bubble[data-msg-role="user"] {
1103
+ padding: 6px 10px;
1104
+ }
1105
+ html[data-density="compact"] .ac-stream {
1106
+ gap: 8px;
1107
+ }
1108
+
1109
+
1110
+ html[data-msg-style="bubble"] .ac-bubble[data-msg-role="assistant"] {
1111
+ padding: 10px 14px;
1112
+ border-radius: 12px;
1113
+ background: var(--surface-800);
1114
+ border: 1px solid var(--border-800);
1115
+ }
1116
+ html[data-msg-style="bubble"] .ac-msg-slot[data-align="end"] .ac-bubble[data-msg-role="user"] {
1117
+ background: var(--surface-700);
1118
+ }
1119
+
1120
+
1121
+ html[data-hide~="reasoning"] [data-cmp="ai/reasoning"],
1122
+ html[data-hide~="reasoning"] [data-cmp="ac/reasoning"],
1123
+ html[data-hide~="tool"] [data-cmp="ai/tool-card"],
1124
+ html[data-hide~="tool"] [data-cmp="ac/tool-group"],
1125
+ html[data-hide~="sandbox"] [data-cmp="ac/sandbox"],
1126
+ html[data-hide~="memory"] [data-cmp="ac/memory-pill"],
1127
+ html[data-hide~="compaction"] [data-cmp="ac/compact"],
1128
+ html[data-hide~="usage"] [data-cmp="ai/context-usage"],
1129
+ html[data-hide~="attachments"] [data-cmp="ac/msg-attachments"],
1130
+ html[data-hide~="attachments"] [data-cmp="ac/attachments"],
1131
+ html[data-hide~="todo"] [data-cmp="ac/todo-card"] {
1132
+ display: none !important;
1133
+ }
1134
+
1135
+
1136
+ .ac-display__row {
1137
+ display: flex;
1138
+ align-items: center;
1139
+ justify-content: space-between;
1140
+ gap: 8px;
1141
+ }
1142
+ .ac-display__label {
1143
+ font-size: var(--text-body);
1144
+ color: var(--text-200);
1145
+ }
1146
+ .ac-display__seg {
1147
+ display: inline-flex;
1148
+ padding: 2px;
1149
+ border-radius: var(--radius-sm);
1150
+ background: var(--surface-800);
1151
+ }
1152
+ .ac-display__seg-item {
1153
+ padding: 3px 10px;
1154
+ border-radius: calc(var(--radius-sm) - 1px);
1155
+ font-size: var(--text-meta);
1156
+ color: var(--text-400);
1157
+ }
1158
+ .ac-display__seg-item[data-state="selected"] {
1159
+ background: var(--surface-600);
1160
+ color: var(--text-100);
1161
+ }
1162
+ .ac-display__switch {
1163
+ position: relative;
1164
+ display: inline-flex;
1165
+ width: 30px;
1166
+ height: 17px;
1167
+ flex-shrink: 0;
1168
+ align-items: center;
1169
+ border-radius: 999px;
1170
+ background: var(--surface-600);
1171
+ transition: background 150ms ease;
1172
+ }
1173
+ .ac-display__switch[data-state="on"] {
1174
+ background: var(--accent-success);
1175
+ }
1176
+ .ac-display__switch-knob {
1177
+ position: absolute;
1178
+ left: 2px;
1179
+ width: 13px;
1180
+ height: 13px;
1181
+ border-radius: 999px;
1182
+ background: var(--text-100);
1183
+ transition: transform 150ms ease;
1184
+ }
1185
+ .ac-display__switch[data-state="on"] .ac-display__switch-knob {
1186
+ transform: translateX(13px);
1187
+ }
1188
+
1189
+
1190
+ .ac-msg-actions {
1191
+ display: flex;
1192
+ align-items: center;
1193
+ gap: 2px;
1194
+ margin-top: 2px;
1195
+ opacity: 0;
1196
+ transition: opacity 120ms ease;
1197
+ }
1198
+ .ac-msg-slot:hover .ac-msg-actions,
1199
+ .ac-msg-actions:focus-within {
1200
+ opacity: 1;
1201
+ }
1202
+ .ac-msg-actions__meta {
1203
+ display: inline-flex;
1204
+ align-items: center;
1205
+ gap: 8px;
1206
+ margin-left: auto;
1207
+ padding-left: 8px;
1208
+ font-size: var(--text-micro);
1209
+ color: var(--text-500);
1210
+ font-variant-numeric: tabular-nums;
1211
+ }
1212
+ .ac-artifacts {
1213
+ display: flex;
1214
+ flex-wrap: wrap;
1215
+ align-items: center;
1216
+ gap: 6px;
1217
+ margin-top: 6px;
1218
+ }
1219
+ .ac-artifacts__chip {
1220
+ display: inline-flex;
1221
+ max-width: 240px;
1222
+ align-items: center;
1223
+ gap: 5px;
1224
+ padding: 4px 8px;
1225
+ border: 1px solid var(--border-700);
1226
+ border-radius: var(--radius-md);
1227
+ background: var(--surface-800);
1228
+ font-size: var(--text-meta);
1229
+ color: var(--text-200);
1230
+ }
1231
+ .ac-artifacts__chip:disabled {
1232
+ cursor: default;
1233
+ }
1234
+ .ac-artifacts__chip:not(:disabled):hover {
1235
+ background: var(--surface-700);
1236
+ }
1237
+ .ac-artifacts__icon {
1238
+ width: 13px;
1239
+ height: 13px;
1240
+ flex-shrink: 0;
1241
+ color: var(--text-400);
1242
+ }
1243
+ .ac-artifacts__name {
1244
+ overflow: hidden;
1245
+ text-overflow: ellipsis;
1246
+ white-space: nowrap;
1247
+ }
1248
+ .ac-artifacts__size {
1249
+ flex-shrink: 0;
1250
+ color: var(--text-500);
1251
+ font-variant-numeric: tabular-nums;
1252
+ }
1253
+ .ac-artifacts__all {
1254
+ padding: 4px 8px;
1255
+ border-radius: var(--radius-md);
1256
+ font-size: var(--text-meta);
1257
+ color: var(--text-300);
1258
+ }
1259
+ .ac-artifacts__all:hover {
1260
+ background: var(--surface-800);
1261
+ }
1262
+
1263
+
1264
+ html[data-theme="glass"] .ac-composer__card,
1265
+ html[data-theme="glass"] .ac-card,
1266
+ html[data-theme="glass"] .ac-artifacts__chip {
1267
+ backdrop-filter: blur(12px);
1268
+ -webkit-backdrop-filter: blur(12px);
1269
+ }
1270
+ html[data-theme="glass"] .ac-composer__send[data-state="idle"] {
1271
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.35);
1272
+ }
1273
+
1274
+ [role="dialog"],
1275
+ [role="menu"],
1276
+ [role="listbox"],
1277
+ .ac-display-panel {
1278
+ background: var(--surface-overlay);
1279
+ backdrop-filter: blur(10px);
1280
+ -webkit-backdrop-filter: blur(10px);
1281
+ }
1282
+
1283
+
1284
+ :root {
1285
+ --ac-stream-width: 720px;
1286
+ --ac-composer-width: 720px;
1287
+
1288
+ --ac-content-max: var(--ac-stream-width);
1289
+
1290
+ --ac-gutter: 20px;
1291
+ }
1292
+ .ac-msg,
1293
+ .ac-msg-slot {
1294
+ max-width: var(--ac-content-max);
1295
+ margin-left: auto;
1296
+ margin-right: auto;
1297
+ }
1298
+ .ac-msg-slot[data-align="end"]:not([data-selected="true"]) {
1299
+ margin-left: auto;
1300
+ margin-right: auto;
1301
+ }
1302
+ .ac-composer__card {
1303
+ width: 100%;
1304
+ max-width: var(--ac-composer-width);
1305
+ margin-left: auto;
1306
+ margin-right: auto;
1307
+ }
1308
+
1309
+ html[data-composer-width="full"] .ac-composer,
1310
+ html[data-composer-width="full"] .ac-composer__card {
1311
+ max-width: 100%;
1312
+ }
1313
+
1314
+ html[data-composer-width="full"] {
1315
+ --ac-composer-width: 100%;
1316
+ }
1317
+
1318
+ html[data-stream-width="full"] .ac-msg,
1319
+ html[data-stream-width="full"] .ac-msg-slot,
1320
+ html[data-stream-width="full"] .ac-perm-dock > *,
1321
+ html[data-stream-width="full"] .ac-stream__day,
1322
+ html[data-stream-width="full"] .ac-notes,
1323
+ html[data-stream-width="full"] [data-cmp="ac/todo-card"] {
1324
+ max-width: 100%;
1325
+ }
1326
+
1327
+ html[data-stream-width="full"] {
1328
+ --ac-content-max: 100%;
1329
+ }
1330
+ [data-cmp="ac/todo-card"] {
1331
+ max-width: var(--ac-content-max);
1332
+ margin-left: auto;
1333
+ margin-right: auto;
1334
+ }
1335
+
1336
+
1337
+ .ac-perm-menu__row {
1338
+ align-items: flex-start;
1339
+ }
1340
+ .ac-perm-menu__check {
1341
+ width: 14px;
1342
+ height: 14px;
1343
+ flex-shrink: 0;
1344
+ margin-top: 3px;
1345
+ }
1346
+ .ac-perm-menu__icon {
1347
+ width: 15px;
1348
+ height: 15px;
1349
+ flex-shrink: 0;
1350
+ margin-top: 2px;
1351
+ }
1352
+ .ac-perm-menu__body {
1353
+ display: flex;
1354
+ min-width: 0;
1355
+ flex: 1;
1356
+ flex-direction: column;
1357
+ gap: 1px;
1358
+ }
1359
+ .ac-perm-menu__title {
1360
+ font-size: var(--text-body);
1361
+ font-weight: 500;
1362
+ color: var(--text-100);
1363
+ line-height: 1.4;
1364
+ }
1365
+ .ac-perm-menu__hint {
1366
+ font-size: var(--text-micro);
1367
+ color: var(--text-500);
1368
+ line-height: 1.45;
1369
+ }
1370
+
1371
+
1372
+ .ac-todo-pill {
1373
+ position: absolute;
1374
+ top: 10px;
1375
+
1376
+ right: max(14px, calc((100% - var(--ac-content-max)) / 2 + 14px));
1377
+ z-index: 30;
1378
+ }
1379
+ .ac-todo-pill__chip {
1380
+ display: inline-flex;
1381
+ height: 28px;
1382
+ align-items: center;
1383
+ gap: 6px;
1384
+ padding: 0 10px;
1385
+ border: 1px solid var(--border-700);
1386
+ border-radius: 999px;
1387
+ background: var(--surface-900);
1388
+ font-size: var(--text-meta);
1389
+ color: var(--text-300);
1390
+ }
1391
+ .ac-todo-pill__chip:hover {
1392
+ background: var(--surface-800);
1393
+ color: var(--text-100);
1394
+ }
1395
+ .ac-todo-pill__label {
1396
+ font-weight: 500;
1397
+ }
1398
+ .ac-todo-pill__count {
1399
+ font-variant-numeric: tabular-nums;
1400
+ color: var(--text-400);
1401
+ }
1402
+ .ac-todo-pill__bar {
1403
+ display: inline-block;
1404
+ width: 36px;
1405
+ height: 3px;
1406
+ overflow: hidden;
1407
+ border-radius: 999px;
1408
+ background: var(--surface-700);
1409
+ }
1410
+ .ac-todo-pill__fill {
1411
+ display: block;
1412
+ height: 100%;
1413
+ border-radius: 999px;
1414
+ background: var(--accent-success);
1415
+ transition: width 250ms ease;
1416
+ }
1417
+ .ac-todo-pill__panel {
1418
+ position: absolute;
1419
+ top: calc(100% + 6px);
1420
+ right: 0;
1421
+ width: 300px;
1422
+ max-height: 320px;
1423
+ overflow-y: auto;
1424
+ padding: 8px 10px 10px;
1425
+ border: 1px solid var(--border-700);
1426
+ border-radius: var(--radius-lg);
1427
+ background: var(--surface-overlay);
1428
+ box-shadow: var(--elev-shadow-lg);
1429
+ }
1430
+ .ac-todo-pill__head {
1431
+ display: flex;
1432
+ justify-content: flex-end;
1433
+ padding-bottom: 4px;
1434
+ font-size: var(--text-micro);
1435
+ color: var(--text-500);
1436
+ }
1437
+
1438
+
1439
+ .spring-check__bounce {
1440
+ animation: spring-check-squish 380ms cubic-bezier(0.22, 1, 0.36, 1);
1441
+ }
1442
+ .spring-check__tick {
1443
+ animation: spring-check-tick 260ms ease-out;
1444
+ }
1445
+ .spring-check__tick path {
1446
+ stroke-dasharray: 16;
1447
+ stroke-dashoffset: 16;
1448
+ animation: spring-check-draw 260ms 60ms ease-out forwards;
1449
+ }
1450
+ .spring-check__struck::after {
1451
+ content: "";
1452
+ position: absolute;
1453
+ left: 0;
1454
+ top: 50%;
1455
+ width: 100%;
1456
+ height: 1px;
1457
+ background: currentColor;
1458
+ transform-origin: left;
1459
+ animation: spring-check-strike 240ms 120ms ease-out both;
1460
+ }
1461
+ @keyframes spring-check-squish {
1462
+ 0% { transform: scale(1); }
1463
+ 35% { transform: scale(1.22, 0.82); }
1464
+ 65% { transform: scale(0.92, 1.1); }
1465
+ 100% { transform: scale(1); }
1466
+ }
1467
+ @keyframes spring-check-tick {
1468
+ 0% { opacity: 0; transform: scale(0.6); }
1469
+ 100% { opacity: 1; transform: scale(1); }
1470
+ }
1471
+ @keyframes spring-check-draw {
1472
+ to { stroke-dashoffset: 0; }
1473
+ }
1474
+ @keyframes spring-check-strike {
1475
+ 0% { transform: scaleX(0); }
1476
+ 100% { transform: scaleX(1); }
1477
+ }
1478
+
1479
+
1480
+ .ac-lattice {
1481
+ display: inline-flex;
1482
+ align-items: center;
1483
+ gap: 8px;
1484
+ }
1485
+ .ac-lattice__grid {
1486
+ display: grid;
1487
+ grid-template-columns: repeat(3, 5px);
1488
+ gap: 2px;
1489
+ }
1490
+ .ac-lattice__cell {
1491
+ width: 5px;
1492
+ height: 5px;
1493
+ border-radius: 999px;
1494
+ background: currentColor;
1495
+ opacity: 0.15;
1496
+ }
1497
+ .ac-lattice__cell--lit {
1498
+ animation: lattice-wave 540ms ease-in-out infinite;
1499
+ }
1500
+ .ac-lattice__label {
1501
+ font-size: var(--text-meta);
1502
+ color: var(--text-300);
1503
+ }
1504
+ .ac-lattice__timer {
1505
+ display: inline-flex;
1506
+ align-items: center;
1507
+ gap: 4px;
1508
+ font-size: var(--text-meta);
1509
+ font-variant-numeric: tabular-nums;
1510
+ color: var(--text-400);
1511
+ }
1512
+ .ac-lattice__mark[data-mark="done"] {
1513
+ color: var(--accent-success);
1514
+ }
1515
+ .ac-lattice__mark[data-mark="error"] {
1516
+ color: var(--accent-danger);
1517
+ }
1518
+ @keyframes lattice-wave {
1519
+ 0%, 100% { opacity: 0.15; }
1520
+ 40% { opacity: 1; }
1521
+ }
1522
+
1523
+
1524
+ .ac-squish {
1525
+ display: inline-flex;
1526
+ padding: 2px;
1527
+ cursor: pointer;
1528
+ }
1529
+ .ac-squish__track {
1530
+ position: relative;
1531
+ display: inline-flex;
1532
+ width: 34px;
1533
+ height: 19px;
1534
+ align-items: center;
1535
+ border-radius: 999px;
1536
+ background: var(--surface-600);
1537
+ transition: background 200ms ease;
1538
+ }
1539
+ .ac-squish[data-state="on"] .ac-squish__track {
1540
+ background: var(--accent-success);
1541
+ }
1542
+ .ac-squish__thumb {
1543
+ position: absolute;
1544
+ left: 2px;
1545
+ width: 15px;
1546
+ height: 15px;
1547
+ border-radius: 999px;
1548
+ background: var(--text-100);
1549
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.25);
1550
+ transition: transform 280ms cubic-bezier(0.22, 1, 0.36, 1);
1551
+ }
1552
+ .ac-squish[data-state="on"] .ac-squish__thumb {
1553
+ transform: translateX(15px);
1554
+ }
1555
+ .ac-squish[data-squish="stretches"] .ac-squish__thumb {
1556
+ transform: translateX(var(--squish-x, 7px)) scaleX(1.35) scaleY(0.85);
1557
+ transition-duration: 180ms;
1558
+ }
1559
+ .ac-squish[data-state="on"][data-squish="stretches"] .ac-squish__thumb {
1560
+ --squish-x: 8px;
1561
+ }
1562
+ .ac-squish[data-squish="squash"] .ac-squish__thumb {
1563
+ transform: translateX(var(--thumb-x, 0)) scaleX(1.25) scaleY(0.8);
1564
+ transition-duration: 140ms;
1565
+ }
1566
+ .ac-squish[data-state="on"][data-squish="squash"] .ac-squish__thumb {
1567
+ --thumb-x: 15px;
1568
+ }
1569
+
1570
+
1571
+ .ac-line-nav {
1572
+ display: flex;
1573
+ flex-direction: column;
1574
+ gap: 4px;
1575
+ padding: 8px;
1576
+ }
1577
+ .ac-line-nav__item {
1578
+ display: flex;
1579
+ align-items: center;
1580
+ gap: 8px;
1581
+ padding: 7px 8px;
1582
+ border-radius: var(--radius-sm);
1583
+ text-align: left;
1584
+ transition: transform 100ms ease;
1585
+ }
1586
+ .ac-line-nav__item:hover {
1587
+ background: var(--surface-800);
1588
+ }
1589
+ .ac-line-nav__marker {
1590
+ height: 1.5px;
1591
+ border-radius: 999px;
1592
+ transition:
1593
+ width 120ms ease,
1594
+ opacity 120ms ease,
1595
+ background 120ms ease;
1596
+ }
1597
+ .ac-line-nav__index {
1598
+ font-family: var(--font-code);
1599
+ font-size: var(--text-micro);
1600
+ color: var(--text-600);
1601
+ }
1602
+ .ac-line-nav__label {
1603
+ overflow: hidden;
1604
+ text-overflow: ellipsis;
1605
+ white-space: nowrap;
1606
+ font-size: var(--text-body);
1607
+ color: var(--text-300);
1608
+ transition: color 120ms ease;
1609
+ }
1610
+ .ac-line-nav__item[data-state="active"] .ac-line-nav__label {
1611
+ font-weight: 500;
1612
+ }
1613
+ .ac-line-nav__badge {
1614
+ margin-left: auto;
1615
+ padding: 0 6px;
1616
+ border-radius: 999px;
1617
+ background: var(--surface-700);
1618
+ font-size: var(--text-micro);
1619
+ color: var(--text-300);
1620
+ }
1621
+
1622
+
1623
+
1624
+ .ac-queued {
1625
+ width: 100%;
1626
+ max-width: var(--ac-composer-width);
1627
+ margin: 0 auto;
1628
+ border: 1px solid var(--border-800);
1629
+ border-radius: var(--radius-xl) var(--radius-xl) 0 0;
1630
+ background: var(--surface-900);
1631
+ }
1632
+ .ac-queued + .ac-composer__card {
1633
+
1634
+ border-top-left-radius: 0;
1635
+ border-top-right-radius: 0;
1636
+ border-top-color: transparent;
1637
+ }
1638
+ .ac-queued__head {
1639
+ display: flex;
1640
+ align-items: center;
1641
+ gap: 2px;
1642
+ padding: 4px 6px 2px 10px;
1643
+ }
1644
+ .ac-queued__pill {
1645
+ display: inline-flex;
1646
+ min-width: 0;
1647
+ align-items: center;
1648
+ gap: 6px;
1649
+ padding: 2px 4px;
1650
+ font-size: var(--text-micro);
1651
+ color: var(--text-400);
1652
+ }
1653
+ .ac-queued__pill:hover {
1654
+ color: var(--text-200);
1655
+ }
1656
+ .ac-queued__preview {
1657
+ overflow: hidden;
1658
+ max-width: 320px;
1659
+ text-overflow: ellipsis;
1660
+ white-space: nowrap;
1661
+ color: var(--text-600);
1662
+ }
1663
+ .ac-queued__chev {
1664
+ width: 11px;
1665
+ height: 11px;
1666
+ color: var(--text-600);
1667
+ transition: transform 160ms ease;
1668
+ }
1669
+ .ac-queued__chev[data-open="true"] {
1670
+ transform: rotate(180deg);
1671
+ }
1672
+ .ac-queued__head-icon {
1673
+ width: 12px;
1674
+ height: 12px;
1675
+ color: var(--text-500);
1676
+ }
1677
+ .ac-queued__head-title {
1678
+ color: var(--text-400);
1679
+ }
1680
+ .ac-queued__badge {
1681
+ flex-shrink: 0;
1682
+ padding: 0 5px;
1683
+ border-radius: 999px;
1684
+ background: var(--surface-700);
1685
+ font-size: var(--text-micro);
1686
+ font-variant-numeric: tabular-nums;
1687
+ color: var(--text-300);
1688
+ }
1689
+ .ac-queued__badge[data-state="full"] {
1690
+ background: color-mix(in srgb, var(--accent-warning) 22%, var(--surface-700));
1691
+ color: var(--accent-warning);
1692
+ }
1693
+ .ac-queued__clear {
1694
+ display: inline-grid;
1695
+ width: 22px;
1696
+ height: 22px;
1697
+ margin-left: auto;
1698
+ place-items: center;
1699
+ border-radius: var(--radius-sm);
1700
+ color: var(--text-500);
1701
+ }
1702
+ .ac-queued__clear:hover {
1703
+ background: var(--surface-800);
1704
+ color: var(--text-100);
1705
+ }
1706
+ .ac-queued__body {
1707
+ display: flex;
1708
+ max-height: 200px;
1709
+ overflow-y: auto;
1710
+ flex-direction: column;
1711
+ gap: 1px;
1712
+ padding: 0 6px 6px;
1713
+ }
1714
+ .ac-queued-row {
1715
+ display: flex;
1716
+ min-height: 30px;
1717
+ align-items: center;
1718
+ gap: 8px;
1719
+ padding: 4px 6px;
1720
+ border-radius: var(--radius-sm);
1721
+ }
1722
+ .ac-queued-row__grip {
1723
+ flex-shrink: 0;
1724
+ color: var(--text-700);
1725
+ cursor: grab;
1726
+ }
1727
+ .ac-queued-row:hover .ac-queued-row__grip {
1728
+ color: var(--text-500);
1729
+ }
1730
+ .ac-queued-row:hover {
1731
+ background: var(--surface-800);
1732
+ }
1733
+ .ac-queued-row__text {
1734
+ display: flex;
1735
+ min-width: 0;
1736
+ flex: 1;
1737
+ align-items: center;
1738
+ gap: 6px;
1739
+ }
1740
+ .ac-queued-row__content {
1741
+ overflow: hidden;
1742
+ flex: 1;
1743
+ text-overflow: ellipsis;
1744
+ white-space: nowrap;
1745
+ font-size: var(--text-body);
1746
+ color: var(--text-100);
1747
+ }
1748
+ .ac-queued-row__att {
1749
+ display: inline-flex;
1750
+ flex-shrink: 0;
1751
+ align-items: center;
1752
+ gap: 2px;
1753
+ padding: 0 5px;
1754
+ border-radius: 999px;
1755
+ background: var(--surface-700);
1756
+ font-size: var(--text-micro);
1757
+ color: var(--text-300);
1758
+ }
1759
+ .ac-queued-row__acts {
1760
+ display: flex;
1761
+ flex-shrink: 0;
1762
+ align-items: center;
1763
+ gap: 2px;
1764
+ opacity: 0.55;
1765
+ transition: opacity 120ms ease;
1766
+ }
1767
+ .ac-queued-row:hover .ac-queued-row__acts,
1768
+ .ac-queued-row:focus-within .ac-queued-row__acts {
1769
+ opacity: 1;
1770
+ }
1771
+ .ac-queued-row__act {
1772
+ display: inline-grid;
1773
+ width: 22px;
1774
+ height: 22px;
1775
+ place-items: center;
1776
+ border-radius: var(--radius-sm);
1777
+ color: var(--text-400);
1778
+ }
1779
+ .ac-queued-row__act:hover:not(:disabled) {
1780
+ background: var(--surface-700);
1781
+ color: var(--text-100);
1782
+ }
1783
+ .ac-queued-row__act:disabled {
1784
+ opacity: 0.35;
1785
+ }
1786
+ .ac-queued-row__act--accent {
1787
+ width: auto;
1788
+ padding: 0 7px;
1789
+ color: var(--accent-primary);
1790
+ }
1791
+ .ac-queued-row__act--accent:hover:not(:disabled) {
1792
+ background: var(--accent-primary-light);
1793
+ color: var(--accent-primary);
1794
+ }
1795
+
1796
+
1797
+
1798
+ .ac-prompt-pop {
1799
+ position: absolute;
1800
+ top: 50%;
1801
+ right: max(6px, calc((100% - var(--ac-content-max)) / 2 - 40px));
1802
+ z-index: 20;
1803
+ display: flex;
1804
+ align-items: center;
1805
+ transform: translateY(-50%);
1806
+ }
1807
+
1808
+ .ac-prompt-pop__rail {
1809
+ display: flex;
1810
+ flex-direction: column;
1811
+ justify-content: center;
1812
+ gap: 11px;
1813
+ padding: 12px 8px;
1814
+ border-radius: 999px;
1815
+ cursor: pointer;
1816
+ }
1817
+ .ac-prompt-pop__rail:hover {
1818
+ background: var(--surface-800);
1819
+ }
1820
+ .ac-prompt-pop__dash {
1821
+ display: block;
1822
+ width: 16px;
1823
+ height: 2px;
1824
+ border-radius: 999px;
1825
+ background: var(--text-600);
1826
+ opacity: 0.55;
1827
+ transition:
1828
+ width 150ms ease,
1829
+ opacity 150ms ease,
1830
+ background 150ms ease;
1831
+ }
1832
+
1833
+ .ac-prompt-pop__dash[data-latest="true"] {
1834
+ width: 24px;
1835
+ opacity: 0.9;
1836
+ background: var(--text-400);
1837
+ }
1838
+ .ac-prompt-pop__rail:hover .ac-prompt-pop__dash {
1839
+ width: 20px;
1840
+ opacity: 0.85;
1841
+ }
1842
+ .ac-prompt-pop__rail:hover .ac-prompt-pop__dash[data-active="true"],
1843
+ .ac-prompt-pop__dash[data-active="true"] {
1844
+ width: 32px;
1845
+ opacity: 1;
1846
+ background: var(--accent-primary);
1847
+ }
1848
+
1849
+ .ac-prompt-pop__panel {
1850
+ position: absolute;
1851
+ top: 50%;
1852
+ right: calc(100% + 2px);
1853
+ z-index: 40;
1854
+ min-width: min(320px, calc(100vw - 48px));
1855
+ max-width: min(440px, calc(100vw - 48px));
1856
+ max-height: 360px;
1857
+ overflow-y: auto;
1858
+ padding: 6px;
1859
+ border: 1px solid var(--border-700);
1860
+ border-radius: var(--radius-lg);
1861
+ background: var(--surface-overlay);
1862
+ box-shadow: var(--elev-shadow-lg);
1863
+ transform: translateY(-50%);
1864
+ transform-origin: right center;
1865
+ animation: prompt-pop-in 200ms cubic-bezier(0.22, 1, 0.36, 1);
1866
+ }
1867
+ .ac-prompt-pop__head {
1868
+ padding: 4px 8px 6px;
1869
+ font-size: var(--text-micro);
1870
+ color: var(--text-500);
1871
+ }
1872
+ .ac-prompt-pop__row {
1873
+ display: flex;
1874
+ width: 100%;
1875
+ align-items: center;
1876
+ gap: 10px;
1877
+ padding: 7px 10px;
1878
+ border-radius: var(--radius-sm);
1879
+ text-align: right;
1880
+ }
1881
+ .ac-prompt-pop__row:hover {
1882
+ background: var(--surface-800);
1883
+ }
1884
+ .ac-prompt-pop__text {
1885
+ overflow: hidden;
1886
+ flex: 1;
1887
+ text-align: right;
1888
+ text-overflow: ellipsis;
1889
+ white-space: nowrap;
1890
+ font-size: var(--text-body);
1891
+ color: var(--text-300);
1892
+ transition: color 120ms ease;
1893
+ }
1894
+ .ac-prompt-pop__row:hover .ac-prompt-pop__text {
1895
+ color: var(--text-100);
1896
+ }
1897
+ .ac-prompt-pop__marker {
1898
+ width: 14px;
1899
+ height: 2px;
1900
+ flex-shrink: 0;
1901
+ border-radius: 999px;
1902
+ background: var(--text-600);
1903
+ transition:
1904
+ width 140ms ease,
1905
+ background 140ms ease;
1906
+ }
1907
+ .ac-prompt-pop__row:hover .ac-prompt-pop__marker {
1908
+ width: 30px;
1909
+ background: var(--accent-primary);
1910
+ }
1911
+ @keyframes prompt-pop-in {
1912
+ 0% {
1913
+ opacity: 0;
1914
+ transform: translateY(-50%) translateX(6px) scale(0.96);
1915
+ }
1916
+ 100% {
1917
+ opacity: 1;
1918
+ transform: translateY(-50%) translateX(0) scale(1);
1919
+ }
1920
+ }
1921
+
1922
+
1923
+ .ac-chat__main {
1924
+ position: relative;
1925
+ display: flex;
1926
+ min-height: 0;
1927
+ flex: 1;
1928
+ }
1929
+ .ac-chat__main > :first-child {
1930
+ min-width: 0;
1931
+ flex: 1;
1932
+ }
1933
+
1934
+
1935
+ .ac-perm {
1936
+ position: relative;
1937
+ width: 100%;
1938
+ padding: 9px 11px 9px;
1939
+ border: 1px solid var(--border-700);
1940
+ border-radius: var(--radius-lg);
1941
+ background: var(--surface-900);
1942
+ }
1943
+
1944
+ .ac-perm[data-risk="high"]::before {
1945
+ content: "";
1946
+ position: absolute;
1947
+ left: 0;
1948
+ top: 9px;
1949
+ bottom: 9px;
1950
+ width: 2px;
1951
+ border-radius: 999px;
1952
+ background: var(--accent-danger);
1953
+ }
1954
+
1955
+
1956
+ .ac-perm__head {
1957
+ display: flex;
1958
+ align-items: center;
1959
+ gap: 6px;
1960
+ }
1961
+ .ac-perm__head-icon {
1962
+ width: 13px;
1963
+ height: 13px;
1964
+ flex-shrink: 0;
1965
+ color: var(--text-500);
1966
+ }
1967
+ .ac-perm__title {
1968
+ display: flex;
1969
+ min-width: 0;
1970
+ flex: 1;
1971
+ align-items: baseline;
1972
+ gap: 5px;
1973
+ font-size: var(--text-body);
1974
+ color: var(--text-300);
1975
+ }
1976
+ .ac-perm__tool {
1977
+ overflow: hidden;
1978
+ padding: 1px 5px;
1979
+ border-radius: var(--radius-sm);
1980
+ background: var(--surface-800);
1981
+ font-family: var(--font-code);
1982
+ font-size: var(--text-meta);
1983
+ color: var(--text-100);
1984
+ text-overflow: ellipsis;
1985
+ white-space: nowrap;
1986
+ }
1987
+ .ac-perm__risk-icon {
1988
+ width: 13px;
1989
+ height: 13px;
1990
+ flex-shrink: 0;
1991
+ color: var(--accent-danger);
1992
+ }
1993
+ .ac-perm__queue {
1994
+ display: inline-flex;
1995
+ flex-shrink: 0;
1996
+ align-items: center;
1997
+ gap: 4px;
1998
+ font-size: var(--text-micro);
1999
+ font-variant-numeric: tabular-nums;
2000
+ color: var(--text-600);
2001
+ }
2002
+ .ac-perm__rest {
2003
+ margin-left: 2px;
2004
+ padding: 1px 6px;
2005
+ border-radius: 999px;
2006
+ background: var(--surface-800);
2007
+ color: var(--text-400);
2008
+ }
2009
+ .ac-perm__rest:hover {
2010
+ color: var(--accent-primary);
2011
+ }
2012
+
2013
+
2014
+ .ac-perm__detail {
2015
+ display: flex;
2016
+ align-items: baseline;
2017
+ gap: 6px;
2018
+ margin-top: 5px;
2019
+ padding-left: 19px;
2020
+ }
2021
+ .ac-perm__line {
2022
+ min-width: 0;
2023
+ font-family: var(--font-code);
2024
+ font-size: var(--text-meta);
2025
+ color: var(--text-500);
2026
+ word-break: break-all;
2027
+ white-space: pre-wrap;
2028
+ }
2029
+ .ac-perm__line.is-clamped {
2030
+ overflow: hidden;
2031
+ text-overflow: ellipsis;
2032
+ white-space: nowrap;
2033
+ }
2034
+ .ac-perm__more {
2035
+ flex-shrink: 0;
2036
+ padding: 0 4px;
2037
+ border-radius: var(--radius-sm);
2038
+ font-size: var(--text-micro);
2039
+ color: var(--text-600);
2040
+ }
2041
+ .ac-perm__more:hover {
2042
+ background: var(--surface-800);
2043
+ color: var(--text-300);
2044
+ }
2045
+ .ac-perm__reason {
2046
+ margin-top: 4px;
2047
+ padding-left: 19px;
2048
+ font-size: var(--text-meta);
2049
+ line-height: 1.55;
2050
+ color: var(--text-500);
2051
+ }
2052
+
2053
+
2054
+ .ac-perm__actions {
2055
+ display: flex;
2056
+ align-items: center;
2057
+ gap: 8px;
2058
+ margin-top: 8px;
2059
+ }
2060
+ .ac-perm__deny {
2061
+ display: inline-flex;
2062
+ height: 26px;
2063
+ align-items: center;
2064
+ padding: 0 9px;
2065
+ border-radius: var(--radius-sm);
2066
+ font-size: var(--text-meta);
2067
+ color: var(--text-500);
2068
+ }
2069
+ .ac-perm__deny:hover {
2070
+ background: var(--surface-800);
2071
+ color: var(--text-100);
2072
+ }
2073
+
2074
+ .ac-perm__primary {
2075
+ position: relative;
2076
+ display: flex;
2077
+ margin-left: auto;
2078
+ align-items: stretch;
2079
+ }
2080
+ .ac-perm__btn {
2081
+ display: inline-flex;
2082
+ height: 26px;
2083
+ align-items: center;
2084
+ gap: 4px;
2085
+ padding: 0 11px;
2086
+ font-size: var(--text-meta);
2087
+ font-weight: 500;
2088
+ }
2089
+ .ac-perm__btn--primary {
2090
+ border-radius: var(--radius-sm) 0 0 var(--radius-sm);
2091
+ background: var(--primary);
2092
+ color: var(--primary-foreground);
2093
+ }
2094
+ .ac-perm__btn--primary:hover {
2095
+ opacity: 0.9;
2096
+ }
2097
+ .ac-perm__btn--scope {
2098
+ padding: 0 6px;
2099
+ border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
2100
+ border-left: 1px solid color-mix(in srgb, var(--primary) 70%, transparent);
2101
+ background: var(--primary);
2102
+ color: var(--primary-foreground);
2103
+ }
2104
+ .ac-perm__btn--scope:hover {
2105
+ opacity: 0.9;
2106
+ }
2107
+ .ac-perm__menu {
2108
+ position: absolute;
2109
+ right: 0;
2110
+ bottom: calc(100% + 5px);
2111
+ z-index: 40;
2112
+ min-width: 150px;
2113
+ padding: 4px;
2114
+ border: 1px solid var(--border-700);
2115
+ border-radius: var(--radius-md);
2116
+ background: var(--surface-overlay);
2117
+ box-shadow: var(--elev-shadow-lg);
2118
+ }
2119
+ .ac-perm__menu-item {
2120
+ display: block;
2121
+ width: 100%;
2122
+ padding: 6px 9px;
2123
+ border-radius: var(--radius-sm);
2124
+ text-align: left;
2125
+ font-size: var(--text-meta);
2126
+ color: var(--text-300);
2127
+ }
2128
+ .ac-perm__menu-item:hover {
2129
+ background: var(--surface-800);
2130
+ color: var(--text-100);
2131
+ }
2132
+
2133
+
2134
+
2135
+ .ac-ask-sheet {
2136
+ position: absolute;
2137
+ left: 50%;
2138
+ bottom: calc(100% + 10px);
2139
+ z-index: 45;
2140
+
2141
+
2142
+ width: min(var(--ac-composer-width), calc(100% - var(--ac-gutter) * 2));
2143
+
2144
+ max-height: min(320px, calc(100vh - 240px));
2145
+ display: flex;
2146
+ flex-direction: column;
2147
+ transform: translateX(-50%);
2148
+ padding: 10px 12px 11px;
2149
+ border: 1px solid var(--border-700);
2150
+ border-radius: var(--radius-lg);
2151
+ background: var(--surface-overlay);
2152
+ box-shadow: var(--elev-shadow-lg);
2153
+ animation: ac-ask-in 220ms cubic-bezier(0.22, 1, 0.36, 1);
2154
+ }
2155
+ @keyframes ac-ask-in {
2156
+ 0% {
2157
+ opacity: 0;
2158
+ transform: translateX(-50%) translateY(8px) scale(0.97);
2159
+ }
2160
+ 100% {
2161
+ opacity: 1;
2162
+ transform: translateX(-50%) translateY(0) scale(1);
2163
+ }
2164
+ }
2165
+ .ac-ask-sheet__head {
2166
+ display: flex;
2167
+ align-items: center;
2168
+ gap: 6px;
2169
+ padding-bottom: 7px;
2170
+ }
2171
+ .ac-ask-sheet__head-icon {
2172
+ width: 13px;
2173
+ height: 13px;
2174
+ flex-shrink: 0;
2175
+ color: var(--accent-primary);
2176
+ }
2177
+ .ac-ask-sheet__who {
2178
+ font-size: var(--text-meta);
2179
+ font-weight: 500;
2180
+ color: var(--text-200);
2181
+ }
2182
+ .ac-ask-sheet__progress {
2183
+ padding: 0 6px;
2184
+ border: 1px solid var(--border-600);
2185
+ border-radius: 999px;
2186
+ font-size: var(--text-micro);
2187
+ font-variant-numeric: tabular-nums;
2188
+ color: var(--text-400);
2189
+ }
2190
+ .ac-ask-sheet__queued {
2191
+ font-size: var(--text-micro);
2192
+ color: var(--text-500);
2193
+ }
2194
+ .ac-ask-sheet__skip {
2195
+ display: inline-flex;
2196
+ margin-left: auto;
2197
+ align-items: center;
2198
+ gap: 3px;
2199
+ padding: 2px 7px;
2200
+ border-radius: var(--radius-sm);
2201
+ font-size: var(--text-micro);
2202
+ color: var(--text-500);
2203
+ }
2204
+ .ac-ask-sheet__skip:hover {
2205
+ background: var(--surface-800);
2206
+ color: var(--text-200);
2207
+ }
2208
+ .ac-ask-sheet__body {
2209
+ display: flex;
2210
+ min-height: 0;
2211
+ overflow-y: auto;
2212
+ flex-direction: column;
2213
+ gap: 9px;
2214
+ }
2215
+ .ac-ask-q__prompt {
2216
+ display: flex;
2217
+ align-items: baseline;
2218
+ gap: 6px;
2219
+ font-size: var(--text-body);
2220
+ line-height: 1.55;
2221
+ color: var(--text-100);
2222
+ }
2223
+ .ac-ask-q__index {
2224
+ display: inline-grid;
2225
+ width: 15px;
2226
+ height: 15px;
2227
+ flex-shrink: 0;
2228
+ place-items: center;
2229
+ border: 1px solid var(--border-600);
2230
+ border-radius: 999px;
2231
+ font-size: 9px;
2232
+ color: var(--text-400);
2233
+ }
2234
+ .ac-ask-q__choices {
2235
+ display: flex;
2236
+ flex-wrap: wrap;
2237
+ gap: 5px;
2238
+ margin-top: 6px;
2239
+ }
2240
+ .ac-ask-q__chip {
2241
+ display: inline-flex;
2242
+ height: 26px;
2243
+ align-items: center;
2244
+ gap: 4px;
2245
+ padding: 0 9px;
2246
+ border: 1px solid var(--border-700);
2247
+ border-radius: 999px;
2248
+ background: var(--surface-800);
2249
+ font-size: var(--text-meta);
2250
+ color: var(--text-200);
2251
+ transition:
2252
+ border-color 130ms ease,
2253
+ background 130ms ease,
2254
+ color 130ms ease;
2255
+ }
2256
+ .ac-ask-q__chip:hover {
2257
+ background: var(--surface-700);
2258
+ color: var(--text-100);
2259
+ }
2260
+ .ac-ask-q__chip[data-state="recommended"] {
2261
+ color: var(--text-100);
2262
+ }
2263
+ .ac-ask-q__chip[data-state="recommended"] svg {
2264
+ color: var(--accent-primary);
2265
+ }
2266
+ .ac-ask-q__chip[data-state="chosen"] {
2267
+ background: var(--accent-primary-light);
2268
+ color: var(--text-100);
2269
+ }
2270
+ .ac-ask-q__chip[data-state="chosen"] svg {
2271
+ color: var(--accent-primary);
2272
+ }
2273
+ .ac-ask-q__chip--free {
2274
+ border-style: dashed;
2275
+ color: var(--text-400);
2276
+ }
2277
+ .ac-ask-q__input {
2278
+ display: block;
2279
+ width: 100%;
2280
+ margin-top: 6px;
2281
+ padding: 5px 8px;
2282
+ border: 1px solid var(--border-control);
2283
+ border-radius: var(--radius-sm);
2284
+ background: var(--surface-950);
2285
+ font-size: var(--text-meta);
2286
+ color: var(--text-100);
2287
+ }
2288
+ .ac-ask-q__input:focus-visible {
2289
+ border-color: var(--focus-ring);
2290
+ outline: 2px solid var(--focus-ring);
2291
+ outline-offset: 1px;
2292
+ }
2293
+ .ac-ask-sheet__overflow {
2294
+ font-size: var(--text-micro);
2295
+ color: var(--text-500);
2296
+ }
2297
+ .ac-ask-sheet__actions {
2298
+ display: flex;
2299
+ align-items: center;
2300
+ gap: 6px;
2301
+ margin-top: 10px;
2302
+ padding-top: 9px;
2303
+ border-top: 1px solid var(--border-800);
2304
+ }
2305
+ .ac-ask-sheet__default {
2306
+ display: inline-flex;
2307
+ height: 26px;
2308
+ align-items: center;
2309
+ gap: 4px;
2310
+ padding: 0 9px;
2311
+ border-radius: var(--radius-sm);
2312
+ font-size: var(--text-meta);
2313
+ color: var(--accent-primary);
2314
+ }
2315
+ .ac-ask-sheet__default:hover:not(:disabled) {
2316
+ background: var(--accent-primary-light);
2317
+ }
2318
+ .ac-ask-sheet__default:disabled {
2319
+ color: var(--text-600);
2320
+ }
2321
+ .ac-ask-sheet__submit {
2322
+ display: inline-flex;
2323
+ height: 26px;
2324
+ margin-left: auto;
2325
+ align-items: center;
2326
+ gap: 4px;
2327
+ padding: 0 11px;
2328
+ border-radius: var(--radius-sm);
2329
+ background: var(--primary);
2330
+ color: var(--primary-foreground);
2331
+ font-size: var(--text-meta);
2332
+ font-weight: 500;
2333
+ }
2334
+ .ac-ask-sheet__submit:hover:not(:disabled) {
2335
+ opacity: 0.9;
2336
+ }
2337
+ .ac-ask-sheet__submit.is-empty {
2338
+ background: var(--surface-700);
2339
+ color: var(--text-500);
2340
+ }
2341
+
2342
+
2343
+ .ac-perm-dock {
2344
+ position: relative;
2345
+ z-index: 6;
2346
+ display: flex;
2347
+ flex-shrink: 0;
2348
+ flex-direction: column;
2349
+ gap: 8px;
2350
+ max-height: 45vh;
2351
+ overflow-y: auto;
2352
+ padding: 0 var(--ac-gutter) 10px;
2353
+ }
2354
+ .ac-perm-dock > * {
2355
+ max-width: var(--ac-content-max);
2356
+ margin: 0 auto;
2357
+ width: 100%;
2358
+ }
2359
+
2360
+ .ac-perm-dock::before {
2361
+ content: "";
2362
+ position: absolute;
2363
+ inset: -18px 0 auto;
2364
+ height: 18px;
2365
+ background: linear-gradient(to bottom, transparent, var(--surface-950));
2366
+ pointer-events: none;
2367
+ }
2368
+
2369
+
2370
+ .ac-composer__dock [data-cmp="ai/context-usage"] {
2371
+ opacity: 0.55;
2372
+ transition: opacity 140ms ease;
2373
+ }
2374
+ .ac-composer:hover .ac-composer__dock [data-cmp="ai/context-usage"],
2375
+ .ac-composer__dock [data-cmp="ai/context-usage"]:focus-visible,
2376
+ .ac-composer__dock [data-cmp="ai/context-usage"]:hover {
2377
+ opacity: 1;
2378
+ }
2379
+
2380
+
2381
+
2382
+ body:has(.ac-composer .ac-ask-sheet) .ac-perm-dock {
2383
+ margin-bottom: 336px;
2384
+ }
2385
+
2386
+
2387
+ .ac-ask-q__multi-tag {
2388
+ flex-shrink: 0;
2389
+ padding: 0 5px;
2390
+ border: 1px solid var(--border-600);
2391
+ border-radius: 999px;
2392
+ font-size: 10px;
2393
+ color: var(--text-500);
2394
+ }
2395
+
2396
+ .ac-ask-q__chip--other {
2397
+ border-style: dashed;
2398
+ color: var(--text-400);
2399
+ }
2400
+ .ac-ask-q__chip--other[data-state="chosen"] {
2401
+ border-style: solid;
2402
+ background: var(--accent-primary-light);
2403
+ color: var(--text-100);
2404
+ }
2405
+
2406
+
2407
+ .ac-scroll-bottom {
2408
+ position: absolute;
2409
+ right: max(6px, calc((100% - var(--ac-content-max)) / 2 - 32px));
2410
+
2411
+ bottom: 10px;
2412
+ z-index: 20;
2413
+ width: 24px;
2414
+ height: 24px;
2415
+ border-radius: 999px;
2416
+ border: 1px solid var(--border-700);
2417
+ background: color-mix(in srgb, var(--surface-800) 92%, transparent);
2418
+ color: var(--text-300);
2419
+ box-shadow:
2420
+ 0 2px 8px -2px var(--shadow-strong),
2421
+ 0 0 0 3px color-mix(in srgb, var(--surface-950) 60%, transparent);
2422
+ backdrop-filter: blur(6px);
2423
+ animation: ac-scroll-bottom-in 160ms ease-out;
2424
+ }
2425
+ .ac-scroll-bottom:hover {
2426
+ background: var(--surface-700);
2427
+ color: var(--text-100);
2428
+ border-color: var(--border-600);
2429
+ }
2430
+ @keyframes ac-scroll-bottom-in {
2431
+ 0% {
2432
+ opacity: 0;
2433
+ transform: translateY(4px);
2434
+ }
2435
+ 100% {
2436
+ opacity: 1;
2437
+ transform: translateY(0);
2438
+ }
2439
+ }