@connekz/connekz-agent 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/LICENSE +25 -0
- package/README.md +335 -0
- package/dist/connekz-agent.css +1 -0
- package/dist/connekz-agent.es.js +16691 -0
- package/dist/connekz-agent.umd.js +19 -0
- package/dist/favicon.ico +0 -0
- package/dist/worklet-processor.js +11 -0
- package/package.json +94 -0
- package/types.d.ts +60 -0
package/CHANGELOG.md
ADDED
package/LICENSE
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Connekz NPM Package License Agreement
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Connekz Limited. All rights reserved.
|
|
4
|
+
|
|
5
|
+
This software is proprietary to Connekz Limited. It is provided as a developer toolkit for integrating Connekz AI capabilities into your own projects, using valid Connekz instance credentials.
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software via NPM to:
|
|
8
|
+
|
|
9
|
+
1. Use, copy, and integrate it into your own software projects, including commercial and resellable applications.
|
|
10
|
+
2. Distribute the integrated software (e.g., as part of your bundled product), provided the Connekz NPM package is not redistributed standalone or in unmodified form.
|
|
11
|
+
|
|
12
|
+
Subject to the following conditions:
|
|
13
|
+
|
|
14
|
+
- The software may not be modified, reverse-engineered, decompiled, or disassembled.
|
|
15
|
+
- Standalone redistribution, sublicensing, renting, leasing, or creation of derivative works (beyond integration) requires explicit written permission from Connekz Limited.
|
|
16
|
+
- Use is limited to projects connecting to authorized Connekz instances with valid credentials. Unauthorized use is prohibited.
|
|
17
|
+
- This software is provided "AS IS" without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement.
|
|
18
|
+
|
|
19
|
+
Connekz Limited reserves the right to terminate this license at any time for any reason.
|
|
20
|
+
|
|
21
|
+
Governing Law: This license shall be governed by the laws of New Zealand.
|
|
22
|
+
|
|
23
|
+
For inquiries, contact: contact@connekz.com
|
|
24
|
+
|
|
25
|
+
By using this software, you agree to these terms.
|
package/README.md
ADDED
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
# Connekz Agent
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
Human-like AI agent for seamless integration into websites, apps, and automations. This npm package allows developers to embed the Connekz agent as a customer assistant, task runner, and more.
|
|
6
|
+
|
|
7
|
+
## Description
|
|
8
|
+
|
|
9
|
+
Connekz Agent is part of the Connekz developer toolkit, enabling AI-driven interactions in your projects. It supports natural conversations, built-in tools for tasks like bookings and website navigation, and easy integration via npm.
|
|
10
|
+
|
|
11
|
+
- **Key Capabilities**:
|
|
12
|
+
- Customer support via chat or voice-like interactions.
|
|
13
|
+
- Task automation: Handle bookings, navigate sites, run custom actions.
|
|
14
|
+
- Compatible with web, mobile, and backend setups.
|
|
15
|
+
- Stateful memory for personalized, context-aware responses.
|
|
16
|
+
- Realtime voice and text interfaces with transcription support.
|
|
17
|
+
- Tool calls for extending functionality (e.g., navigation, API integrations).
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
Install via npm:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install @connekz/chat
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
Import and initialize the agent in your Vue.js project (compatible with Vue 3). The package provides headless APIs for socket and agent management, plus mountable components for UI elements.
|
|
29
|
+
|
|
30
|
+
## Initialization Example
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import init, { type ConnekzInstance, type ConnekzAgentStatus, type ConnekzToolCallPayload } from '@connekz/chat';
|
|
34
|
+
|
|
35
|
+
const connekzInstance: ConnekzInstance = init({
|
|
36
|
+
clientId: 'your-client-id', // Required
|
|
37
|
+
clientSecret: 'your-client-secret', // Required
|
|
38
|
+
userIdentity: 'optional-user-id', // (optional: Will be generated if not provided. This helps to identify users across multiple sessions.)
|
|
39
|
+
aiSphere: { // Optional: Mount AI visualization sphere
|
|
40
|
+
mountElementId: 'ai-sphere-container',
|
|
41
|
+
themeColor: '#your-color', // Hex color code
|
|
42
|
+
},
|
|
43
|
+
transcription: { // Optional: Mount transcription display
|
|
44
|
+
mountElementId: 'transcript-container',
|
|
45
|
+
},
|
|
46
|
+
chatWindow: { // Optional: Mount full chat window
|
|
47
|
+
mountElementId: 'chat-window-container',
|
|
48
|
+
disableTalkMode: false, // Optional
|
|
49
|
+
disableChatMode: false, // Optional
|
|
50
|
+
},
|
|
51
|
+
connekzControls: { // Optional: Mount AI controls UI
|
|
52
|
+
mountElementId: 'controls-container',
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// Access APIs
|
|
57
|
+
const { connekzSocket, connekzAgent, unmount } = connekzInstance;
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Unmounting Call
|
|
61
|
+
```typescript
|
|
62
|
+
connekzInstance.unmount()
|
|
63
|
+
```
|
|
64
|
+
to clean up resources and unmount components.
|
|
65
|
+
|
|
66
|
+
## Agent Management
|
|
67
|
+
- Start/Stop Agent:
|
|
68
|
+
````typescript
|
|
69
|
+
connekzAgent.startAgent(); // Initiates voice agent
|
|
70
|
+
connekzAgent.stopAgent(); // Stops and cleans up
|
|
71
|
+
````
|
|
72
|
+
- Manually Inject Text Message:
|
|
73
|
+
````typescript
|
|
74
|
+
connekzAgent.injectMessage('User query text');
|
|
75
|
+
````
|
|
76
|
+
- Toggle Microphone
|
|
77
|
+
````typescript
|
|
78
|
+
connekzAgent.toggleMic();
|
|
79
|
+
````
|
|
80
|
+
- Testing Helpers (for development):
|
|
81
|
+
````typescript
|
|
82
|
+
connekzAgent.startCaptureTest(); // Start audio capture test
|
|
83
|
+
connekzAgent.stopCaptureTest(); // Stop audio capture test
|
|
84
|
+
connekzAgent.playCapturedAudio(); // Playback captured audio test
|
|
85
|
+
````
|
|
86
|
+
|
|
87
|
+
## Subscriptions
|
|
88
|
+
Subscribe to events for realtime updates:
|
|
89
|
+
````typescript
|
|
90
|
+
// Agent Subscriptions
|
|
91
|
+
const unsubStatus = connekzAgent.subscribe.onAgentStatusChange((status: ConnekzAgentStatus) => {
|
|
92
|
+
console.log('Agent status:', status);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
const unsubMic = connekzAgent.subscribe.onMicStatusChange((status: 'active' | 'muted') => {
|
|
96
|
+
console.log('Mic status:', status);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
const unsubUserWave = connekzAgent.subscribe.onUserWaveformUpdate((volume: number) => {
|
|
100
|
+
console.log('User volume:', volume);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
const unsubAgentWave = connekzAgent.subscribe.onAgentWaveformUpdate((volume: number) => {
|
|
104
|
+
console.log('Agent volume:', volume);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
const unsubTranscript = connekzAgent.subscribe.onTranscriptUpdate((transcript: readonly ConnekzConversation[]) => {
|
|
108
|
+
console.log('Transcript:', transcript);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Tool Call Handling
|
|
112
|
+
const unsubTool = connekzAgent.subscribe.onToolCall(async (tool: ConnekzToolCallPayload): Promise<string> => {
|
|
113
|
+
console.log('Tool call:', tool.name, tool.arguments);
|
|
114
|
+
// Execute tool logic
|
|
115
|
+
if (tool.name === 'your-tool') {
|
|
116
|
+
// Process arguments and return result as string
|
|
117
|
+
return 'Success: Action completed.';
|
|
118
|
+
}
|
|
119
|
+
return 'Error: Unknown tool.';
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// Unsubscribe when done
|
|
123
|
+
unsubStatus();
|
|
124
|
+
unsubTool(); // etc.
|
|
125
|
+
````
|
|
126
|
+
|
|
127
|
+
## Socket Management
|
|
128
|
+
Socket is automatically managed with agent start/stop. The following methods available for manual control:
|
|
129
|
+
````typescript
|
|
130
|
+
connekzSocket.connect(); // Force optional
|
|
131
|
+
connekzSocket.disconnect();
|
|
132
|
+
connekzSocket.cleanup(); // Remove listeners
|
|
133
|
+
````
|
|
134
|
+
|
|
135
|
+
## Integration Tips
|
|
136
|
+
- Frontend Embedding: Mount built-in UI or use headless APIs to integrate into existing apps.
|
|
137
|
+
- Backend/Automations: Use headless APIs for server-side task running or integrations.
|
|
138
|
+
- Custom Tools: Subscribe to onToolCall for handling AI-triggered actions (e.g., site navigation, API calls). Ensure the tools are defined in the connekz instance Memory & Tools section on the developer portal.
|
|
139
|
+
- Error Handling: Monitor agent status for 'ERROR' or 'DISCONNECTED' and also your app console logs.
|
|
140
|
+
- Privacy/Security: Provide clientId/secret securely; userIdentity for isolated sessions.
|
|
141
|
+
|
|
142
|
+
## Examples
|
|
143
|
+
### Basic Voice Agent on a React website
|
|
144
|
+
```jsx
|
|
145
|
+
import React, { useEffect, useState } from 'react';
|
|
146
|
+
import init from '@connekz/chat';
|
|
147
|
+
|
|
148
|
+
function App() {
|
|
149
|
+
const [instance, setInstance] = useState(null);
|
|
150
|
+
const [isActive, setIsActive] = useState(false);
|
|
151
|
+
|
|
152
|
+
useEffect(() => {
|
|
153
|
+
const connekz = init({
|
|
154
|
+
clientId: 'your-client-id',
|
|
155
|
+
clientSecret: 'your-client-secret',
|
|
156
|
+
chatWindow: { mountElementId: 'chat-window-container' }, // This will mount a full chat window (optional)
|
|
157
|
+
// Mount Modules
|
|
158
|
+
// aiSphere: { mountElementId: 'ai-sphere-container' }, // This will mount the AI visualization sphere (optional)
|
|
159
|
+
// transcription: { mountElementId: 'transcript-container' }, // This will mount the transcription display (optional)
|
|
160
|
+
});
|
|
161
|
+
setInstance(connekz);
|
|
162
|
+
|
|
163
|
+
const unsubStatus = connekz.connekzAgent.subscribe.onAgentStatusChange((status) => {
|
|
164
|
+
setIsActive(status !== 'STOPPED');
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
const unsubTool = connekz.connekzAgent.subscribe.onToolCall(async (tool) => {
|
|
168
|
+
console.log('Tool call:', tool);
|
|
169
|
+
// Handle tool logic
|
|
170
|
+
return 'Result string';
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
return () => {
|
|
174
|
+
unsubStatus();
|
|
175
|
+
unsubTool();
|
|
176
|
+
connekz.unmount();
|
|
177
|
+
};
|
|
178
|
+
}, []);
|
|
179
|
+
|
|
180
|
+
const toggleAgent = () => {
|
|
181
|
+
if (isActive) {
|
|
182
|
+
instance.connekzAgent.stopAgent();
|
|
183
|
+
} else {
|
|
184
|
+
instance.connekzAgent.startAgent();
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
return (
|
|
189
|
+
<div>
|
|
190
|
+
<div id="chat-window-container"></div>
|
|
191
|
+
{/*<div id="ai-sphere-container"></div>*/}
|
|
192
|
+
{/*<div id="transcript-container"></div>*/}
|
|
193
|
+
<button onClick={toggleAgent}>
|
|
194
|
+
{isActive ? 'Stop' : 'Start'} Agent
|
|
195
|
+
</button>
|
|
196
|
+
</div>
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export default App;
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Basic Voice Agent on a Vue Website
|
|
204
|
+
```vue
|
|
205
|
+
<template>
|
|
206
|
+
<div>
|
|
207
|
+
<div id="chat-window-container"></div>
|
|
208
|
+
<!-- <div id="ai-sphere-container"></div>-->
|
|
209
|
+
<!-- <div id="transcript-container"></div>-->
|
|
210
|
+
<button @click="toggleAgent">{{ isActive ? 'Stop' : 'Start' }} Agent</button>
|
|
211
|
+
</div>
|
|
212
|
+
</template>
|
|
213
|
+
|
|
214
|
+
<script setup>
|
|
215
|
+
import { ref, onMounted } from 'vue';
|
|
216
|
+
import init from '@connekz/chat';
|
|
217
|
+
|
|
218
|
+
const instance = ref(null);
|
|
219
|
+
const isActive = ref(false);
|
|
220
|
+
|
|
221
|
+
onMounted(() => {
|
|
222
|
+
instance.value = init({
|
|
223
|
+
clientId: 'your-client-id',
|
|
224
|
+
clientSecret: 'your-client-secret',
|
|
225
|
+
chatWindow: { mountElementId: 'chat-window-container' }, // This will mount a full chat window (optional)
|
|
226
|
+
// Mount Modules
|
|
227
|
+
// aiSphere: { mountElementId: 'ai-sphere-container' }, // This will mount the AI visualization sphere (optional)
|
|
228
|
+
// transcription: { mountElementId: 'transcript-container' }, // This will mount the transcription display (optional)
|
|
229
|
+
});
|
|
230
|
+
instance.value.connekzAgent.subscribe.onAgentStatusChange(status => {
|
|
231
|
+
isActive.value = status !== 'STOPPED';
|
|
232
|
+
});
|
|
233
|
+
instance.value.connekzAgent.subscribe.onToolCall(async tool => {
|
|
234
|
+
// Handle tool
|
|
235
|
+
return 'Result';
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
const toggleAgent = () => {
|
|
240
|
+
if (isActive.value) {
|
|
241
|
+
instance.value.connekzAgent.stopAgent();
|
|
242
|
+
} else {
|
|
243
|
+
instance.value.connekzAgent.startAgent();
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
</script>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Plain JavaScript Example
|
|
250
|
+
```javascript
|
|
251
|
+
// Initialize in a script tag or main.js
|
|
252
|
+
import init from '@connekz/chat';
|
|
253
|
+
|
|
254
|
+
const connekzInstance = init({
|
|
255
|
+
clientId: 'your-client-id',
|
|
256
|
+
clientSecret: 'your-client-secret',
|
|
257
|
+
chatWindow: { mountElementId: 'chat-window-container' }, // This will mount a full chat window (optional)
|
|
258
|
+
// Mount Modules
|
|
259
|
+
// aiSphere: { mountElementId: 'ai-sphere-container' }, // This will mount the AI visualization sphere (optional)
|
|
260
|
+
// transcription: { mountElementId: 'transcript-container' }, // This will mount the transcription display (optional)
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// Subscriptions
|
|
264
|
+
const unsubStatus = connekzInstance.connekzAgent.subscribe.onAgentStatusChange((status) => {
|
|
265
|
+
console.log('Agent status:', status);
|
|
266
|
+
// Update UI, e.g., button text
|
|
267
|
+
const button = document.getElementById('toggle-button');
|
|
268
|
+
button.textContent = status !== 'STOPPED' ? 'Stop Agent' : 'Start Agent';
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
const unsubTool = connekzInstance.connekzAgent.subscribe.onToolCall(async (tool) => {
|
|
272
|
+
console.log('Tool call:', tool);
|
|
273
|
+
// Handle tool logic
|
|
274
|
+
return 'Result string';
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
// Toggle agent on button click
|
|
278
|
+
document.getElementById('toggle-button').addEventListener('click', () => {
|
|
279
|
+
const isActive = connekzInstance.connekzAgent.subscribe.onAgentStatusChange(); // Get current status if needed
|
|
280
|
+
if (isActive !== 'STOPPED') {
|
|
281
|
+
connekzInstance.connekzAgent.stopAgent();
|
|
282
|
+
} else {
|
|
283
|
+
connekzInstance.connekzAgent.startAgent();
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
// Cleanup on unload
|
|
288
|
+
window.addEventListener('beforeunload', () => {
|
|
289
|
+
unsubStatus();
|
|
290
|
+
unsubTool();
|
|
291
|
+
connekzInstance.unmount();
|
|
292
|
+
});
|
|
293
|
+
```
|
|
294
|
+
```html
|
|
295
|
+
<!-- HTML Structure -->
|
|
296
|
+
<div id="chat-window-container"></div>
|
|
297
|
+
<!--<div id="ai-sphere-container"></div>-->
|
|
298
|
+
<!--<div id="transcript-container"></div>-->
|
|
299
|
+
<button id="toggle-button">Start Agent</button>
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
### Tool Call Payload:
|
|
304
|
+
````typescript
|
|
305
|
+
{
|
|
306
|
+
name: string;
|
|
307
|
+
arguments: Record<string, any>;
|
|
308
|
+
}
|
|
309
|
+
````
|
|
310
|
+
|
|
311
|
+
### Tool Call Handler Example
|
|
312
|
+
````typescript
|
|
313
|
+
connekzInstance.value.connekzAgent.subscribe.onToolCall(handleToolCall);
|
|
314
|
+
|
|
315
|
+
const acceptedPaths = ['/home', '/about', '/contact'];
|
|
316
|
+
async function handleToolCall(tool: ConnekzToolCallPayload): Promise<string> {
|
|
317
|
+
switch (tool.name) {
|
|
318
|
+
case 'navigate_to': {
|
|
319
|
+
const path = (tool.arguments)?.path || null;
|
|
320
|
+
if (path && acceptedPaths.includes(path)) {
|
|
321
|
+
router.push(path);
|
|
322
|
+
return `Navigation Success. Now user on ${path}.`;
|
|
323
|
+
} else {
|
|
324
|
+
return !path ? 'Navigation Error: Destination path parameter must be provided to navigate.' : `Navigation Error: Path must be one of the following enums ${acceptedPaths.join(', ')}`
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
default:
|
|
328
|
+
return 'Error: Unknown tool name.';
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
````
|
|
332
|
+
|
|
333
|
+
### Tool Call Response:
|
|
334
|
+
Always return a string (plain text or JSON.stringify for structured data).
|
|
335
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--connekz-primary: #008fd7;--connekz-secondary: #00D0EF;--connekz-content: #404040}@media (prefers-color-scheme: dark){:root{--connekz-primary: #008fd7;--connekz-secondary: #00D0EF;--connekz-content: #f8f8f8}}.connekz_glass-panel{background:linear-gradient(to bottom,#051b270d,#18364c78);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);box-shadow:0 4px 12px #0003}.connekz_glass-panel.selectable{cursor:pointer}.connekz_glass-panel.selectable:hover{background:linear-gradient(to bottom,#051b271a,#18364c7a);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);box-shadow:0 6px 16px #00000026;transform:scale(1.02);transition:all .2s ease}.connekz_clickable-scale{cursor:pointer;transition:transform .2s ease;scale:1}.connekz_clickable-scale:hover{scale:1.02}.connekz_btn-ghost:hover{background-color:transparent;box-shadow:none;outline:none;border:none}.connekz_btn{border:unset;transition:all .2s ease;cursor:pointer;color:var(--connekz-content)}.connekz_btn:hover,.connekz_btn.--active{color:var(--connekz-primary)}.connekz_btn:disabled{cursor:not-allowed;opacity:.6}.connekz_btn:disabled:hover{color:var(--connekz-content)}.connekz_btn.connekz_btn-ghost{background:transparent;border:none}.connekz_rounded{border-radius:50%}.connekz_color-primary{color:var(--connekz-primary)}.connekz_color-secondary{color:var(--connekz-secondary)}.connekz_bg-primary{background-color:var(--connekz-primary)}.connekz_bg-secondary{background-color:var(--connekz-secondary)}svg[data-v-8994aa1e]{display:inline-block}svg[data-v-8994aa1e] *{fill:currentColor}.connekz_switch[data-v-a7848b10]{width:fit-content;border-radius:10px;padding:4px 12px;display:flex;gap:8px;justify-content:space-between}.dot-animation-wrapper .dot[data-v-0d55de5f]{font-size:18px;opacity:0;animation:fadeInOut-0d55de5f 1.5s infinite}.dot-animation-wrapper .dot[data-v-0d55de5f]:nth-child(1){animation-delay:0s}.dot-animation-wrapper .dot[data-v-0d55de5f]:nth-child(2){animation-delay:.3s}.dot-animation-wrapper .dot[data-v-0d55de5f]:nth-child(3){animation-delay:.6s}@keyframes fadeInOut-0d55de5f{0%,to{opacity:0}50%{opacity:1}}.text-message-input[data-v-5d23ab16]{padding-left:8px}.text-message-input .textarea[data-v-5d23ab16]{width:100%;max-height:4.5rem;line-height:22px;font-size:16px;font-family:Inter,sans-serif;color:var(--connekz-content);padding:0 8px 0 2px;min-height:unset;background-color:transparent;outline:none;resize:none;border:none;overflow-x:hidden;overflow-y:auto;height:fit-content;box-shadow:unset}.text-message-input .textarea[data-v-5d23ab16]:hover,.text-message-input .textarea[data-v-5d23ab16]:focus,.text-message-input .textarea[data-v-5d23ab16]:active{background-color:transparent;outline:none;border:none;box-shadow:unset}.emoji-mart,.emoji-mart *{box-sizing:border-box;line-height:1.15}.emoji-mart{font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-size:16px;display:flex;flex-direction:column;height:420px;color:#222427;border:1px solid #d9d9d9;border-radius:5px;background:#fff}.emoji-mart-emoji{padding:6px;position:relative;display:inline-block;font-size:0;border:none;background:none;box-shadow:none}.emoji-mart-emoji span{display:inline-block}.emoji-mart-preview-emoji .emoji-mart-emoji span{width:38px;height:38px;font-size:32px}.emoji-type-native{font-family:"Segoe UI Emoji",Segoe UI Symbol,Segoe UI,"Apple Color Emoji",Twemoji Mozilla,"Noto Color Emoji",EmojiOne Color,"Android Emoji";word-break:keep-all}.emoji-type-image{background-size:6100%}.emoji-type-image.emoji-set-apple{background-image:url(https://unpkg.com/emoji-datasource-apple@15.0.1/img/apple/sheets-256/64.png)}.emoji-type-image.emoji-set-facebook{background-image:url(https://unpkg.com/emoji-datasource-facebook@15.0.1/img/facebook/sheets-256/64.png)}.emoji-type-image.emoji-set-google{background-image:url(https://unpkg.com/emoji-datasource-google@15.0.1/img/google/sheets-256/64.png)}.emoji-type-image.emoji-set-twitter{background-image:url(https://unpkg.com/emoji-datasource-twitter@15.0.1/img/twitter/sheets-256/64.png)}.emoji-mart-bar{border:0 solid #d9d9d9}.emoji-mart-bar:first-child{border-bottom-width:1px;border-top-left-radius:5px;border-top-right-radius:5px}.emoji-mart-bar:last-child{border-top-width:1px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.emoji-mart-scroll{position:relative;overflow-y:scroll;flex:1;padding:0 6px 6px;z-index:0;will-change:transform;-webkit-overflow-scrolling:touch}.emoji-mart-anchors{display:flex;flex-direction:row;justify-content:space-between;padding:0 6px;color:#858585;line-height:0}.emoji-mart-anchor{position:relative;display:block;flex:1 1 auto;text-align:center;padding:12px 4px;overflow:hidden;transition:color .1s ease-out;border:none;background:none;box-shadow:none}.emoji-mart-anchor:hover,.emoji-mart-anchor-selected{color:#464646}.emoji-mart-anchor-selected .emoji-mart-anchor-bar{bottom:0}.emoji-mart-anchor-bar{position:absolute;bottom:-3px;left:0;width:100%;height:3px;background-color:#464646}.emoji-mart-anchors i{display:inline-block;width:100%;max-width:22px}.emoji-mart-anchors svg{fill:currentColor;max-height:18px}.emoji-mart .scroller{height:250px;position:relative;flex:1;padding:0 6px 6px;z-index:0;will-change:transform;-webkit-overflow-scrolling:touch}.emoji-mart-search{margin-top:6px;padding:0 6px}.emoji-mart-search input{font-size:16px;display:block;width:100%;padding:.2em .6em;border-radius:25px;border:1px solid #d9d9d9;outline:0}.emoji-mart-search-results{height:250px;overflow-y:scroll}.emoji-mart-category{position:relative}.emoji-mart-category .emoji-mart-emoji span{z-index:1;position:relative;text-align:center;cursor:default}.emoji-mart-category .emoji-mart-emoji:hover:before,.emoji-mart-emoji-selected:before{z-index:0;content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#f4f4f4;border-radius:100%;opacity:0}.emoji-mart-category .emoji-mart-emoji:hover:before,.emoji-mart-emoji-selected:before{opacity:1}.emoji-mart-category-label{position:sticky;top:0}.emoji-mart-static .emoji-mart-category-label{z-index:2;position:relative}.emoji-mart-category-label h3{display:block;font-size:16px;width:100%;font-weight:500;padding:5px 6px;background-color:#fff;background-color:#fffffff2}.emoji-mart-emoji{position:relative;display:inline-block;font-size:0}.emoji-mart-no-results{font-size:14px;text-align:center;padding-top:70px;color:#858585}.emoji-mart-no-results .emoji-mart-category-label{display:none}.emoji-mart-no-results .emoji-mart-no-results-label{margin-top:.2em}.emoji-mart-no-results .emoji-mart-emoji:hover:before{content:none}.emoji-mart-preview{position:relative;height:70px}.emoji-mart-preview-emoji,.emoji-mart-preview-data,.emoji-mart-preview-skins{position:absolute;top:50%;transform:translateY(-50%)}.emoji-mart-preview-emoji{left:12px}.emoji-mart-preview-data{left:68px;right:12px;word-break:break-all}.emoji-mart-preview-skins{right:30px;text-align:right}.emoji-mart-preview-name{font-size:14px}.emoji-mart-preview-shortname{font-size:12px;color:#888}.emoji-mart-preview-shortname+.emoji-mart-preview-shortname,.emoji-mart-preview-shortname+.emoji-mart-preview-emoticon,.emoji-mart-preview-emoticon+.emoji-mart-preview-emoticon{margin-left:.5em}.emoji-mart-preview-emoticon{font-size:11px;color:#bbb}.emoji-mart-title span{display:inline-block;vertical-align:middle}.emoji-mart-title .emoji-mart-emoji{padding:0}.emoji-mart-title-label{color:#999a9c;font-size:21px;font-weight:300}.emoji-mart-skin-swatches{font-size:0;padding:2px 0;border:1px solid #d9d9d9;border-radius:12px;background-color:#fff}.emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch{width:16px;padding:0 2px}.emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch-selected:after{opacity:.75}.emoji-mart-skin-swatch{display:inline-block;width:0;vertical-align:middle;transition-property:width,padding;transition-duration:.125s;transition-timing-function:ease-out}.emoji-mart-skin-swatch:nth-child(1){transition-delay:0s}.emoji-mart-skin-swatch:nth-child(2){transition-delay:.03s}.emoji-mart-skin-swatch:nth-child(3){transition-delay:.06s}.emoji-mart-skin-swatch:nth-child(4){transition-delay:.09s}.emoji-mart-skin-swatch:nth-child(5){transition-delay:.12s}.emoji-mart-skin-swatch:nth-child(6){transition-delay:.15s}.emoji-mart-skin-swatch-selected{position:relative;width:16px;padding:0 2px}.emoji-mart-skin-swatch-selected:after{content:"";position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;background-color:#fff;border-radius:100%;pointer-events:none;opacity:0;transition:opacity .2s ease-out}.emoji-mart-skin{display:inline-block;width:100%;padding-top:100%;max-width:12px;border-radius:100%}.emoji-mart-skin-tone-1{background-color:#ffc93a}.emoji-mart-skin-tone-2{background-color:#fadcbc}.emoji-mart-skin-tone-3{background-color:#e0bb95}.emoji-mart-skin-tone-4{background-color:#bf8f68}.emoji-mart-skin-tone-5{background-color:#9b643d}.emoji-mart-skin-tone-6{background-color:#594539}.emoji-mart .vue-recycle-scroller{position:relative}.emoji-mart .vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.emoji-mart .vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.emoji-mart .vue-recycle-scroller.direction-horizontal{display:flex}.emoji-mart .vue-recycle-scroller__slot{flex:auto 0 0}.emoji-mart .vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.emoji-mart .vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.emoji-mart .vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.emoji-mart .vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.emoji-mart .vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.emoji-mart .vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.emoji-mart .resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.emoji-mart .resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.emoji-mart-search .hidden{display:none;visibility:hidden}.emoji-message-input .emoji-picker[data-v-e5162b25]{position:absolute;opacity:0;overflow:hidden;width:0;height:0;transform:translate(-16px,24px);transition:all .2s ease;z-index:99}.emoji-message-input .emoji-picker.--open[data-v-e5162b25]{width:338px;height:420px;transform:translate(0);opacity:1}.emoji-mart-preview,.emoji-mart-bar.emoji-mart-bar-preview,.emoji-mart-search{display:none!important}.emoji-mart.emoji-mart-static{background:linear-gradient(to bottom,#051b27cc,#18364c);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:4px;box-shadow:0 4px 12px #0003;border:1px solid rgba(255,255,255,.2);border-top:1px solid rgba(255,255,255,.1);border-bottom:2px solid rgba(255,255,255,.4);border-radius:12px}.emoji-btn-icon{margin-top:2px}.emoji-mart-anchor{color:#fff!important}.emoji-mart-category-label{background-color:transparent!important;color:#fff!important}.message-input-wrapper[data-v-08883d50]{display:flex;align-items:center;border-radius:16px;gap:0;padding:2px 4px}.message-input-wrapper>div[data-v-08883d50]:first-child{flex:1}.message-input-wrapper .message-send-button[data-v-08883d50]{display:flex;justify-content:center;align-items:center;background-color:var(--connekz-primary);color:#fff;width:32px;height:32px}.connekz-controls-container[data-v-effcc795]{width:100%;height:80px;display:flex;justify-content:space-between;gap:12px;align-items:center}.connekz-controls-container .control-btn[data-v-effcc795]{width:40px;height:40px;padding:0}.connekz-controls-container .control-btn-large[data-v-effcc795]{width:60px;height:60px}.ai-keyboard-input[data-v-effcc795]{position:absolute;right:16px;opacity:1;width:calc(100% - 88px);transition:all .2s ease-out}.ai-keyboard-input.--hidden[data-v-effcc795]{opacity:0;width:0}.connekz-message-item-wrapper[data-v-797e7322]{width:100%;display:flex}.connekz-message-item-wrapper.failed-message[data-v-797e7322]{padding-bottom:20px}.connekz-message-item-wrapper.align-right[data-v-797e7322]{justify-content:flex-end}.connekz-message-item-wrapper.align-right .message-item[data-v-797e7322]{margin-right:12px}.connekz-message-item-wrapper.align-left[data-v-797e7322]{margin-left:12px}.connekz-message-item-wrapper.last-message[data-v-797e7322]{margin-bottom:72px}.connekz-message-item-wrapper .message-item[data-v-797e7322]{border-radius:20px;margin-top:5px;margin-bottom:5px;display:inline-block;position:relative}.connekz-message-item-wrapper .message-item.yours[data-v-797e7322]{margin-right:25%}.connekz-message-item-wrapper .message-item.yours .message-bubble[data-v-797e7322]{background-color:#eee}.connekz-message-item-wrapper .message-item.yours.last[data-v-797e7322]:before{content:"";position:absolute;z-index:-1;bottom:0;left:-7px;height:20px;width:20px;background:#eee;border-bottom-right-radius:15px}.connekz-message-item-wrapper .message-item.yours.last[data-v-797e7322]:after{content:"";position:absolute;z-index:0;bottom:0;left:-10px;width:10px;height:20px;background:#fff;border-bottom-right-radius:10px}.connekz-message-item-wrapper .message-item.mine[data-v-797e7322]{color:#fff;margin-left:25%}.connekz-message-item-wrapper .message-item.mine .message-bubble[data-v-797e7322]{background:linear-gradient(to bottom,#00d0ea,#0085d1);background-attachment:fixed;color:#fff}.connekz-message-item-wrapper .message-item.mine.last[data-v-797e7322]:before{content:"";position:absolute;z-index:-1;bottom:0;right:-8px;height:20px;width:20px;background:linear-gradient(to bottom,#00d0ea,#0085d1);background-attachment:fixed;border-bottom-left-radius:15px}.connekz-message-item-wrapper .message-item.mine.last[data-v-797e7322]:after{content:"";position:absolute;z-index:0;bottom:0;right:-10px;width:10px;height:20px;background:#fff;border-bottom-left-radius:10px}.connekz-message-item-wrapper .message-item .message-bubble[data-v-797e7322]{padding:8px 15px;border-radius:20px;position:relative;z-index:1}.connekz-message-item-wrapper .message-item .message-bubble .message-at[data-v-797e7322]{width:100%;text-align:right;font-size:10px;margin-top:4px;opacity:.5}.connekz-message-item-wrapper .message-item .message-bubble .send-failed[data-v-797e7322]{position:absolute;color:red;bottom:-20px;right:12px;width:fit-content;display:flex;justify-content:flex-end;text-wrap:nowrap;cursor:pointer}.connekz-message-item-wrapper .message-item .message-bubble .send-failed[data-v-797e7322]:hover{text-decoration:underline}.bot-enter-active,.bot-leave-active{transition:opacity .3s ease,scale .6s ease}.bot-enter-from,.bot-leave-to{opacity:0;scale:0}.ai-bot-visualization{position:relative;display:flex;justify-content:center;align-items:center}.ai-bot-visualization.--disabled{opacity:.7;filter:grayscale(100%)}.ai-bot-visualization .inner-avatar{position:absolute;display:flex;justify-content:center;align-items:center;border-radius:50%}.ai-bot-visualization img.bot-image{cursor:pointer;scale:1;object-fit:cover;border-radius:50%;width:100%;height:100%}.ai-bot-visualization img.bot-image.grayscale{filter:grayscale(100%)}.ai-bot-visualization img.bot-image.--heart-beat{animation:animateHeart 1.5s infinite}.ai-bot-visualization img.bot-image.--spinning{animation-name:spin;animation-duration:6s;animation-iteration-count:infinite;animation-timing-function:ease-in-out}.ai-bot-visualization img.bot-image.--pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.ai-bot-visualization img.bot-image.--bounce{animation:bounce 1s ease infinite;transform-origin:center bottom}.ai-bot-visualization img.bot-image.--greyscale{transition:filter .5s ease-in-out;filter:grayscale(100%)}.ai-bot-visualization img.bot-image.--shake{animation:shake .82s cubic-bezier(.36,.07,.19,.97) infinite;transform:translateZ(0);backface-visibility:hidden;perspective:1000px}.ai-bot-visualization img.bot-image.--glow{animation:glow 2s ease-in-out infinite alternate;filter:drop-shadow(0 0 4px rgba(0,119,255,.7))}.ai-bot-visualization img.bot-image.--float{animation:float 3s ease-in-out infinite}.ai-bot-visualization img.bot-image.--wiggle{animation:wiggle 1s ease-in-out infinite}.ai-bot-visualization img.bot-image.--fade{animation:fade 2.5s ease-in-out infinite}.ai-bot-visualization img.bot-image.--zoom{animation:zoom 1.8s ease-in-out infinite}.ai-bot-visualization.size-2xs,.ai-bot-visualization .inner-avatar.size-2xs{width:18px;height:18px}.ai-bot-visualization.size-xs,.ai-bot-visualization .inner-avatar.size-xs{width:36px;height:36px}.ai-bot-visualization.size-sm,.ai-bot-visualization .inner-avatar.size-sm{width:42px;height:42px}.ai-bot-visualization.size-md,.ai-bot-visualization .inner-avatar.size-md{width:58px;height:58px}.ai-bot-visualization.size-lg,.ai-bot-visualization .inner-avatar.size-lg{width:72px;height:72px}.ai-bot-visualization.size-xl,.ai-bot-visualization .inner-avatar.size-xl{width:96px;height:96px}.ai-bot-visualization.size-2xl,.ai-bot-visualization .inner-avatar.size-2xl{width:120px;height:120px}.ai-bot-visualization.size-3xl,.ai-bot-visualization .inner-avatar.size-3xl{width:160px;height:160px}.ai-bot-visualization.size-4xl,.ai-bot-visualization .inner-avatar.size-4xl{width:200px;height:200px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes animateHeart{0%{transform:scale(.9)}5%{transform:scale(1.1)}10%{transform:scale(.9)}15%{transform:scale(1.2)}50%{transform:scale(.9)}to{transform:scale(.9)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(.95)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-3px,0,0)}40%,60%{transform:translate3d(3px,0,0)}}@keyframes glow{0%{filter:drop-shadow(0 0 2px rgba(0,119,255,.3))}to{filter:drop-shadow(0 0 10px rgba(0,119,255,.8))}}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-8px)}to{transform:translateY(0)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}@keyframes fade{0%,to{opacity:1}50%{opacity:.5}}@keyframes zoom{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.user-inputting-indicator .inputting-indicator-inner[data-v-bdcc33e1]{display:flex;gap:2px}.connekz-message-log[data-v-066f5474]{max-height:100%;height:100%;position:relative;overflow:hidden}.connekz-message-log .chat-messages[data-v-066f5474]{z-index:0;width:100%;max-height:100%;overflow-y:auto;overflow-x:hidden;position:relative;display:flex;flex-direction:column-reverse;align-items:flex-start}.connekz-message-log .chat-messages .connekz-inputting-indicator[data-v-066f5474]{position:absolute;bottom:12px;left:12px;z-index:1}.new-message[data-v-066f5474]{animation:slideIn-066f5474 .2s ease forwards}@keyframes slideIn-066f5474{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.connekz-transcriptions-container[data-v-4dd0de6e]{padding:12px 16px;overflow-y:auto;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 10%);mask-image:linear-gradient(to bottom,transparent 0%,black 10%);display:flex;flex-direction:column}.connekz-transcriptions-container .message-group[data-v-4dd0de6e]{display:flex;flex-direction:column;justify-content:flex-end;gap:8px;height:100%;font-size:16px;line-height:1.4;overflow:hidden}.connekz-transcriptions-container .message-group .text-primary[data-v-4dd0de6e]{color:var(--connekz-primary)}.connekz-transcriptions-container .message-group .text-right[data-v-4dd0de6e]{text-align:right}.connekz-transcriptions-container .message-group .text-left[data-v-4dd0de6e]{text-align:left}.chat-item-enter-active[data-v-4dd0de6e],.chat-item-leave-active[data-v-4dd0de6e]{transition:all .3s ease}.chat-item-enter-from[data-v-4dd0de6e],.chat-item-leave-to[data-v-4dd0de6e]{opacity:0;transform:translateY(10px)}.chat-item-enter-to[data-v-4dd0de6e],.chat-item-leave-from[data-v-4dd0de6e]{opacity:1;transform:translateY(0)}.scrollbar-hidden[data-v-4dd0de6e]::-webkit-scrollbar{display:none}.scrollbar-hidden[data-v-4dd0de6e]{-ms-overflow-style:none;scrollbar-width:none}.globe[data-v-0acd2811]{width:100%;height:100%;padding:16px;position:relative}.glow[data-v-0acd2811]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;border-radius:50%}.sphere-wrapper[data-v-0acd2811]{position:absolute;border-radius:50%;overflow:hidden;transition:opacity .3s ease;opacity:1}.sphere[data-v-0acd2811]{-webkit-user-drag:none!important;position:absolute;object-fit:cover}.connekz-window[data-v-24ea1727]{font-family:Inter,sans-serif;font-size:14px;color:var(--connekz-content);width:100%;height:100%;max-width:100%;max-height:100%;overflow:hidden}.connekz-window .connekz-loader[data-v-24ea1727]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.connekz-window .connekz-loader .skeleton[data-v-24ea1727]{width:100%;height:100%;background:var(--connekz-content);opacity:.1;animation:shimmer-24ea1727 2s infinite ease-in-out}@keyframes shimmer-24ea1727{0%,to{opacity:.1}50%{opacity:0}}.connekz-window .connekz-init-error[data-v-24ea1727]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.connekz-window .connekz-init-error span[data-v-24ea1727]{width:fit-content;height:24px;background:#ff00001a;display:flex;align-items:center;justify-content:center;padding:4px 12px;border-radius:8px;color:#f00c}.connekz-window .connekz-loaded-window[data-v-24ea1727]{width:100%;height:100%;max-width:100%;max-height:100%;overflow:hidden}.connekz-window .connekz-loaded-window .conversation-type-switcher[data-v-24ea1727]{width:100%;height:fit-content;display:flex;justify-content:center;align-items:center}.connekz-window .connekz-loaded-window .reconnecting-message-wrapper[data-v-24ea1727]{height:32px;overflow:hidden}.connekz-window .connekz-loaded-window .reconnecting-message-wrapper .reconnecting-message[data-v-24ea1727]{display:flex;width:100%;justify-content:center;align-items:center;margin-top:12px;font-style:italic;opacity:.7;color:red}.connekz-window .connekz-loaded-window .connekz-main[data-v-24ea1727]{overflow:hidden;max-height:100%;display:flex;flex-direction:row;width:200%;height:calc(100% - (78px + env(safe-area-inset-top) + env(safe-area-inset-bottom)));transition:transform .3s ease}.connekz-window .connekz-loaded-window .connekz-main .connekz-voice-wrapper[data-v-24ea1727],.connekz-window .connekz-loaded-window .connekz-main .connekz-chat-wrapper[data-v-24ea1727]{width:50%;min-width:50%;max-width:50%;max-height:100%;position:relative;overflow:hidden}.connekz-window .connekz-loaded-window .connekz-main .connekz-voice-wrapper[data-v-24ea1727]{display:flex;flex-direction:column;height:100%;overflow:hidden}.connekz-window .connekz-loaded-window .connekz-main .connekz-voice-wrapper .connekz-sphere-wrapper[data-v-24ea1727]{width:100%;padding:12px 0;height:fit-content;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-shrink:0}.connekz-window .connekz-loaded-window .connekz-main .connekz-voice-wrapper .connekz-sphere-wrapper .connekz-sphere[data-v-24ea1727]{width:72px;height:72px}.connekz-window .connekz-loaded-window .connekz-main .connekz-voice-wrapper .connekz-status-wrapper[data-v-24ea1727]{margin-top:8px;width:100%;height:32px;display:flex;justify-content:center;align-items:center;flex-shrink:0}.connekz-window .connekz-loaded-window .connekz-main .connekz-voice-wrapper .connekz-status-wrapper .connekz-status[data-v-24ea1727]{opacity:.7;display:flex;justify-content:center;align-items:center}.connekz-window .connekz-loaded-window .connekz-main .connekz-voice-wrapper .connekz-transcriptions[data-v-24ea1727]{flex:1;overflow-y:auto;overflow-x:hidden}.connekz-window .connekz-loaded-window .connekz-main .connekz-voice-wrapper .connekz-controls-wrapper[data-v-24ea1727]{max-width:100%;display:flex;justify-content:center;align-items:center;margin-top:12px;padding:0 12px;flex-shrink:0}.connekz-window .connekz-loaded-window .connekz-main .connekz-chat-wrapper[data-v-24ea1727]{display:flex;flex-direction:column;height:100%}.connekz-window .connekz-loaded-window .connekz-main .connekz-chat-wrapper .message-log[data-v-24ea1727]{flex:1;overflow-y:auto;overflow-x:hidden}.connekz-window .connekz-loaded-window .connekz-main .connekz-chat-wrapper .message-inputs[data-v-24ea1727]{flex-shrink:0}
|