@weavetab/mcp 2.5.0-beta.5 → 2.5.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 (160) hide show
  1. package/AGENTS.md +49 -49
  2. package/ARCHITECTURE.md +590 -590
  3. package/README.md +216 -100
  4. package/SECURITY.md +207 -207
  5. package/TROUBLESHOOTING.md +373 -365
  6. package/dist/anticaptcha/detector.js +395 -395
  7. package/dist/anticaptcha/solver.js +130 -130
  8. package/dist/cdp/bridge.js +73 -73
  9. package/dist/cdp/connector.js +46 -22
  10. package/dist/cdp/extension.js +34 -34
  11. package/dist/cdp/helpers.js +174 -174
  12. package/dist/cdp/pruner.js +195 -195
  13. package/dist/cdp/ref_cache.js +66 -66
  14. package/dist/cdp/security.js +10 -10
  15. package/dist/cdp/verify.js +57 -57
  16. package/dist/cdp/walker.js +563 -525
  17. package/dist/cli/plugin.js +26 -3
  18. package/dist/config/loader.d.ts +0 -3
  19. package/dist/config/loader.js +0 -9
  20. package/dist/index.js +0 -4
  21. package/dist/intelligence/intent.js +81 -81
  22. package/dist/intelligence/sessionMemory.js +2 -2
  23. package/dist/overlay/ghost.js +22 -22
  24. package/dist/overlay/injector.js +89 -89
  25. package/dist/plugin/extension_bridge.js +54 -54
  26. package/dist/plugin/interface.d.ts +7 -0
  27. package/dist/plugin/loader.js +3 -4
  28. package/dist/plugin/schema.d.ts +11 -0
  29. package/dist/plugin/schema.js +59 -0
  30. package/dist/security/guard.js +18 -18
  31. package/dist/sensors/actionability.js +167 -167
  32. package/dist/sensors/guard.js +29 -29
  33. package/dist/sensors/network.js +15 -17
  34. package/dist/server.d.ts +1 -1
  35. package/dist/server.js +173 -144
  36. package/dist/state/delta.js +6 -7
  37. package/dist/tools/automation.js +85 -85
  38. package/dist/tools/canvas.js +48 -25
  39. package/dist/tools/checkpoint.js +94 -35
  40. package/dist/tools/click.js +52 -41
  41. package/dist/tools/clipboard.js +80 -74
  42. package/dist/tools/design_extract.js +441 -441
  43. package/dist/tools/dialog.js +13 -13
  44. package/dist/tools/emulation.d.ts +2 -0
  45. package/dist/tools/emulation.js +7 -0
  46. package/dist/tools/fill.js +344 -347
  47. package/dist/tools/find.js +78 -52
  48. package/dist/tools/highlight.js +67 -67
  49. package/dist/tools/inspect.js +54 -25
  50. package/dist/tools/key.js +42 -35
  51. package/dist/tools/navigate.d.ts +1 -1
  52. package/dist/tools/navigate.js +35 -35
  53. package/dist/tools/office/parse.js +62 -18
  54. package/dist/tools/pdf.d.ts +9 -0
  55. package/dist/tools/pdf.js +7 -4
  56. package/dist/tools/performance.d.ts +11 -4
  57. package/dist/tools/performance.js +94 -42
  58. package/dist/tools/performance_test.d.ts +2 -2
  59. package/dist/tools/performance_test.js +69 -69
  60. package/dist/tools/pointer.js +116 -116
  61. package/dist/tools/read.js +99 -67
  62. package/dist/tools/recording.js +9 -0
  63. package/dist/tools/scrape.js +146 -146
  64. package/dist/tools/screenshot.d.ts +2 -0
  65. package/dist/tools/screenshot.js +46 -4
  66. package/dist/tools/scroll.d.ts +3 -1
  67. package/dist/tools/scroll.js +13 -15
  68. package/dist/tools/select.d.ts +3 -0
  69. package/dist/tools/select.js +131 -124
  70. package/dist/tools/snapshot.js +8 -6
  71. package/dist/tools/storage.d.ts +5 -1
  72. package/dist/tools/storage.js +16 -0
  73. package/dist/tools/tabs.d.ts +7 -5
  74. package/dist/tools/tabs.js +79 -26
  75. package/dist/tools/thought.js +8 -8
  76. package/dist/tools/type.js +274 -274
  77. package/dist/tools/type_secret.js +23 -23
  78. package/dist/tools/upload.js +3 -3
  79. package/dist/tools/video_compiler.js +9 -0
  80. package/dist/tools/wait.js +35 -35
  81. package/dist/version.d.ts +1 -1
  82. package/dist/version.js +1 -1
  83. package/docs/DOCUMENTATION.md +583 -585
  84. package/docs/PLUGINS.md +139 -121
  85. package/docs/TOOLS.md +3 -4
  86. package/docs/architecture/blind-injection.md +83 -83
  87. package/docs/architecture/overview.md +49 -49
  88. package/docs/configuration/configuration.md +39 -27
  89. package/docs/configuration/folders.md +62 -55
  90. package/docs/desktop-automation/electron-apps.md +225 -214
  91. package/docs/get-started/installation.md +1 -1
  92. package/docs/get-started/introduction.md +60 -60
  93. package/docs/get-started/quickstart.md +2 -2
  94. package/docs/get-started/setup-wizard.md +1 -1
  95. package/docs/intelligence/site-profiles.md +151 -151
  96. package/docs/tools/tools.md +582 -631
  97. package/docs/troubleshooting/trouble-loop.md +31 -31
  98. package/ext-dist/background.js +415 -415
  99. package/ext-dist/content.js +2527 -2527
  100. package/ext-dist/dashboard.html +583 -583
  101. package/ext-dist/hud/hud.js +3 -3
  102. package/ext-dist/hud/index.html +20 -20
  103. package/ext-dist/manifest.json +73 -73
  104. package/ext-dist/styles.css +223 -223
  105. package/mcp.json +796 -805
  106. package/package.json +8 -8
  107. package/server.json +23 -23
  108. package/smithery.yaml +7 -11
  109. package/dist/cdp/walker.test.d.ts +0 -2
  110. package/dist/cdp/walker.test.js +0 -172
  111. package/dist/intelligence/sessionMemory.test.d.ts +0 -2
  112. package/dist/intelligence/sessionMemory.test.js +0 -62
  113. package/dist/intelligence/trail.test.d.ts +0 -2
  114. package/dist/intelligence/trail.test.js +0 -110
  115. package/dist/state/cache.test.d.ts +0 -2
  116. package/dist/state/cache.test.js +0 -76
  117. package/dist/state/delta.test.d.ts +0 -2
  118. package/dist/state/delta.test.js +0 -279
  119. package/dist/state/groups.d.ts +0 -15
  120. package/dist/state/groups.js +0 -80
  121. package/dist/tools/accessibility.d.ts +0 -14
  122. package/dist/tools/accessibility.js +0 -32
  123. package/dist/tools/ask.d.ts +0 -14
  124. package/dist/tools/ask.js +0 -49
  125. package/dist/tools/click_and_wait.d.ts +0 -33
  126. package/dist/tools/click_and_wait.js +0 -149
  127. package/dist/tools/drag.d.ts +0 -15
  128. package/dist/tools/drag.js +0 -29
  129. package/dist/tools/geo.d.ts +0 -19
  130. package/dist/tools/geo.js +0 -29
  131. package/dist/tools/github/analyze.d.ts +0 -4
  132. package/dist/tools/github/analyze.js +0 -113
  133. package/dist/tools/github/cache.d.ts +0 -21
  134. package/dist/tools/github/cache.js +0 -28
  135. package/dist/tools/github/index.d.ts +0 -19
  136. package/dist/tools/github/index.js +0 -40
  137. package/dist/tools/github/issues.d.ts +0 -9
  138. package/dist/tools/github/issues.js +0 -88
  139. package/dist/tools/github/pr.d.ts +0 -5
  140. package/dist/tools/github/pr.js +0 -88
  141. package/dist/tools/github/rateLimiter.d.ts +0 -4
  142. package/dist/tools/github/rateLimiter.js +0 -46
  143. package/dist/tools/github/read.d.ts +0 -34
  144. package/dist/tools/github/read.js +0 -74
  145. package/dist/tools/github/repoContext.d.ts +0 -20
  146. package/dist/tools/github/repoContext.js +0 -129
  147. package/dist/tools/hover.d.ts +0 -19
  148. package/dist/tools/hover.js +0 -57
  149. package/dist/tools/integration.test.d.ts +0 -2
  150. package/dist/tools/integration.test.js +0 -96
  151. package/dist/tools/macro_compiler.d.ts +0 -7
  152. package/dist/tools/macro_compiler.js +0 -82
  153. package/dist/tools/mouse.d.ts +0 -21
  154. package/dist/tools/mouse.js +0 -62
  155. package/dist/tools/response.d.ts +0 -129
  156. package/dist/tools/response.js +0 -5
  157. package/dist/tools/wait_for.d.ts +0 -23
  158. package/dist/tools/wait_for.js +0 -30
  159. package/dist/tools/windows.d.ts +0 -22
  160. package/dist/tools/windows.js +0 -57
@@ -1,223 +1,223 @@
1
- /* ═══════════════════════════════════════════════════════════════
2
- Weavetab · UI Design System
3
- ═══════════════════════════════════════════════════════════════ */
4
-
5
- /* ── SHARED TOKENS (Light theme default) ─────────────────────── */
6
- :root {
7
- --wt-bg: #ffffff;
8
- --wt-bg-panel: #f9f9fb;
9
- --wt-bg-item: #f0f0f3;
10
- --wt-bg-hover: #e8e8ec;
11
- --wt-border: #e4e4e7;
12
- --wt-border-hi: #d4d4d8;
13
- --wt-blue: #3b82f6;
14
- --wt-blue-dark: #2563eb;
15
- --wt-blue-light: #60a5fa;
16
- --wt-green: #16a34a;
17
- --wt-green-bg: #f0fdf4;
18
- --wt-red: #ef4444;
19
- --wt-red-bg: #fef2f2;
20
- --wt-text: #18181b;
21
- --wt-text-secondary: #52525b;
22
- --wt-text-muted: #a1a1aa;
23
- --wt-text-dim: #d4d4d8;
24
- --wt-text-bright: #09090b;
25
- --wt-shadow: 0 1px 3px rgba(0,0,0,0.08);
26
- --wt-shadow-lg: 0 4px 12px rgba(0,0,0,0.1);
27
- --wt-radius: 10px;
28
- --wt-radius-sm: 6px;
29
- }
30
-
31
- [data-theme='dark'] {
32
- --wt-bg: #09090b;
33
- --wt-bg-panel: #111113;
34
- --wt-bg-item: #18181b;
35
- --wt-bg-hover: #27272a;
36
- --wt-border: #27272a;
37
- --wt-border-hi: #3f3f46;
38
- --wt-blue: #3b82f6;
39
- --wt-blue-dark: #60a5fa;
40
- --wt-blue-light: #93c5fd;
41
- --wt-green: #22c55e;
42
- --wt-green-bg: #052e16;
43
- --wt-red: #f87171;
44
- --wt-red-bg: #450a0a;
45
- --wt-text: #fafafa;
46
- --wt-text-secondary: #a1a1aa;
47
- --wt-text-muted: #71717a;
48
- --wt-text-dim: #3f3f46;
49
- --wt-text-bright: #fafafa;
50
- --wt-shadow: 0 1px 3px rgba(0,0,0,0.4);
51
- --wt-shadow-lg: 0 4px 12px rgba(0,0,0,0.5);
52
- }
53
-
54
- /* ── COMPONENT: Thought Bubble ──────────────────────────────── */
55
- .wt-bubble {
56
- background: var(--wt-bg);
57
- border: 1px solid var(--wt-border);
58
- padding: 6px 10px;
59
- max-width: 320px;
60
- display: inline-flex;
61
- align-items: flex-start;
62
- gap: 7px;
63
- font-size: 11px;
64
- color: var(--wt-text-secondary);
65
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
66
- position: relative;
67
- }
68
-
69
- .wt-bubble-icon {
70
- flex-shrink: 0;
71
- margin-top: 1px;
72
- opacity: .75;
73
- }
74
-
75
- .wt-bubble-cursor {
76
- display: inline-block;
77
- width: 5px;
78
- height: 11px;
79
- background: var(--wt-blue);
80
- vertical-align: middle;
81
- animation: wt-blink 1s steps(1) infinite;
82
- margin-left: 2px;
83
- }
84
-
85
- @keyframes wt-blink {
86
- 0%, 49% { opacity: 1; }
87
- 50%, 100% { opacity: 0; }
88
- }
89
-
90
- /* ── COMPONENT: Chat Input Row ──────────────────────────────── */
91
- .wt-chat {
92
- display: inline-flex;
93
- }
94
-
95
- .wt-chat-in {
96
- flex: 1;
97
- padding: 5px 10px;
98
- background: var(--wt-bg-item);
99
- border: 1px solid var(--wt-border);
100
- border-right: none;
101
- color: var(--wt-text);
102
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
103
- font-size: 11px;
104
- outline: none;
105
- min-width: 200px;
106
- caret-color: var(--wt-blue);
107
- border-radius: var(--wt-radius-sm) 0 0 var(--wt-radius-sm);
108
- }
109
-
110
- .wt-chat-in::placeholder {
111
- color: var(--wt-text-muted);
112
- }
113
-
114
- .wt-chat-in:focus {
115
- border-color: var(--wt-blue);
116
- }
117
-
118
- .wt-chat-go {
119
- padding: 5px 12px;
120
- background: var(--wt-blue);
121
- border: 1px solid var(--wt-blue);
122
- color: #fff;
123
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
124
- font-size: 11px;
125
- font-weight: 500;
126
- cursor: pointer;
127
- border-radius: 0 var(--wt-radius-sm) var(--wt-radius-sm) 0;
128
- transition: background 0.15s;
129
- }
130
-
131
- .wt-chat-go:hover {
132
- background: var(--wt-blue-dark);
133
- }
134
-
135
- /* ── ANIMATIONS ──────────────────────────────────────────────── */
136
- @keyframes wt-bubble-in {
137
- from { opacity: 0; transform: scale(0.88) translateY(5px); }
138
- to { opacity: 1; transform: scale(1) translateY(0); }
139
- }
140
-
141
- @keyframes wt-fade-in {
142
- from { opacity: 0; }
143
- to { opacity: 1; }
144
- }
145
-
146
- @keyframes wt-scale-in {
147
- from { transform: scale(0.96); opacity: 0; }
148
- to { transform: scale(1); opacity: 1; }
149
- }
150
-
151
- @keyframes wt-bubble-out {
152
- from { opacity: 1; transform: translateY(0); }
153
- to { opacity: 0; transform: translateY(6px); }
154
- }
155
-
156
- @keyframes wt-smooth-fade-in {
157
- from { opacity: 0; transform: translateY(10px); }
158
- to { opacity: 1; transform: translateY(0); }
159
- }
160
-
161
- @keyframes wt-smooth-fade-out {
162
- from { opacity: 1; transform: translateY(0); }
163
- to { opacity: 0; transform: translateY(10px); }
164
- }
165
-
166
- /* ── IN-PROGRESS TASK PULSE ─────────────────────────────────── */
167
- @keyframes wt-task-pulse {
168
- 0% { border-left-color: var(--wt-blue); }
169
- 50% { border-left-color: var(--wt-blue-light); }
170
- 100% { border-left-color: var(--wt-blue); }
171
- }
172
-
173
- /* ── TOP-BAR SHIMMER ─────────────────────────────────────────── */
174
- @keyframes wt-shimmer {
175
- 0% { left: -60%; }
176
- 100% { left: 120%; }
177
- }
178
-
179
- /* ── COMPONENT: Badges ──────────────────────────────────────── */
180
- .wt-badge {
181
- display: inline-flex;
182
- align-items: center;
183
- justify-content: center;
184
- padding: 2px 6px;
185
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
186
- font-size: 9px;
187
- font-weight: 600;
188
- text-transform: uppercase;
189
- color: #fff;
190
- border-radius: 4px;
191
- letter-spacing: 0.03em;
192
- }
193
-
194
- .wt-badge-beta {
195
- background: #f59e0b;
196
- }
197
-
198
- .wt-badge-dev {
199
- background: var(--wt-blue);
200
- }
201
-
202
- /* ── PLACEHOLDER STYLING ─────────────────────────────────────── */
203
- #wt-msg-input::placeholder {
204
- color: var(--wt-text-muted);
205
- font-size: 11px;
206
- }
207
-
208
- #wt-msg-input:focus::placeholder {
209
- color: var(--wt-text-secondary);
210
- }
211
-
212
- /* ── RESPONSIVE ──────────────────────────────────────────────── */
213
- @media (max-width: 480px) {
214
- .wt-bubble {
215
- max-width: 280px !important;
216
- }
217
- }
218
-
219
- /* ── ACTION RIPPLE ANIMATION ─────────────────────────────────── */
220
- @keyframes __wt_ripple_expand {
221
- 0% { transform: scale(1); opacity: 1; }
222
- 100% { transform: scale(7.5); opacity: 0; }
223
- }
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Weavetab · UI Design System
3
+ ═══════════════════════════════════════════════════════════════ */
4
+
5
+ /* ── SHARED TOKENS (Light theme default) ─────────────────────── */
6
+ :root {
7
+ --wt-bg: #ffffff;
8
+ --wt-bg-panel: #f9f9fb;
9
+ --wt-bg-item: #f0f0f3;
10
+ --wt-bg-hover: #e8e8ec;
11
+ --wt-border: #e4e4e7;
12
+ --wt-border-hi: #d4d4d8;
13
+ --wt-blue: #3b82f6;
14
+ --wt-blue-dark: #2563eb;
15
+ --wt-blue-light: #60a5fa;
16
+ --wt-green: #16a34a;
17
+ --wt-green-bg: #f0fdf4;
18
+ --wt-red: #ef4444;
19
+ --wt-red-bg: #fef2f2;
20
+ --wt-text: #18181b;
21
+ --wt-text-secondary: #52525b;
22
+ --wt-text-muted: #a1a1aa;
23
+ --wt-text-dim: #d4d4d8;
24
+ --wt-text-bright: #09090b;
25
+ --wt-shadow: 0 1px 3px rgba(0,0,0,0.08);
26
+ --wt-shadow-lg: 0 4px 12px rgba(0,0,0,0.1);
27
+ --wt-radius: 10px;
28
+ --wt-radius-sm: 6px;
29
+ }
30
+
31
+ [data-theme='dark'] {
32
+ --wt-bg: #09090b;
33
+ --wt-bg-panel: #111113;
34
+ --wt-bg-item: #18181b;
35
+ --wt-bg-hover: #27272a;
36
+ --wt-border: #27272a;
37
+ --wt-border-hi: #3f3f46;
38
+ --wt-blue: #3b82f6;
39
+ --wt-blue-dark: #60a5fa;
40
+ --wt-blue-light: #93c5fd;
41
+ --wt-green: #22c55e;
42
+ --wt-green-bg: #052e16;
43
+ --wt-red: #f87171;
44
+ --wt-red-bg: #450a0a;
45
+ --wt-text: #fafafa;
46
+ --wt-text-secondary: #a1a1aa;
47
+ --wt-text-muted: #71717a;
48
+ --wt-text-dim: #3f3f46;
49
+ --wt-text-bright: #fafafa;
50
+ --wt-shadow: 0 1px 3px rgba(0,0,0,0.4);
51
+ --wt-shadow-lg: 0 4px 12px rgba(0,0,0,0.5);
52
+ }
53
+
54
+ /* ── COMPONENT: Thought Bubble ──────────────────────────────── */
55
+ .wt-bubble {
56
+ background: var(--wt-bg);
57
+ border: 1px solid var(--wt-border);
58
+ padding: 6px 10px;
59
+ max-width: 320px;
60
+ display: inline-flex;
61
+ align-items: flex-start;
62
+ gap: 7px;
63
+ font-size: 11px;
64
+ color: var(--wt-text-secondary);
65
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
66
+ position: relative;
67
+ }
68
+
69
+ .wt-bubble-icon {
70
+ flex-shrink: 0;
71
+ margin-top: 1px;
72
+ opacity: .75;
73
+ }
74
+
75
+ .wt-bubble-cursor {
76
+ display: inline-block;
77
+ width: 5px;
78
+ height: 11px;
79
+ background: var(--wt-blue);
80
+ vertical-align: middle;
81
+ animation: wt-blink 1s steps(1) infinite;
82
+ margin-left: 2px;
83
+ }
84
+
85
+ @keyframes wt-blink {
86
+ 0%, 49% { opacity: 1; }
87
+ 50%, 100% { opacity: 0; }
88
+ }
89
+
90
+ /* ── COMPONENT: Chat Input Row ──────────────────────────────── */
91
+ .wt-chat {
92
+ display: inline-flex;
93
+ }
94
+
95
+ .wt-chat-in {
96
+ flex: 1;
97
+ padding: 5px 10px;
98
+ background: var(--wt-bg-item);
99
+ border: 1px solid var(--wt-border);
100
+ border-right: none;
101
+ color: var(--wt-text);
102
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
103
+ font-size: 11px;
104
+ outline: none;
105
+ min-width: 200px;
106
+ caret-color: var(--wt-blue);
107
+ border-radius: var(--wt-radius-sm) 0 0 var(--wt-radius-sm);
108
+ }
109
+
110
+ .wt-chat-in::placeholder {
111
+ color: var(--wt-text-muted);
112
+ }
113
+
114
+ .wt-chat-in:focus {
115
+ border-color: var(--wt-blue);
116
+ }
117
+
118
+ .wt-chat-go {
119
+ padding: 5px 12px;
120
+ background: var(--wt-blue);
121
+ border: 1px solid var(--wt-blue);
122
+ color: #fff;
123
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
124
+ font-size: 11px;
125
+ font-weight: 500;
126
+ cursor: pointer;
127
+ border-radius: 0 var(--wt-radius-sm) var(--wt-radius-sm) 0;
128
+ transition: background 0.15s;
129
+ }
130
+
131
+ .wt-chat-go:hover {
132
+ background: var(--wt-blue-dark);
133
+ }
134
+
135
+ /* ── ANIMATIONS ──────────────────────────────────────────────── */
136
+ @keyframes wt-bubble-in {
137
+ from { opacity: 0; transform: scale(0.88) translateY(5px); }
138
+ to { opacity: 1; transform: scale(1) translateY(0); }
139
+ }
140
+
141
+ @keyframes wt-fade-in {
142
+ from { opacity: 0; }
143
+ to { opacity: 1; }
144
+ }
145
+
146
+ @keyframes wt-scale-in {
147
+ from { transform: scale(0.96); opacity: 0; }
148
+ to { transform: scale(1); opacity: 1; }
149
+ }
150
+
151
+ @keyframes wt-bubble-out {
152
+ from { opacity: 1; transform: translateY(0); }
153
+ to { opacity: 0; transform: translateY(6px); }
154
+ }
155
+
156
+ @keyframes wt-smooth-fade-in {
157
+ from { opacity: 0; transform: translateY(10px); }
158
+ to { opacity: 1; transform: translateY(0); }
159
+ }
160
+
161
+ @keyframes wt-smooth-fade-out {
162
+ from { opacity: 1; transform: translateY(0); }
163
+ to { opacity: 0; transform: translateY(10px); }
164
+ }
165
+
166
+ /* ── IN-PROGRESS TASK PULSE ─────────────────────────────────── */
167
+ @keyframes wt-task-pulse {
168
+ 0% { border-left-color: var(--wt-blue); }
169
+ 50% { border-left-color: var(--wt-blue-light); }
170
+ 100% { border-left-color: var(--wt-blue); }
171
+ }
172
+
173
+ /* ── TOP-BAR SHIMMER ─────────────────────────────────────────── */
174
+ @keyframes wt-shimmer {
175
+ 0% { left: -60%; }
176
+ 100% { left: 120%; }
177
+ }
178
+
179
+ /* ── COMPONENT: Badges ──────────────────────────────────────── */
180
+ .wt-badge {
181
+ display: inline-flex;
182
+ align-items: center;
183
+ justify-content: center;
184
+ padding: 2px 6px;
185
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
186
+ font-size: 9px;
187
+ font-weight: 600;
188
+ text-transform: uppercase;
189
+ color: #fff;
190
+ border-radius: 4px;
191
+ letter-spacing: 0.03em;
192
+ }
193
+
194
+ .wt-badge-beta {
195
+ background: #f59e0b;
196
+ }
197
+
198
+ .wt-badge-dev {
199
+ background: var(--wt-blue);
200
+ }
201
+
202
+ /* ── PLACEHOLDER STYLING ─────────────────────────────────────── */
203
+ #wt-msg-input::placeholder {
204
+ color: var(--wt-text-muted);
205
+ font-size: 11px;
206
+ }
207
+
208
+ #wt-msg-input:focus::placeholder {
209
+ color: var(--wt-text-secondary);
210
+ }
211
+
212
+ /* ── RESPONSIVE ──────────────────────────────────────────────── */
213
+ @media (max-width: 480px) {
214
+ .wt-bubble {
215
+ max-width: 280px !important;
216
+ }
217
+ }
218
+
219
+ /* ── ACTION RIPPLE ANIMATION ─────────────────────────────────── */
220
+ @keyframes __wt_ripple_expand {
221
+ 0% { transform: scale(1); opacity: 1; }
222
+ 100% { transform: scale(7.5); opacity: 0; }
223
+ }