@leadbot/components 2.21.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.
@@ -0,0 +1,2723 @@
1
+ @charset "UTF-8";
2
+ @layer leadbot {
3
+ :root {
4
+ /* Typography */
5
+ --leadbot-font-size: 14px;
6
+ --leadbot-font-size-sm: 13px;
7
+ --leadbot-font-size-xs: 12px;
8
+ --leadbot-font-size-lg: 18px;
9
+ /* Shadows */
10
+ --leadbot-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.08);
11
+ --leadbot-shadow-md: 0 2px 4px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.1);
12
+ /* Border & gradient */
13
+ --leadbot-border-light: 1px solid rgba(0, 0, 0, 0.12);
14
+ --leadbot-gradient-card: linear-gradient(135deg, #ffffff 0%, #f9fafb 100%);
15
+ /* Spacing */
16
+ --leadbot-spacing-card: 16px;
17
+ /* Conversation width — cards, option buttons and forms. The widget panel is
18
+ built around 320px; an embedded flow (@leadbot/components) can widen or
19
+ narrow the whole conversation by overriding this one token. */
20
+ --leadbot-flow-max-width: 320px;
21
+ /* Border radius */
22
+ --leadbot-radius-sm: 6px;
23
+ --leadbot-radius-md: 8px;
24
+ --leadbot-radius-card: 12px;
25
+ --leadbot-radius-pill: 20px;
26
+ /* Surfaces */
27
+ --leadbot-color-surface: #ffffff;
28
+ --leadbot-color-surface-alt: #f9fafb;
29
+ --leadbot-color-surface-sunken: #f3f4f6;
30
+ --leadbot-color-surface-tray: #f8f9fa;
31
+ --leadbot-color-surface-tray-alt: #f0f0f0;
32
+ /* Borders */
33
+ --leadbot-color-border: #e5e7eb;
34
+ --leadbot-color-border-input: #ddd;
35
+ --leadbot-color-border-field: #e0e3e8;
36
+ --leadbot-color-border-checkbox: #d1d5db;
37
+ /* Text */
38
+ --leadbot-color-text: #1f2937;
39
+ --leadbot-color-text-strong: #374151;
40
+ --leadbot-color-text-body: #4b5563;
41
+ --leadbot-color-text-muted: #6b7280;
42
+ --leadbot-color-text-subtle: #9ca3af;
43
+ --leadbot-color-on-primary: #ffffff;
44
+ --leadbot-color-logo: #111827;
45
+ --leadbot-color-disabled: #ccc;
46
+ /* Feedback */
47
+ --leadbot-color-success: #059669;
48
+ --leadbot-color-success-text: #065f46;
49
+ --leadbot-color-online: #34d399;
50
+ --leadbot-color-error: #ef4444;
51
+ --leadbot-color-error-bg: #fee;
52
+ --leadbot-color-error-fg: #c33;
53
+ --leadbot-color-error-border: #fcc;
54
+ /* Focus rings — the sole focus indicator on text controls, which the global
55
+ a11y outline skips. Keep them clearly visible for keyboard users. */
56
+ --leadbot-focus-ring: 0 0 0 3px color-mix(in srgb, var(--leadbot-primary) 15%, transparent);
57
+ --leadbot-focus-ring-soft: 0 0 0 3px color-mix(in srgb, var(--leadbot-primary) 12%, transparent);
58
+ /* WhatsApp: widget chrome */
59
+ --leadbot-whatsapp-green: #42d66b;
60
+ --leadbot-whatsapp-green-hover: #35c95d;
61
+ --leadbot-whatsapp-on-green: #111b21;
62
+ --leadbot-whatsapp-wallpaper: #e5ddd5;
63
+ --leadbot-whatsapp-wallpaper-end: #d9d0c4;
64
+ --leadbot-whatsapp-bubble: #ffffff;
65
+ --leadbot-whatsapp-bubble-text: #303030;
66
+ --leadbot-whatsapp-tick: #4fc3f7;
67
+ /* WhatsApp: official brand colours, used where the UI mimics WhatsApp itself */
68
+ --leadbot-whatsapp-brand: #25d366;
69
+ --leadbot-whatsapp-brand-hover: #1fb959;
70
+ --leadbot-whatsapp-brand-dark: #128c7e;
71
+ /* Animation: durations */
72
+ --leadbot-duration-fast: 150ms;
73
+ --leadbot-duration-normal: 300ms;
74
+ --leadbot-duration-slow: 500ms;
75
+ /* Animation: easing curves */
76
+ --leadbot-ease-appear: cubic-bezier(0.16, 1, 0.3, 1);
77
+ --leadbot-ease-interactive: cubic-bezier(0.4, 0, 0.2, 1);
78
+ --leadbot-ease-loop: cubic-bezier(0.4, 0, 0.6, 1);
79
+ --leadbot-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
80
+ --leadbot-primary: #2563eb;
81
+ --leadbot-available-height: 600px;
82
+ --leadbot-form-max-width: 360px;
83
+ --leadbot-form-max-height: var(--leadbot-available-height);
84
+ --leadbot-form-inline-padding: var(--leadbot-spacing-card);
85
+ }
86
+ [data-leadbot-theme=dark] {
87
+ /* Shadows — deeper, since the light ones vanish on dark backgrounds */
88
+ --leadbot-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.4);
89
+ --leadbot-shadow-md: 0 2px 4px rgba(0, 0, 0, 0.5), 0 4px 12px rgba(0, 0, 0, 0.5);
90
+ /* Border & gradient */
91
+ --leadbot-border-light: 1px solid rgba(255, 255, 255, 0.12);
92
+ --leadbot-gradient-card: linear-gradient(135deg, #1f2937 0%, #111827 100%);
93
+ /* Surfaces */
94
+ --leadbot-color-surface: #1f2937;
95
+ --leadbot-color-surface-alt: #111827;
96
+ --leadbot-color-surface-sunken: #111827;
97
+ --leadbot-color-surface-tray: #1a2332;
98
+ --leadbot-color-surface-tray-alt: #111827;
99
+ /* Borders */
100
+ --leadbot-color-border: #374151;
101
+ --leadbot-color-border-input: #4b5563;
102
+ --leadbot-color-border-field: #374151;
103
+ --leadbot-color-border-checkbox: #4b5563;
104
+ /* Text */
105
+ --leadbot-color-text: #f9fafb;
106
+ --leadbot-color-text-strong: #e5e7eb;
107
+ --leadbot-color-text-body: #d1d5db;
108
+ --leadbot-color-text-muted: #9ca3af;
109
+ --leadbot-color-text-subtle: #6b7280;
110
+ --leadbot-color-logo: #f9fafb;
111
+ --leadbot-color-disabled: #4b5563;
112
+ /* Feedback */
113
+ --leadbot-color-success: #34d399;
114
+ --leadbot-color-success-text: #a7f3d0;
115
+ --leadbot-color-error: #f87171;
116
+ --leadbot-color-error-bg: #3b1d1d;
117
+ --leadbot-color-error-fg: #fca5a5;
118
+ --leadbot-color-error-border: #7f1d1d;
119
+ /* WhatsApp: chat backdrop and bubbles, matching WhatsApp's own dark UI */
120
+ --leadbot-whatsapp-wallpaper: #0b141a;
121
+ --leadbot-whatsapp-wallpaper-end: #0b141a;
122
+ --leadbot-whatsapp-bubble: #202c33;
123
+ --leadbot-whatsapp-bubble-text: #e9edef;
124
+ }
125
+ @media (prefers-color-scheme: dark) {
126
+ [data-leadbot-theme=auto] {
127
+ /* Shadows — deeper, since the light ones vanish on dark backgrounds */
128
+ --leadbot-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.4);
129
+ --leadbot-shadow-md: 0 2px 4px rgba(0, 0, 0, 0.5), 0 4px 12px rgba(0, 0, 0, 0.5);
130
+ /* Border & gradient */
131
+ --leadbot-border-light: 1px solid rgba(255, 255, 255, 0.12);
132
+ --leadbot-gradient-card: linear-gradient(135deg, #1f2937 0%, #111827 100%);
133
+ /* Surfaces */
134
+ --leadbot-color-surface: #1f2937;
135
+ --leadbot-color-surface-alt: #111827;
136
+ --leadbot-color-surface-sunken: #111827;
137
+ --leadbot-color-surface-tray: #1a2332;
138
+ --leadbot-color-surface-tray-alt: #111827;
139
+ /* Borders */
140
+ --leadbot-color-border: #374151;
141
+ --leadbot-color-border-input: #4b5563;
142
+ --leadbot-color-border-field: #374151;
143
+ --leadbot-color-border-checkbox: #4b5563;
144
+ /* Text */
145
+ --leadbot-color-text: #f9fafb;
146
+ --leadbot-color-text-strong: #e5e7eb;
147
+ --leadbot-color-text-body: #d1d5db;
148
+ --leadbot-color-text-muted: #9ca3af;
149
+ --leadbot-color-text-subtle: #6b7280;
150
+ --leadbot-color-logo: #f9fafb;
151
+ --leadbot-color-disabled: #4b5563;
152
+ /* Feedback */
153
+ --leadbot-color-success: #34d399;
154
+ --leadbot-color-success-text: #a7f3d0;
155
+ --leadbot-color-error: #f87171;
156
+ --leadbot-color-error-bg: #3b1d1d;
157
+ --leadbot-color-error-fg: #fca5a5;
158
+ --leadbot-color-error-border: #7f1d1d;
159
+ /* WhatsApp: chat backdrop and bubbles, matching WhatsApp's own dark UI */
160
+ --leadbot-whatsapp-wallpaper: #0b141a;
161
+ --leadbot-whatsapp-wallpaper-end: #0b141a;
162
+ --leadbot-whatsapp-bubble: #202c33;
163
+ --leadbot-whatsapp-bubble-text: #e9edef;
164
+ }
165
+ }
166
+ @keyframes spin {
167
+ from {
168
+ transform: translateY(-50%) rotate(0deg);
169
+ }
170
+ to {
171
+ transform: translateY(-50%) rotate(360deg);
172
+ }
173
+ }
174
+ @keyframes slideInError {
175
+ from {
176
+ opacity: 0;
177
+ transform: translateY(-5px);
178
+ }
179
+ to {
180
+ opacity: 1;
181
+ transform: translateY(0);
182
+ }
183
+ }
184
+ @keyframes leadbot-typing-bounce {
185
+ 0%, 80%, 100% {
186
+ transform: scale(0.8);
187
+ opacity: 0.5;
188
+ }
189
+ 40% {
190
+ transform: scale(1);
191
+ opacity: 1;
192
+ }
193
+ }
194
+ @keyframes leadbot-chatbot-open {
195
+ 0% {
196
+ opacity: 0;
197
+ transform: translateY(12px) scale(0.96);
198
+ }
199
+ 100% {
200
+ opacity: 1;
201
+ transform: translateY(0) scale(1);
202
+ }
203
+ }
204
+ .leadbot-components {
205
+ box-sizing: border-box;
206
+ color: var(--leadbot-color-text);
207
+ font-family: var(--leadbot-font-family, inherit);
208
+ font-size: var(--leadbot-font-size);
209
+ line-height: 1.5;
210
+ }
211
+ .leadbot-components *,
212
+ .leadbot-components *::before,
213
+ .leadbot-components *::after {
214
+ box-sizing: border-box;
215
+ }
216
+ .leadbot-components {
217
+ /* ==========================================================================
218
+ Form Fields
219
+ File: src/steps/base_form_step.js
220
+ Classes: leadbot-field, leadbot-field-checkbox, leadbot-submit-btn
221
+ ========================================================================== */
222
+ }
223
+ .leadbot-components .leadbot-field {
224
+ margin-bottom: 16px;
225
+ }
226
+ .leadbot-components fieldset {
227
+ border: none;
228
+ margin: 0;
229
+ padding: 0;
230
+ }
231
+ .leadbot-components .leadbot-form-shell {
232
+ display: flex;
233
+ flex: 1 1 auto;
234
+ flex-direction: column;
235
+ max-height: inherit;
236
+ min-height: 0;
237
+ overflow: hidden;
238
+ width: 100%;
239
+ }
240
+ .leadbot-components .leadbot-form-scroll {
241
+ --leadbot-form-scrollbar-width: 8px;
242
+ flex: 1 1 auto;
243
+ min-height: 0;
244
+ overflow-x: hidden;
245
+ overflow-y: auto;
246
+ padding: var(--leadbot-spacing-card) max(0px, var(--leadbot-spacing-card) - var(--leadbot-form-scrollbar-width)) 0 var(--leadbot-spacing-card);
247
+ scrollbar-color: rgba(107, 114, 128, 0.45) transparent;
248
+ scrollbar-width: thin;
249
+ -webkit-overflow-scrolling: touch;
250
+ }
251
+ .leadbot-components .leadbot-form-scroll::-webkit-scrollbar {
252
+ width: var(--leadbot-form-scrollbar-width);
253
+ }
254
+ .leadbot-components .leadbot-form-scroll::-webkit-scrollbar-track {
255
+ background: transparent;
256
+ }
257
+ .leadbot-components .leadbot-form-scroll::-webkit-scrollbar-thumb {
258
+ background: rgba(107, 114, 128, 0.4);
259
+ border-radius: 999px;
260
+ }
261
+ .leadbot-components .leadbot-form-fields {
262
+ min-width: 0;
263
+ }
264
+ .leadbot-components .leadbot-form-actions {
265
+ background: var(--leadbot-color-surface);
266
+ border-top: 1px solid rgba(0, 0, 0, 0.08);
267
+ flex: 0 0 auto;
268
+ padding: 8px var(--leadbot-spacing-card);
269
+ }
270
+ .leadbot-components .leadbot-form-complete {
271
+ padding: var(--leadbot-spacing-card);
272
+ }
273
+ .leadbot-components .leadbot-field label {
274
+ display: block;
275
+ margin-bottom: 6px;
276
+ font-weight: 500;
277
+ }
278
+ .leadbot-components .leadbot-form label {
279
+ font-size: 0.8em;
280
+ }
281
+ .leadbot-components .leadbot-required-asterisk {
282
+ color: var(--leadbot-color-error);
283
+ margin-left: 2px;
284
+ }
285
+ .leadbot-components .leadbot-field input,
286
+ .leadbot-components .leadbot-field textarea,
287
+ .leadbot-components .leadbot-field select {
288
+ width: 100%;
289
+ padding: 12px;
290
+ border: 1px solid var(--leadbot-color-border-input);
291
+ border-radius: var(--leadbot-radius-sm);
292
+ background-color: var(--leadbot-color-surface);
293
+ color: inherit;
294
+ font-size: var(--leadbot-font-size);
295
+ font-family: inherit;
296
+ box-sizing: border-box;
297
+ }
298
+ .leadbot-components .leadbot-field textarea {
299
+ resize: vertical;
300
+ }
301
+ .leadbot-components {
302
+ /* Sole focus indicator for these fields (the global a11y outline skips text
303
+ controls), so the ring must stay clearly visible for keyboard users. */
304
+ }
305
+ .leadbot-components .leadbot-field input:focus,
306
+ .leadbot-components .leadbot-field textarea:focus,
307
+ .leadbot-components .leadbot-field select:focus {
308
+ outline: none;
309
+ border-color: var(--leadbot-primary);
310
+ box-shadow: var(--leadbot-focus-ring);
311
+ }
312
+ .leadbot-components {
313
+ /* Keyed off aria-invalid so the visual state and the screen-reader state can
314
+ never drift apart — baseFormStep sets the attribute, this styles it. */
315
+ }
316
+ .leadbot-components .leadbot-field input[aria-invalid=true],
317
+ .leadbot-components .leadbot-field textarea[aria-invalid=true],
318
+ .leadbot-components .leadbot-field select[aria-invalid=true] {
319
+ border-color: var(--leadbot-color-error);
320
+ box-shadow: 0 0 0 1px var(--leadbot-color-error);
321
+ }
322
+ .leadbot-components {
323
+ /* Per-field message, from client pre-flight validation or the collector's 400. */
324
+ }
325
+ .leadbot-components .leadbot-field-error {
326
+ margin: 6px 0 0;
327
+ color: var(--leadbot-color-error-fg);
328
+ font-size: var(--leadbot-font-size-sm);
329
+ line-height: 1.4;
330
+ }
331
+ .leadbot-components {
332
+ /* Checkbox */
333
+ }
334
+ .leadbot-components .leadbot-field-checkbox {
335
+ margin-bottom: 16px;
336
+ }
337
+ .leadbot-components .leadbot-field-checkbox label {
338
+ display: flex;
339
+ align-items: flex-start;
340
+ gap: 10px;
341
+ cursor: pointer;
342
+ margin: 0;
343
+ font-weight: 400;
344
+ line-height: 1.5;
345
+ user-select: none;
346
+ }
347
+ .leadbot-components .leadbot-field-checkbox input[type=checkbox] {
348
+ appearance: none;
349
+ -webkit-appearance: none;
350
+ width: 20px;
351
+ height: 20px;
352
+ min-width: 20px;
353
+ border: 2px solid var(--leadbot-color-border-checkbox);
354
+ border-radius: var(--leadbot-radius-sm);
355
+ cursor: pointer;
356
+ margin: 2px 0 0 0;
357
+ padding: 0;
358
+ flex-shrink: 0;
359
+ pointer-events: auto !important;
360
+ position: relative;
361
+ z-index: 10;
362
+ background: var(--leadbot-color-surface);
363
+ transition: all var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
364
+ }
365
+ .leadbot-components .leadbot-field-checkbox input[type=checkbox]:hover {
366
+ border-color: var(--leadbot-primary);
367
+ }
368
+ .leadbot-components .leadbot-field-checkbox input[type=checkbox]:checked {
369
+ background: var(--leadbot-primary);
370
+ border-color: var(--leadbot-primary);
371
+ }
372
+ .leadbot-components .leadbot-field-checkbox input[type=checkbox]:checked::after {
373
+ content: "";
374
+ position: absolute;
375
+ left: 5px;
376
+ top: 2px;
377
+ width: 5px;
378
+ height: 9px;
379
+ border: solid var(--leadbot-color-on-primary);
380
+ border-width: 0 2px 2px 0;
381
+ transform: rotate(45deg);
382
+ }
383
+ .leadbot-components .leadbot-field-checkbox input[type=checkbox]:focus {
384
+ outline: none;
385
+ box-shadow: var(--leadbot-focus-ring);
386
+ }
387
+ .leadbot-components {
388
+ /* Checklist and radiolist */
389
+ }
390
+ .leadbot-components .leadbot-field-list .leadbot-field-list-label {
391
+ display: block;
392
+ margin: 0 0 6px;
393
+ padding: 0;
394
+ font-weight: 500;
395
+ font-size: 0.8em;
396
+ }
397
+ .leadbot-components .leadbot-field-list legend.leadbot-field-list-label {
398
+ width: 100%;
399
+ }
400
+ .leadbot-components .leadbot-field-options {
401
+ display: flex;
402
+ flex-direction: column;
403
+ gap: 8px;
404
+ }
405
+ .leadbot-components .leadbot-field .leadbot-field-option {
406
+ display: flex;
407
+ align-items: center;
408
+ gap: 12px;
409
+ margin: 0;
410
+ font-weight: 400;
411
+ cursor: pointer;
412
+ }
413
+ .leadbot-components .leadbot-field .leadbot-field-option span {
414
+ display: inline-block;
415
+ }
416
+ .leadbot-components .leadbot-field-list input[type=checkbox],
417
+ .leadbot-components .leadbot-field-list input[type=radio] {
418
+ width: auto;
419
+ margin: 0;
420
+ padding: 0;
421
+ flex-shrink: 0;
422
+ }
423
+ .leadbot-components {
424
+ /* Submit Button */
425
+ }
426
+ .leadbot-components .leadbot-submit-btn {
427
+ background: var(--leadbot-primary);
428
+ color: var(--leadbot-color-on-primary);
429
+ border: none;
430
+ padding: 12px 24px;
431
+ border-radius: var(--leadbot-radius-md);
432
+ cursor: pointer;
433
+ font-size: var(--leadbot-font-size);
434
+ width: 100%;
435
+ transition: all var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
436
+ }
437
+ .leadbot-components .leadbot-submit-btn:hover {
438
+ background-color: color-mix(in srgb, var(--leadbot-primary) 80%, black);
439
+ transform: translateY(-1px);
440
+ }
441
+ .leadbot-components .leadbot-submit-btn:active {
442
+ transform: scale(0.98);
443
+ }
444
+ .leadbot-components .leadbot-submit-btn:disabled {
445
+ cursor: not-allowed;
446
+ opacity: 0.7;
447
+ }
448
+ .leadbot-components .leadbot-submit-btn.leadbot-loading {
449
+ position: relative;
450
+ }
451
+ .leadbot-components .leadbot-submit-btn.leadbot-loading::after {
452
+ content: "";
453
+ position: absolute;
454
+ right: 12px;
455
+ top: 50%;
456
+ transform: translateY(-50%);
457
+ width: 12px;
458
+ height: 12px;
459
+ border: 2px solid transparent;
460
+ border-top: 2px solid currentColor;
461
+ border-radius: 50%;
462
+ animation: spin 1s linear infinite;
463
+ }
464
+ .leadbot-components {
465
+ /* Form Messages */
466
+ }
467
+ .leadbot-components .leadbot-form-error {
468
+ background: var(--leadbot-color-error-bg);
469
+ color: var(--leadbot-color-error-fg);
470
+ padding: 8px 12px;
471
+ border-radius: var(--leadbot-radius-sm);
472
+ font-size: var(--leadbot-font-size-sm);
473
+ margin-bottom: 12px;
474
+ border: 1px solid var(--leadbot-color-error-border);
475
+ animation: slideInError var(--leadbot-duration-normal) var(--leadbot-ease-appear) backwards;
476
+ }
477
+ .leadbot-components .leadbot-form-title {
478
+ font-size: var(--leadbot-font-size-lg);
479
+ font-weight: 700;
480
+ margin-bottom: 16px;
481
+ }
482
+ .leadbot-components .leadbot-success-message {
483
+ color: var(--leadbot-color-success);
484
+ font-size: var(--leadbot-font-size);
485
+ font-weight: 500;
486
+ line-height: 1.5;
487
+ padding: 6px 16px;
488
+ margin: 0;
489
+ text-align: center;
490
+ display: flex;
491
+ align-items: center;
492
+ justify-content: center;
493
+ gap: 8px;
494
+ width: 100%;
495
+ box-sizing: border-box;
496
+ }
497
+ .leadbot-components .leadbot-success-message p {
498
+ margin: 0;
499
+ }
500
+ .leadbot-components .leadbot-success-message::before {
501
+ content: "✓";
502
+ display: inline-flex;
503
+ align-items: center;
504
+ justify-content: center;
505
+ width: 20px;
506
+ height: 20px;
507
+ background: var(--leadbot-color-success);
508
+ color: var(--leadbot-color-on-primary);
509
+ border-radius: 50%;
510
+ font-size: var(--leadbot-font-size-xs);
511
+ font-weight: bold;
512
+ flex-shrink: 0;
513
+ }
514
+ .leadbot-components {
515
+ /* ==========================================================================
516
+ Chatbot Interface
517
+ File: src/steps/chatbotStep.tsx
518
+ Clean, minimal chat UI inspired by DigitalOcean's Docs Agent.
519
+ ========================================================================== */
520
+ }
521
+ .leadbot-components .leadbot-chatbot-interface {
522
+ background: var(--leadbot-color-surface);
523
+ border-radius: var(--leadbot-radius-card);
524
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.04);
525
+ max-width: 360px;
526
+ max-height: max(0px, var(--leadbot-available-height));
527
+ min-width: 360px;
528
+ min-height: 0;
529
+ overflow: hidden;
530
+ margin-bottom: 8px;
531
+ display: flex;
532
+ flex-direction: column;
533
+ animation: leadbot-chatbot-open var(--leadbot-duration-normal) var(--leadbot-ease-appear) backwards;
534
+ }
535
+ .leadbot-components {
536
+ /* ---- Header ---- */
537
+ }
538
+ .leadbot-components .leadbot-chatbot-header {
539
+ background: linear-gradient(135deg, var(--leadbot-primary) 0%, color-mix(in srgb, var(--leadbot-primary) 82%, black) 100%);
540
+ color: var(--leadbot-color-on-primary);
541
+ padding: 14px 16px;
542
+ display: flex;
543
+ align-items: center;
544
+ gap: 10px;
545
+ position: relative;
546
+ flex-shrink: 0;
547
+ }
548
+ .leadbot-components .leadbot-chatbot-header-avatar,
549
+ .leadbot-components .leadbot-chatbot-avatar {
550
+ width: 34px;
551
+ height: 34px;
552
+ border-radius: 50%;
553
+ overflow: hidden;
554
+ flex-shrink: 0;
555
+ background: rgba(255, 255, 255, 0.2);
556
+ }
557
+ .leadbot-components .leadbot-chatbot-header-avatar img,
558
+ .leadbot-components .leadbot-chatbot-avatar img {
559
+ width: 100%;
560
+ height: 100%;
561
+ object-fit: cover;
562
+ }
563
+ .leadbot-components .leadbot-chatbot-header-avatar .leadbot-avatar-fallback {
564
+ color: var(--leadbot-primary);
565
+ }
566
+ .leadbot-components .leadbot-chatbot-header-info {
567
+ display: flex;
568
+ flex-direction: column;
569
+ gap: 1px;
570
+ flex: 1;
571
+ min-width: 0;
572
+ }
573
+ .leadbot-components .leadbot-chatbot-title {
574
+ font-weight: 600;
575
+ font-size: var(--leadbot-font-size);
576
+ line-height: 1.2;
577
+ white-space: nowrap;
578
+ overflow: hidden;
579
+ text-overflow: ellipsis;
580
+ }
581
+ .leadbot-components .leadbot-chatbot-status {
582
+ display: flex;
583
+ align-items: center;
584
+ gap: 5px;
585
+ font-size: var(--leadbot-font-size-xs);
586
+ opacity: 0.85;
587
+ }
588
+ .leadbot-components .leadbot-chatbot-online-dot {
589
+ width: 7px;
590
+ height: 7px;
591
+ background: var(--leadbot-color-online);
592
+ border-radius: 50%;
593
+ flex-shrink: 0;
594
+ }
595
+ .leadbot-components {
596
+ /* ---- Messages area ---- */
597
+ }
598
+ .leadbot-components .leadbot-chatbot-messages {
599
+ min-height: 0;
600
+ max-height: none;
601
+ overflow-y: auto;
602
+ padding: 16px;
603
+ display: flex;
604
+ flex-direction: column;
605
+ gap: 10px;
606
+ flex: 1 1 360px;
607
+ }
608
+ .leadbot-components {
609
+ /* ---- Message bubbles ---- */
610
+ }
611
+ .leadbot-components .leadbot-chatbot-message {
612
+ max-width: 88%;
613
+ padding: 10px 14px;
614
+ border-radius: var(--leadbot-radius-card);
615
+ font-size: var(--leadbot-font-size);
616
+ line-height: 1.5;
617
+ position: relative;
618
+ flex-shrink: 0;
619
+ }
620
+ .leadbot-components .leadbot-chatbot-message-bot {
621
+ background: var(--leadbot-color-surface-sunken);
622
+ color: var(--leadbot-color-text);
623
+ align-self: flex-start;
624
+ border-bottom-left-radius: 4px;
625
+ }
626
+ .leadbot-components .leadbot-chatbot-message-user {
627
+ background: var(--leadbot-primary);
628
+ color: var(--leadbot-color-on-primary);
629
+ align-self: flex-end;
630
+ border-bottom-right-radius: 4px;
631
+ }
632
+ .leadbot-components .leadbot-chatbot-message-content {
633
+ overflow-wrap: break-word;
634
+ }
635
+ .leadbot-components {
636
+ /* ---- Conversation starters ---- */
637
+ }
638
+ .leadbot-components .leadbot-chatbot-starters {
639
+ display: flex;
640
+ flex-wrap: wrap;
641
+ justify-content: flex-end;
642
+ gap: 6px;
643
+ padding: 4px 16px 8px;
644
+ flex-shrink: 0;
645
+ }
646
+ .leadbot-components .leadbot-chatbot-starter-btn {
647
+ background: var(--leadbot-color-surface);
648
+ border: 1px solid color-mix(in srgb, var(--leadbot-primary) 45%, var(--leadbot-color-surface));
649
+ color: var(--leadbot-primary);
650
+ border-radius: var(--leadbot-radius-pill);
651
+ padding: 8px 14px;
652
+ font-size: var(--leadbot-font-size-sm);
653
+ font-family: inherit;
654
+ font-weight: 500;
655
+ line-height: 1.4;
656
+ text-align: left;
657
+ max-width: 88%;
658
+ cursor: pointer;
659
+ transition: background var(--leadbot-duration-fast) var(--leadbot-ease-interactive), border-color var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
660
+ }
661
+ .leadbot-components .leadbot-chatbot-starter-btn:hover:not(:disabled) {
662
+ background: color-mix(in srgb, var(--leadbot-primary) 8%, var(--leadbot-color-surface));
663
+ border-color: var(--leadbot-primary);
664
+ }
665
+ .leadbot-components .leadbot-chatbot-starter-btn:disabled {
666
+ opacity: 0.6;
667
+ cursor: default;
668
+ }
669
+ .leadbot-components {
670
+ /* Markdown in chatbot */
671
+ }
672
+ .leadbot-components .leadbot-chatbot-message-content p {
673
+ margin: 0 0 8px 0;
674
+ }
675
+ .leadbot-components .leadbot-chatbot-message-content p:last-child {
676
+ margin-bottom: 0;
677
+ }
678
+ .leadbot-components .leadbot-chatbot-message-content strong {
679
+ font-weight: 600;
680
+ }
681
+ .leadbot-components .leadbot-chatbot-message-content em {
682
+ font-style: italic;
683
+ }
684
+ .leadbot-components .leadbot-chatbot-message-content a {
685
+ color: var(--leadbot-primary);
686
+ text-decoration: underline;
687
+ }
688
+ .leadbot-components .leadbot-chatbot-message-user .leadbot-chatbot-message-content a {
689
+ color: var(--leadbot-color-on-primary);
690
+ }
691
+ .leadbot-components .leadbot-chatbot-message-content h1,
692
+ .leadbot-components .leadbot-chatbot-message-content h2,
693
+ .leadbot-components .leadbot-chatbot-message-content h3,
694
+ .leadbot-components .leadbot-chatbot-message-content h4,
695
+ .leadbot-components .leadbot-chatbot-message-content h5,
696
+ .leadbot-components .leadbot-chatbot-message-content h6 {
697
+ margin: 8px 0 4px 0;
698
+ font-weight: 600;
699
+ line-height: 1.3;
700
+ }
701
+ .leadbot-components .leadbot-chatbot-message-content h1:first-child,
702
+ .leadbot-components .leadbot-chatbot-message-content h2:first-child,
703
+ .leadbot-components .leadbot-chatbot-message-content h3:first-child,
704
+ .leadbot-components .leadbot-chatbot-message-content h4:first-child,
705
+ .leadbot-components .leadbot-chatbot-message-content h5:first-child,
706
+ .leadbot-components .leadbot-chatbot-message-content h6:first-child {
707
+ margin-top: 0;
708
+ }
709
+ .leadbot-components .leadbot-chatbot-message-content h1 {
710
+ font-size: 1.4em;
711
+ }
712
+ .leadbot-components .leadbot-chatbot-message-content h2 {
713
+ font-size: 1.25em;
714
+ }
715
+ .leadbot-components .leadbot-chatbot-message-content h3 {
716
+ font-size: 1.1em;
717
+ }
718
+ .leadbot-components .leadbot-chatbot-message-content h4 {
719
+ font-size: 1em;
720
+ }
721
+ .leadbot-components .leadbot-chatbot-message-content h5,
722
+ .leadbot-components .leadbot-chatbot-message-content h6 {
723
+ font-size: 0.95em;
724
+ }
725
+ .leadbot-components .leadbot-markdown-hr {
726
+ border: none;
727
+ border-top: 1px solid var(--leadbot-color-border);
728
+ margin: 12px 0;
729
+ }
730
+ .leadbot-components .leadbot-chatbot-message-content ul,
731
+ .leadbot-components .leadbot-chatbot-message-content ol {
732
+ margin: 6px 0;
733
+ padding-left: 20px;
734
+ }
735
+ .leadbot-components .leadbot-chatbot-message-content li {
736
+ margin: 2px 0;
737
+ line-height: 1.5;
738
+ }
739
+ .leadbot-components .leadbot-markdown-table {
740
+ width: 100%;
741
+ border-collapse: collapse;
742
+ margin: 8px 0;
743
+ font-size: var(--leadbot-font-size-sm);
744
+ border-radius: var(--leadbot-radius-sm);
745
+ overflow: hidden;
746
+ }
747
+ .leadbot-components .leadbot-markdown-table th {
748
+ background: var(--leadbot-color-surface-alt);
749
+ padding: 8px 10px;
750
+ text-align: left;
751
+ font-weight: 600;
752
+ border-bottom: 1px solid var(--leadbot-color-border);
753
+ color: var(--leadbot-color-text-strong);
754
+ }
755
+ .leadbot-components .leadbot-markdown-table td {
756
+ padding: 8px 10px;
757
+ border-bottom: 1px solid var(--leadbot-color-surface-sunken);
758
+ color: var(--leadbot-color-text);
759
+ }
760
+ .leadbot-components .leadbot-markdown-table tr:last-child td {
761
+ border-bottom: none;
762
+ }
763
+ .leadbot-components {
764
+ /* ---- Thinking / typing indicator ---- */
765
+ }
766
+ .leadbot-components .leadbot-chatbot-thinking {
767
+ display: flex;
768
+ align-items: center;
769
+ gap: 8px;
770
+ }
771
+ .leadbot-components .leadbot-chatbot-thinking-text {
772
+ font-size: var(--leadbot-font-size-sm);
773
+ color: var(--leadbot-color-text-subtle);
774
+ }
775
+ .leadbot-components .leadbot-chatbot-message-typing {
776
+ padding: 10px 14px;
777
+ }
778
+ .leadbot-components .leadbot-chatbot-typing-dots {
779
+ display: flex;
780
+ gap: 4px;
781
+ }
782
+ .leadbot-components .leadbot-chatbot-typing-dots span {
783
+ width: 6px;
784
+ height: 6px;
785
+ background: var(--leadbot-color-text-subtle);
786
+ border-radius: 50%;
787
+ animation: leadbot-typing-bounce 1.4s infinite var(--leadbot-ease-loop);
788
+ }
789
+ .leadbot-components .leadbot-chatbot-typing-dots span:nth-child(1) {
790
+ animation-delay: -0.32s;
791
+ }
792
+ .leadbot-components .leadbot-chatbot-typing-dots span:nth-child(2) {
793
+ animation-delay: -0.16s;
794
+ }
795
+ .leadbot-components {
796
+ /* ---- Input area ---- */
797
+ }
798
+ .leadbot-components .leadbot-chatbot-input {
799
+ padding: 8px;
800
+ background: var(--leadbot-color-surface-tray);
801
+ border-top: 1px solid var(--leadbot-color-surface-tray-alt);
802
+ flex-shrink: 0;
803
+ }
804
+ .leadbot-components .leadbot-chatbot-input-field {
805
+ display: flex;
806
+ align-items: center;
807
+ gap: 8px;
808
+ border: 1.5px solid var(--leadbot-color-border-field);
809
+ border-radius: var(--leadbot-radius-card);
810
+ background: var(--leadbot-color-surface);
811
+ padding: 6px 6px 6px 14px;
812
+ transition: border-color var(--leadbot-duration-fast) var(--leadbot-ease-interactive), box-shadow var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
813
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
814
+ }
815
+ .leadbot-components .leadbot-chatbot-input-field:focus-within {
816
+ border-color: var(--leadbot-primary);
817
+ box-shadow: var(--leadbot-focus-ring-soft);
818
+ }
819
+ .leadbot-components .leadbot-chatbot-message-input {
820
+ flex: 1;
821
+ border: none;
822
+ border-radius: var(--leadbot-radius-card);
823
+ padding: 8px 0;
824
+ font-size: var(--leadbot-font-size);
825
+ outline: none;
826
+ background: transparent;
827
+ color: var(--leadbot-color-text);
828
+ min-width: 0;
829
+ }
830
+ .leadbot-components .leadbot-chatbot-message-input::placeholder {
831
+ color: var(--leadbot-color-text-subtle);
832
+ }
833
+ .leadbot-components .leadbot-chatbot-send-btn {
834
+ width: 32px;
835
+ height: 32px;
836
+ background: var(--leadbot-color-border);
837
+ color: var(--leadbot-color-on-primary);
838
+ border: none;
839
+ border-radius: 50%;
840
+ display: flex;
841
+ align-items: center;
842
+ justify-content: center;
843
+ cursor: default;
844
+ transition: background var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
845
+ flex-shrink: 0;
846
+ pointer-events: none;
847
+ }
848
+ .leadbot-components .leadbot-chatbot-send-btn svg {
849
+ width: 16px;
850
+ height: 16px;
851
+ }
852
+ .leadbot-components .leadbot-chatbot-send-btn--active {
853
+ background: var(--leadbot-primary);
854
+ cursor: pointer;
855
+ pointer-events: auto;
856
+ }
857
+ .leadbot-components .leadbot-chatbot-send-btn--active:hover {
858
+ opacity: 0.85;
859
+ }
860
+ .leadbot-components .leadbot-chatbot-send-btn--active:active {
861
+ opacity: 0.7;
862
+ }
863
+ .leadbot-components {
864
+ /* ---- Menu ---- */
865
+ }
866
+ .leadbot-components .leadbot-chatbot-menu-btn {
867
+ width: 30px;
868
+ height: 30px;
869
+ border-radius: var(--leadbot-radius-sm);
870
+ background: rgba(255, 255, 255, 0.15);
871
+ border: none;
872
+ color: var(--leadbot-color-on-primary);
873
+ display: flex;
874
+ align-items: center;
875
+ justify-content: center;
876
+ cursor: pointer;
877
+ transition: background var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
878
+ margin-left: auto;
879
+ flex-shrink: 0;
880
+ }
881
+ .leadbot-components .leadbot-chatbot-menu-btn:hover {
882
+ background: rgba(255, 255, 255, 0.25);
883
+ }
884
+ .leadbot-components .leadbot-chatbot-menu {
885
+ position: absolute;
886
+ top: 50px;
887
+ right: 12px;
888
+ background: var(--leadbot-color-surface);
889
+ border-radius: var(--leadbot-radius-md);
890
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
891
+ min-width: 150px;
892
+ overflow: hidden;
893
+ z-index: 100;
894
+ border: 1px solid rgba(0, 0, 0, 0.06);
895
+ }
896
+ .leadbot-components .leadbot-chatbot-menu-item {
897
+ width: 100%;
898
+ padding: 10px 14px;
899
+ border: none;
900
+ background: var(--leadbot-color-surface);
901
+ display: flex;
902
+ align-items: center;
903
+ gap: 8px;
904
+ cursor: pointer;
905
+ transition: background var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
906
+ color: var(--leadbot-color-text-strong);
907
+ font-size: var(--leadbot-font-size-sm);
908
+ text-align: left;
909
+ }
910
+ .leadbot-components .leadbot-chatbot-menu-item:hover {
911
+ background: var(--leadbot-color-surface-alt);
912
+ }
913
+ .leadbot-components .leadbot-chatbot-menu-item:active {
914
+ background: var(--leadbot-color-surface-sunken);
915
+ }
916
+ .leadbot-components .leadbot-chatbot-menu-item svg {
917
+ flex-shrink: 0;
918
+ color: var(--leadbot-color-text-muted);
919
+ }
920
+ .leadbot-components .leadbot-chatbot-menu-item-icon {
921
+ display: inline-flex;
922
+ align-items: center;
923
+ justify-content: center;
924
+ line-height: 0;
925
+ }
926
+ .leadbot-components .leadbot-chatbot-menu-item-icon svg {
927
+ width: 14px;
928
+ height: 14px;
929
+ display: block;
930
+ }
931
+ .leadbot-components {
932
+ /* ---- Branding (fixed pill between messages and input) ---- */
933
+ }
934
+ .leadbot-components .leadbot-chatbot-branding {
935
+ display: flex;
936
+ align-items: center;
937
+ justify-content: center;
938
+ gap: 3px;
939
+ font-size: 9px;
940
+ color: var(--leadbot-color-text-subtle);
941
+ text-decoration: none;
942
+ background: transparent;
943
+ padding: 3px 10px;
944
+ border-radius: var(--leadbot-radius-pill);
945
+ margin: -2px auto 6px auto;
946
+ position: relative;
947
+ z-index: 2;
948
+ width: fit-content;
949
+ flex-shrink: 0;
950
+ border: 1.5px solid transparent;
951
+ transition: border-color var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
952
+ cursor: pointer;
953
+ }
954
+ .leadbot-components .leadbot-chatbot-branding .leadbot-powered-by__logo {
955
+ color: var(--leadbot-color-logo);
956
+ }
957
+ .leadbot-components .leadbot-chatbot-branding:hover {
958
+ border-color: color-mix(in srgb, var(--leadbot-primary) 25%, transparent);
959
+ }
960
+ .leadbot-components .leadbot-chatbot-branding svg {
961
+ display: block;
962
+ }
963
+ .leadbot-components {
964
+ /* ---- Tool cards (AI-triggered steps rendered inline in the chat) ---- */
965
+ }
966
+ .leadbot-components .leadbot-chatbot-tool-card {
967
+ width: 88%;
968
+ padding: 0;
969
+ overflow: hidden;
970
+ background: var(--leadbot-color-surface);
971
+ border: 1px solid rgba(0, 0, 0, 0.08);
972
+ box-shadow: var(--leadbot-shadow-sm);
973
+ }
974
+ .leadbot-components .leadbot-chatbot-tool-card-header {
975
+ display: flex;
976
+ align-items: center;
977
+ gap: 8px;
978
+ padding: 10px 14px;
979
+ background: color-mix(in srgb, var(--leadbot-primary) 5%, var(--leadbot-color-surface));
980
+ border-bottom: 1px solid rgba(0, 0, 0, 0.06);
981
+ font-size: var(--leadbot-font-size-sm);
982
+ font-weight: 600;
983
+ color: var(--leadbot-color-text);
984
+ }
985
+ .leadbot-components .leadbot-chatbot-tool-card-icon {
986
+ display: inline-flex;
987
+ align-items: center;
988
+ justify-content: center;
989
+ width: 22px;
990
+ height: 22px;
991
+ border-radius: var(--leadbot-radius-sm);
992
+ background: color-mix(in srgb, var(--leadbot-primary) 12%, var(--leadbot-color-surface));
993
+ color: var(--leadbot-primary);
994
+ flex-shrink: 0;
995
+ }
996
+ .leadbot-components .leadbot-chatbot-tool-card-icon svg {
997
+ display: block;
998
+ }
999
+ .leadbot-components .leadbot-chatbot-tool-card-title {
1000
+ min-width: 0;
1001
+ overflow: hidden;
1002
+ text-overflow: ellipsis;
1003
+ white-space: nowrap;
1004
+ }
1005
+ .leadbot-components .leadbot-chatbot-tool-card-check {
1006
+ display: inline-flex;
1007
+ align-items: center;
1008
+ justify-content: center;
1009
+ margin-left: auto;
1010
+ width: 18px;
1011
+ height: 18px;
1012
+ border-radius: 50%;
1013
+ background: var(--leadbot-color-success);
1014
+ color: var(--leadbot-color-on-primary);
1015
+ flex-shrink: 0;
1016
+ }
1017
+ .leadbot-components .leadbot-chatbot-tool-card-check svg {
1018
+ display: block;
1019
+ }
1020
+ .leadbot-components .leadbot-chatbot-tool-card--completed .leadbot-chatbot-tool-card-header {
1021
+ background: color-mix(in srgb, var(--leadbot-color-success) 6%, var(--leadbot-color-surface));
1022
+ }
1023
+ .leadbot-components .leadbot-chatbot-tool-card--completed .leadbot-chatbot-tool-card-icon {
1024
+ background: color-mix(in srgb, var(--leadbot-color-success) 12%, var(--leadbot-color-surface));
1025
+ color: var(--leadbot-color-success);
1026
+ }
1027
+ .leadbot-components .leadbot-chatbot-tool-card--dismissed {
1028
+ opacity: 0.55;
1029
+ }
1030
+ .leadbot-components .leadbot-chatbot-tool-card--dismissed .leadbot-chatbot-tool-card-header {
1031
+ border-bottom: none;
1032
+ }
1033
+ .leadbot-components .leadbot-chatbot-tool-card-body {
1034
+ max-width: 100%;
1035
+ min-width: 0;
1036
+ }
1037
+ .leadbot-components {
1038
+ /* Embedded steps must clamp to the bubble width instead of their own minimums. */
1039
+ }
1040
+ .leadbot-components .leadbot-chatbot-tool-card-body > * {
1041
+ max-width: 100%;
1042
+ min-width: 0;
1043
+ }
1044
+ .leadbot-components {
1045
+ /* Embedded forms are part of the card — strip their standalone card chrome
1046
+ (background, border, shadow) so the tool card reads as one surface. */
1047
+ }
1048
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-form,
1049
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-callback-form,
1050
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-email-request-form,
1051
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-whatsapp-form {
1052
+ width: 100%;
1053
+ max-width: 100%;
1054
+ background: none;
1055
+ border: none;
1056
+ border-radius: 0;
1057
+ box-shadow: none;
1058
+ }
1059
+ .leadbot-components {
1060
+ /* The header already shows the form title — don't repeat it in the body. */
1061
+ }
1062
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-form-title {
1063
+ display: none;
1064
+ }
1065
+ .leadbot-components {
1066
+ /* The chat pane scrolls — the embedded form must not add a nested scroll area. */
1067
+ }
1068
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-form-shell {
1069
+ max-height: none;
1070
+ overflow: visible;
1071
+ }
1072
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-form-scroll {
1073
+ max-height: none;
1074
+ overflow-y: visible;
1075
+ overflow-x: hidden;
1076
+ padding: 14px 14px 0 14px;
1077
+ }
1078
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-form-actions {
1079
+ padding: 4px 14px 14px 14px;
1080
+ border-top: none;
1081
+ background: transparent;
1082
+ }
1083
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-form-complete {
1084
+ padding: 14px;
1085
+ }
1086
+ .leadbot-components {
1087
+ /* ---- Inline WhatsApp card (one tap opens WhatsApp with the message pre-filled) ---- */
1088
+ }
1089
+ .leadbot-components .leadbot-chatbot-tool-card--whatsapp .leadbot-chatbot-tool-card-header {
1090
+ background: color-mix(in srgb, var(--leadbot-whatsapp-brand) 6%, var(--leadbot-color-surface));
1091
+ }
1092
+ .leadbot-components .leadbot-chatbot-tool-card--whatsapp .leadbot-chatbot-tool-card-icon {
1093
+ background: color-mix(in srgb, var(--leadbot-whatsapp-brand) 14%, var(--leadbot-color-surface));
1094
+ color: var(--leadbot-whatsapp-brand-dark);
1095
+ }
1096
+ .leadbot-components .leadbot-chatbot-wa {
1097
+ display: flex;
1098
+ flex-direction: column;
1099
+ gap: 10px;
1100
+ padding: 14px;
1101
+ }
1102
+ .leadbot-components .leadbot-chatbot-wa-contact {
1103
+ display: flex;
1104
+ align-items: center;
1105
+ gap: 10px;
1106
+ }
1107
+ .leadbot-components .leadbot-chatbot-wa .leadbot-whatsapp-avatar,
1108
+ .leadbot-components .leadbot-chatbot-wa .leadbot-whatsapp-avatar-placeholder {
1109
+ width: 36px;
1110
+ height: 36px;
1111
+ border-radius: 50%;
1112
+ object-fit: cover;
1113
+ flex-shrink: 0;
1114
+ }
1115
+ .leadbot-components .leadbot-chatbot-wa-contact-info {
1116
+ display: flex;
1117
+ flex-direction: column;
1118
+ gap: 1px;
1119
+ min-width: 0;
1120
+ }
1121
+ .leadbot-components .leadbot-chatbot-wa-name {
1122
+ font-size: var(--leadbot-font-size-sm);
1123
+ font-weight: 600;
1124
+ color: var(--leadbot-color-text);
1125
+ }
1126
+ .leadbot-components .leadbot-chatbot-wa-via {
1127
+ display: inline-flex;
1128
+ align-items: center;
1129
+ gap: 4px;
1130
+ font-size: 11px;
1131
+ color: var(--leadbot-whatsapp-brand-dark);
1132
+ }
1133
+ .leadbot-components .leadbot-chatbot-wa-via svg {
1134
+ width: 12px;
1135
+ height: 12px;
1136
+ display: block;
1137
+ }
1138
+ .leadbot-components .leadbot-chatbot-wa-text {
1139
+ font-size: var(--leadbot-font-size-sm);
1140
+ line-height: 1.5;
1141
+ color: var(--leadbot-color-text-body);
1142
+ border-left: 3px solid color-mix(in srgb, var(--leadbot-whatsapp-brand) 40%, var(--leadbot-color-surface));
1143
+ padding-left: 10px;
1144
+ }
1145
+ .leadbot-components .leadbot-chatbot-wa-open-btn {
1146
+ display: flex;
1147
+ align-items: center;
1148
+ justify-content: center;
1149
+ gap: 8px;
1150
+ width: 100%;
1151
+ padding: 10px 14px;
1152
+ border: none;
1153
+ border-radius: var(--leadbot-radius-md);
1154
+ background: var(--leadbot-whatsapp-brand);
1155
+ font-size: var(--leadbot-font-size-sm);
1156
+ font-weight: 600;
1157
+ color: var(--leadbot-color-on-primary);
1158
+ cursor: pointer;
1159
+ transition: background var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1160
+ }
1161
+ .leadbot-components .leadbot-chatbot-wa-open-btn:hover {
1162
+ background: var(--leadbot-whatsapp-brand-hover);
1163
+ }
1164
+ .leadbot-components .leadbot-chatbot-wa-open-btn svg {
1165
+ width: 15px;
1166
+ height: 15px;
1167
+ display: block;
1168
+ }
1169
+ .leadbot-components .leadbot-chatbot-wa-dismiss {
1170
+ align-self: flex-start;
1171
+ background: none;
1172
+ border: none;
1173
+ padding: 0;
1174
+ font-size: var(--leadbot-font-size-xs);
1175
+ color: var(--leadbot-color-text-subtle);
1176
+ text-decoration: underline;
1177
+ cursor: pointer;
1178
+ }
1179
+ .leadbot-components .leadbot-chatbot-wa-dismiss:hover {
1180
+ color: var(--leadbot-color-text-body);
1181
+ }
1182
+ .leadbot-components .leadbot-chatbot-wa-qr {
1183
+ display: flex;
1184
+ flex-direction: column;
1185
+ align-items: center;
1186
+ gap: 8px;
1187
+ text-align: center;
1188
+ }
1189
+ .leadbot-components .leadbot-chatbot-wa-qr-title {
1190
+ font-size: var(--leadbot-font-size-sm);
1191
+ font-weight: 600;
1192
+ color: var(--leadbot-color-text);
1193
+ }
1194
+ .leadbot-components .leadbot-chatbot-wa-qr-image svg {
1195
+ width: 140px;
1196
+ height: 140px;
1197
+ display: block;
1198
+ }
1199
+ .leadbot-components .leadbot-chatbot-wa-qr-label {
1200
+ font-size: var(--leadbot-font-size-xs);
1201
+ color: var(--leadbot-color-text-muted);
1202
+ }
1203
+ .leadbot-components .leadbot-chatbot-wa-link {
1204
+ display: inline-flex;
1205
+ align-items: center;
1206
+ gap: 6px;
1207
+ font-size: var(--leadbot-font-size-xs);
1208
+ font-weight: 500;
1209
+ color: var(--leadbot-whatsapp-brand-dark);
1210
+ text-decoration: underline;
1211
+ }
1212
+ .leadbot-components .leadbot-chatbot-wa-link svg {
1213
+ width: 13px;
1214
+ height: 13px;
1215
+ display: block;
1216
+ }
1217
+ .leadbot-components .leadbot-chatbot-wa-opened {
1218
+ display: flex;
1219
+ flex-wrap: wrap;
1220
+ align-items: center;
1221
+ gap: 6px;
1222
+ font-size: var(--leadbot-font-size-sm);
1223
+ color: var(--leadbot-color-success-text);
1224
+ }
1225
+ .leadbot-components {
1226
+ /* Compact field styling tuned for the narrow chat column. */
1227
+ }
1228
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field {
1229
+ margin-bottom: 12px;
1230
+ }
1231
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field label,
1232
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field-list .leadbot-field-list-label {
1233
+ font-size: var(--leadbot-font-size-xs);
1234
+ margin-bottom: 4px;
1235
+ color: var(--leadbot-color-text-body);
1236
+ }
1237
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field input,
1238
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field textarea,
1239
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field select {
1240
+ padding: 9px 12px;
1241
+ border-color: var(--leadbot-color-border);
1242
+ border-radius: var(--leadbot-radius-md);
1243
+ transition: border-color var(--leadbot-duration-fast) var(--leadbot-ease-interactive), box-shadow var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1244
+ }
1245
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field input:focus,
1246
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field textarea:focus,
1247
+ .leadbot-components .leadbot-chatbot-tool-card .leadbot-field select:focus {
1248
+ border-color: var(--leadbot-primary);
1249
+ box-shadow: var(--leadbot-focus-ring);
1250
+ }
1251
+ .leadbot-components {
1252
+ /* ---- Citations ---- */
1253
+ }
1254
+ .leadbot-components .leadbot-citation-link {
1255
+ display: inline-flex;
1256
+ align-items: center;
1257
+ justify-content: center;
1258
+ min-width: 16px;
1259
+ height: 16px;
1260
+ padding: 0 4px;
1261
+ border-radius: var(--leadbot-radius-md);
1262
+ background: color-mix(in srgb, var(--leadbot-primary) 12%, transparent);
1263
+ color: var(--leadbot-primary);
1264
+ text-decoration: none;
1265
+ font-size: 10px;
1266
+ font-weight: 700;
1267
+ line-height: 1;
1268
+ cursor: pointer;
1269
+ transition: background var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1270
+ vertical-align: super;
1271
+ }
1272
+ .leadbot-components .leadbot-citation-link:hover {
1273
+ background: color-mix(in srgb, var(--leadbot-primary) 22%, transparent);
1274
+ }
1275
+ .leadbot-components .leadbot-chatbot-citations {
1276
+ display: flex;
1277
+ flex-direction: column;
1278
+ gap: 4px;
1279
+ margin-top: 8px;
1280
+ padding-top: 8px;
1281
+ border-top: 1px solid rgba(0, 0, 0, 0.06);
1282
+ }
1283
+ .leadbot-components .leadbot-chatbot-citation-item {
1284
+ display: flex;
1285
+ align-items: center;
1286
+ gap: 6px;
1287
+ font-size: var(--leadbot-font-size-xs);
1288
+ color: var(--leadbot-color-text-muted);
1289
+ text-decoration: none;
1290
+ padding: 4px 8px;
1291
+ border-radius: var(--leadbot-radius-sm);
1292
+ background: rgba(0, 0, 0, 0.02);
1293
+ transition: background var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1294
+ }
1295
+ .leadbot-components .leadbot-chatbot-citation-item:hover {
1296
+ background: color-mix(in srgb, var(--leadbot-primary) 6%, transparent);
1297
+ color: var(--leadbot-primary);
1298
+ }
1299
+ .leadbot-components .leadbot-chatbot-citation-number {
1300
+ display: inline-flex;
1301
+ align-items: center;
1302
+ justify-content: center;
1303
+ min-width: 16px;
1304
+ height: 16px;
1305
+ padding: 0 4px;
1306
+ border-radius: var(--leadbot-radius-md);
1307
+ background: color-mix(in srgb, var(--leadbot-primary) 10%, transparent);
1308
+ color: var(--leadbot-primary);
1309
+ font-size: 10px;
1310
+ font-weight: 700;
1311
+ flex-shrink: 0;
1312
+ }
1313
+ .leadbot-components .leadbot-chatbot-citation-url {
1314
+ overflow: hidden;
1315
+ text-overflow: ellipsis;
1316
+ white-space: nowrap;
1317
+ min-width: 0;
1318
+ }
1319
+ .leadbot-components {
1320
+ /* ---- AI response feedback ---- */
1321
+ }
1322
+ .leadbot-components .leadbot-chatbot-feedback {
1323
+ display: flex;
1324
+ flex-direction: column;
1325
+ gap: 6px;
1326
+ margin-top: 6px;
1327
+ }
1328
+ .leadbot-components .leadbot-chatbot-feedback-buttons {
1329
+ display: flex;
1330
+ align-items: center;
1331
+ gap: 4px;
1332
+ }
1333
+ .leadbot-components .leadbot-chatbot-feedback-btn {
1334
+ display: inline-flex;
1335
+ align-items: center;
1336
+ justify-content: center;
1337
+ width: 24px;
1338
+ height: 24px;
1339
+ padding: 0;
1340
+ background: transparent;
1341
+ border: none;
1342
+ border-radius: var(--leadbot-radius-sm);
1343
+ color: var(--leadbot-color-text-subtle);
1344
+ cursor: pointer;
1345
+ transition: color var(--leadbot-duration-fast) var(--leadbot-ease-interactive), background var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1346
+ }
1347
+ .leadbot-components .leadbot-chatbot-feedback-btn svg {
1348
+ width: 14px;
1349
+ height: 14px;
1350
+ }
1351
+ .leadbot-components .leadbot-chatbot-feedback-btn:hover {
1352
+ color: var(--leadbot-color-text-body);
1353
+ background: rgba(0, 0, 0, 0.05);
1354
+ }
1355
+ .leadbot-components .leadbot-chatbot-feedback-btn--selected,
1356
+ .leadbot-components .leadbot-chatbot-feedback-btn--selected:hover {
1357
+ color: var(--leadbot-primary);
1358
+ background: color-mix(in srgb, var(--leadbot-primary) 10%, transparent);
1359
+ }
1360
+ .leadbot-components .leadbot-chatbot-feedback-comment {
1361
+ display: flex;
1362
+ flex-direction: column;
1363
+ gap: 6px;
1364
+ }
1365
+ .leadbot-components .leadbot-chatbot-feedback-textarea {
1366
+ width: 100%;
1367
+ box-sizing: border-box;
1368
+ border: 1.5px solid var(--leadbot-color-border-field);
1369
+ border-radius: var(--leadbot-radius-sm);
1370
+ background: var(--leadbot-color-surface);
1371
+ padding: 8px 10px;
1372
+ font-size: var(--leadbot-font-size-sm);
1373
+ font-family: inherit;
1374
+ color: var(--leadbot-color-text);
1375
+ resize: none;
1376
+ outline: none;
1377
+ transition: border-color var(--leadbot-duration-fast) var(--leadbot-ease-interactive), box-shadow var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1378
+ }
1379
+ .leadbot-components .leadbot-chatbot-feedback-textarea:focus {
1380
+ border-color: var(--leadbot-primary);
1381
+ box-shadow: var(--leadbot-focus-ring-soft);
1382
+ }
1383
+ .leadbot-components .leadbot-chatbot-feedback-textarea::placeholder {
1384
+ color: var(--leadbot-color-text-subtle);
1385
+ }
1386
+ .leadbot-components .leadbot-chatbot-feedback-comment-actions {
1387
+ display: flex;
1388
+ align-items: center;
1389
+ gap: 10px;
1390
+ }
1391
+ .leadbot-components .leadbot-chatbot-feedback-send {
1392
+ background: var(--leadbot-primary);
1393
+ color: var(--leadbot-color-on-primary);
1394
+ border: none;
1395
+ border-radius: var(--leadbot-radius-pill);
1396
+ padding: 5px 14px;
1397
+ font-size: var(--leadbot-font-size-xs);
1398
+ font-family: inherit;
1399
+ font-weight: 600;
1400
+ cursor: pointer;
1401
+ transition: opacity var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1402
+ }
1403
+ .leadbot-components .leadbot-chatbot-feedback-send:hover {
1404
+ opacity: 0.9;
1405
+ }
1406
+ .leadbot-components .leadbot-chatbot-feedback-skip {
1407
+ background: transparent;
1408
+ border: none;
1409
+ padding: 0;
1410
+ font-size: var(--leadbot-font-size-xs);
1411
+ font-family: inherit;
1412
+ color: var(--leadbot-color-text-muted);
1413
+ cursor: pointer;
1414
+ text-decoration: underline;
1415
+ }
1416
+ .leadbot-components .leadbot-chatbot-feedback-skip:hover {
1417
+ color: var(--leadbot-color-text-strong);
1418
+ }
1419
+ .leadbot-components .leadbot-chatbot-feedback-thanks {
1420
+ font-size: var(--leadbot-font-size-xs);
1421
+ color: var(--leadbot-color-success);
1422
+ }
1423
+ .leadbot-components {
1424
+ /* ==========================================================================
1425
+ WhatsApp Interface
1426
+ File: src/steps/whatsapp_step.js
1427
+ Classes: leadbot-whatsapp-interface, leadbot-whatsapp-header, leadbot-whatsapp-chat,
1428
+ leadbot-whatsapp-message, leadbot-whatsapp-input-container
1429
+ ========================================================================== */
1430
+ }
1431
+ .leadbot-components .leadbot-whatsapp-button-container {
1432
+ display: flex;
1433
+ flex-direction: column;
1434
+ gap: 12px;
1435
+ margin-bottom: 16px;
1436
+ }
1437
+ .leadbot-components .leadbot-whatsapp-interface {
1438
+ background: var(--leadbot-whatsapp-wallpaper);
1439
+ border-radius: var(--leadbot-radius-card);
1440
+ overflow: hidden;
1441
+ box-shadow: var(--leadbot-shadow-sm);
1442
+ min-width: 360px;
1443
+ max-width: 360px;
1444
+ }
1445
+ .leadbot-components .leadbot-whatsapp-header {
1446
+ background: linear-gradient(135deg, var(--leadbot-whatsapp-green) 0%, var(--leadbot-whatsapp-green-hover) 100%);
1447
+ padding: 12px 16px;
1448
+ display: flex;
1449
+ align-items: center;
1450
+ }
1451
+ .leadbot-components .leadbot-whatsapp-contact-info {
1452
+ display: flex;
1453
+ align-items: center;
1454
+ gap: 12px;
1455
+ }
1456
+ .leadbot-components .leadbot-whatsapp-avatar {
1457
+ width: 40px;
1458
+ height: 40px;
1459
+ border-radius: 50%;
1460
+ object-fit: cover;
1461
+ border: 2px solid var(--leadbot-color-surface);
1462
+ background: var(--leadbot-color-surface);
1463
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
1464
+ }
1465
+ .leadbot-components .leadbot-whatsapp-avatar-placeholder {
1466
+ width: 40px;
1467
+ height: 40px;
1468
+ border-radius: 50%;
1469
+ background: var(--leadbot-color-surface);
1470
+ border: 2px solid var(--leadbot-color-surface);
1471
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
1472
+ display: flex;
1473
+ align-items: center;
1474
+ justify-content: center;
1475
+ color: var(--leadbot-primary, var(--leadbot-whatsapp-on-green));
1476
+ font-weight: 600;
1477
+ font-size: 16px;
1478
+ }
1479
+ .leadbot-components .leadbot-whatsapp-avatar-placeholder .leadbot-avatar-fallback {
1480
+ color: var(--leadbot-primary, var(--leadbot-whatsapp-on-green));
1481
+ }
1482
+ .leadbot-components .leadbot-whatsapp-contact-details {
1483
+ color: var(--leadbot-color-on-primary);
1484
+ }
1485
+ .leadbot-components .leadbot-whatsapp-name {
1486
+ font-weight: 500;
1487
+ font-size: 16px;
1488
+ line-height: 1.25;
1489
+ letter-spacing: 0.01em;
1490
+ }
1491
+ .leadbot-components .leadbot-whatsapp-status {
1492
+ font-size: var(--leadbot-font-size-xs);
1493
+ font-weight: 400;
1494
+ color: rgba(255, 255, 255, 0.85);
1495
+ line-height: 1.3;
1496
+ letter-spacing: 0.02em;
1497
+ }
1498
+ .leadbot-components .leadbot-whatsapp-chat {
1499
+ padding: 16px;
1500
+ min-height: 80px;
1501
+ background: linear-gradient(to bottom, var(--leadbot-whatsapp-wallpaper) 0%, var(--leadbot-whatsapp-wallpaper-end) 100%);
1502
+ }
1503
+ .leadbot-components .leadbot-whatsapp-message {
1504
+ background: var(--leadbot-whatsapp-bubble);
1505
+ padding: 8px 12px;
1506
+ border-radius: var(--leadbot-radius-md);
1507
+ max-width: 100%;
1508
+ position: relative;
1509
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
1510
+ }
1511
+ .leadbot-components .leadbot-whatsapp-message::before {
1512
+ content: "";
1513
+ position: absolute;
1514
+ left: -8px;
1515
+ top: 16px;
1516
+ width: 0;
1517
+ height: 0;
1518
+ border: 8px solid transparent;
1519
+ border-right-color: var(--leadbot-whatsapp-bubble);
1520
+ border-left: none;
1521
+ }
1522
+ .leadbot-components .leadbot-whatsapp-message-content {
1523
+ color: var(--leadbot-whatsapp-bubble-text);
1524
+ font-size: var(--leadbot-font-size);
1525
+ line-height: 1.4;
1526
+ margin-bottom: 4px;
1527
+ }
1528
+ .leadbot-components .leadbot-whatsapp-message-content p {
1529
+ margin: 0;
1530
+ }
1531
+ .leadbot-components .leadbot-whatsapp-message-time {
1532
+ font-size: 11px;
1533
+ /* >= 4.5:1 on the white bubble (WCAG 1.4.3); #999 was 2.85:1 */
1534
+ color: var(--leadbot-color-text-muted);
1535
+ text-align: right;
1536
+ display: flex;
1537
+ align-items: center;
1538
+ justify-content: flex-end;
1539
+ gap: 4px;
1540
+ }
1541
+ .leadbot-components .leadbot-whatsapp-checkmarks {
1542
+ color: var(--leadbot-whatsapp-tick);
1543
+ margin-left: 4px;
1544
+ display: inline-flex;
1545
+ align-items: center;
1546
+ }
1547
+ .leadbot-components .leadbot-whatsapp-checkmarks svg {
1548
+ width: 16px;
1549
+ height: 12px;
1550
+ }
1551
+ .leadbot-components {
1552
+ /* Credit line, right-aligned in the composer tray. */
1553
+ }
1554
+ .leadbot-components .leadbot-whatsapp-branding {
1555
+ display: flex;
1556
+ align-items: center;
1557
+ justify-content: flex-end;
1558
+ gap: 3px;
1559
+ font-size: 9px;
1560
+ line-height: 1;
1561
+ margin: 5px 0 0 auto;
1562
+ padding: 3px 10px;
1563
+ width: fit-content;
1564
+ max-width: 100%;
1565
+ background: transparent;
1566
+ border: 1.5px solid transparent;
1567
+ border-radius: var(--leadbot-radius-pill);
1568
+ color: var(--leadbot-color-text-subtle);
1569
+ box-shadow: none;
1570
+ backdrop-filter: none;
1571
+ text-decoration: none;
1572
+ font-weight: 400;
1573
+ letter-spacing: 0;
1574
+ flex-shrink: 0;
1575
+ transition: border-color var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1576
+ }
1577
+ .leadbot-components .leadbot-whatsapp-branding:hover {
1578
+ border-color: color-mix(in srgb, var(--leadbot-primary) 25%, transparent);
1579
+ }
1580
+ .leadbot-components .leadbot-whatsapp-branding > span:not(.leadbot-powered-by__logo) {
1581
+ color: inherit;
1582
+ transition: color 0.2s ease;
1583
+ }
1584
+ .leadbot-components .leadbot-whatsapp-branding .leadbot-powered-by__logo {
1585
+ color: var(--leadbot-color-logo);
1586
+ display: inline-flex;
1587
+ align-items: center;
1588
+ transition: color 0.2s ease;
1589
+ }
1590
+ .leadbot-components .leadbot-whatsapp-branding .leadbot-powered-by__logo svg {
1591
+ height: 13px;
1592
+ display: block;
1593
+ }
1594
+ .leadbot-components .leadbot-whatsapp-branding img {
1595
+ height: 16px;
1596
+ display: block;
1597
+ }
1598
+ .leadbot-components .leadbot-whatsapp-branding:focus-visible {
1599
+ outline: 2px solid rgba(17, 24, 39, 0.24);
1600
+ outline-offset: 3px;
1601
+ }
1602
+ .leadbot-components .leadbot-whatsapp-input-container {
1603
+ padding: 10px 16px 8px;
1604
+ background: var(--leadbot-color-surface-tray-alt);
1605
+ }
1606
+ .leadbot-components .leadbot-whatsapp-input-bar {
1607
+ display: flex;
1608
+ align-items: center;
1609
+ gap: 8px;
1610
+ background: var(--leadbot-color-surface);
1611
+ border-radius: var(--leadbot-radius-pill);
1612
+ padding: 6px 6px 6px 16px;
1613
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
1614
+ transition: box-shadow var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1615
+ }
1616
+ .leadbot-components {
1617
+ /* Sole focus indicator for the message field (the global a11y outline skips
1618
+ text controls). */
1619
+ }
1620
+ .leadbot-components .leadbot-whatsapp-input-bar:focus-within {
1621
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), 0 0 0 3px color-mix(in srgb, var(--leadbot-whatsapp-green) 40%, transparent);
1622
+ }
1623
+ .leadbot-components .leadbot-whatsapp-message-field {
1624
+ flex: 1;
1625
+ border: none;
1626
+ background: transparent;
1627
+ font-size: var(--leadbot-font-size);
1628
+ color: var(--leadbot-whatsapp-bubble-text);
1629
+ font-family: inherit;
1630
+ outline: none;
1631
+ padding: 6px 0;
1632
+ }
1633
+ .leadbot-components .leadbot-whatsapp-message-field::placeholder {
1634
+ color: var(--leadbot-color-text-subtle);
1635
+ }
1636
+ .leadbot-components .leadbot-whatsapp-input-field {
1637
+ display: flex;
1638
+ align-items: center;
1639
+ background: var(--leadbot-color-surface);
1640
+ border-radius: var(--leadbot-radius-pill);
1641
+ padding: 8px 16px;
1642
+ gap: 12px;
1643
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1644
+ }
1645
+ .leadbot-components .leadbot-whatsapp-input-field input {
1646
+ flex: 1;
1647
+ border: none;
1648
+ outline: none;
1649
+ font-size: var(--leadbot-font-size);
1650
+ color: var(--leadbot-color-text-muted);
1651
+ background: transparent;
1652
+ }
1653
+ .leadbot-components .leadbot-whatsapp-send-btn {
1654
+ background: var(--leadbot-whatsapp-green);
1655
+ border: none;
1656
+ border-radius: 50%;
1657
+ width: 36px;
1658
+ height: 36px;
1659
+ display: flex;
1660
+ align-items: center;
1661
+ justify-content: center;
1662
+ cursor: pointer;
1663
+ color: var(--leadbot-color-on-primary);
1664
+ transition: background 0.2s;
1665
+ }
1666
+ .leadbot-components .leadbot-whatsapp-send-btn span {
1667
+ display: inline-flex;
1668
+ align-items: center;
1669
+ justify-content: center;
1670
+ }
1671
+ .leadbot-components .leadbot-whatsapp-send-btn svg {
1672
+ display: block;
1673
+ /* Optically center the paper-plane glyph within the round button */
1674
+ margin-left: 1px;
1675
+ }
1676
+ .leadbot-components .leadbot-whatsapp-send-btn:hover {
1677
+ background: var(--leadbot-whatsapp-green-hover);
1678
+ }
1679
+ .leadbot-components .leadbot-whatsapp-send-disabled {
1680
+ background: var(--leadbot-color-disabled) !important;
1681
+ cursor: not-allowed !important;
1682
+ opacity: 0.6;
1683
+ }
1684
+ .leadbot-components .leadbot-whatsapp-send-disabled:hover {
1685
+ background: var(--leadbot-color-disabled) !important;
1686
+ transform: none !important;
1687
+ }
1688
+ .leadbot-components {
1689
+ /* WhatsApp QR Code Card */
1690
+ }
1691
+ .leadbot-components .leadbot-whatsapp-qr-card {
1692
+ background: var(--leadbot-color-surface-tray-alt);
1693
+ padding: 20px 16px;
1694
+ display: flex;
1695
+ flex-direction: column;
1696
+ gap: 20px;
1697
+ animation: leadbot-qr-fade-in 0.3s ease-out;
1698
+ }
1699
+ @keyframes leadbot-qr-fade-in {
1700
+ from {
1701
+ opacity: 0;
1702
+ transform: translateY(6px);
1703
+ }
1704
+ to {
1705
+ opacity: 1;
1706
+ transform: translateY(0);
1707
+ }
1708
+ }
1709
+ .leadbot-components .leadbot-whatsapp-qr-content {
1710
+ display: flex;
1711
+ flex-direction: column;
1712
+ align-items: center;
1713
+ gap: 14px;
1714
+ }
1715
+ .leadbot-components .leadbot-whatsapp-qr-title {
1716
+ font-size: var(--leadbot-font-size);
1717
+ font-weight: 600;
1718
+ color: var(--leadbot-whatsapp-bubble-text);
1719
+ }
1720
+ .leadbot-components .leadbot-whatsapp-qr-image {
1721
+ background: var(--leadbot-color-surface);
1722
+ border-radius: var(--leadbot-radius-md);
1723
+ padding: 8px;
1724
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
1725
+ }
1726
+ .leadbot-components .leadbot-whatsapp-qr-image svg {
1727
+ display: block;
1728
+ width: 160px;
1729
+ height: 160px;
1730
+ }
1731
+ .leadbot-components .leadbot-whatsapp-qr-label {
1732
+ font-size: var(--leadbot-font-size-xs);
1733
+ color: var(--leadbot-color-text-subtle);
1734
+ text-align: center;
1735
+ line-height: 1.55;
1736
+ max-width: 240px;
1737
+ }
1738
+ .leadbot-components .leadbot-whatsapp-qr-actions {
1739
+ display: flex;
1740
+ gap: 8px;
1741
+ justify-content: center;
1742
+ }
1743
+ .leadbot-components .leadbot-whatsapp-qr-btn {
1744
+ display: inline-flex;
1745
+ align-items: center;
1746
+ justify-content: center;
1747
+ gap: 6px;
1748
+ padding: 7px 14px;
1749
+ border-radius: var(--leadbot-radius-pill);
1750
+ font-size: var(--leadbot-font-size-sm);
1751
+ font-weight: 500;
1752
+ text-decoration: none;
1753
+ cursor: pointer;
1754
+ transition: background 0.2s;
1755
+ }
1756
+ .leadbot-components .leadbot-whatsapp-qr-btn-icon {
1757
+ display: inline-flex;
1758
+ }
1759
+ .leadbot-components .leadbot-whatsapp-qr-btn-icon svg {
1760
+ width: 14px;
1761
+ height: 14px;
1762
+ }
1763
+ .leadbot-components .leadbot-whatsapp-qr-btn-web {
1764
+ background: var(--leadbot-whatsapp-green);
1765
+ color: var(--leadbot-whatsapp-on-green);
1766
+ }
1767
+ .leadbot-components .leadbot-whatsapp-qr-btn-web:hover {
1768
+ background: var(--leadbot-whatsapp-green-hover);
1769
+ }
1770
+ .leadbot-components .leadbot-form,
1771
+ .leadbot-components .leadbot-callback-form,
1772
+ .leadbot-components .leadbot-email-request-form {
1773
+ background: var(--leadbot-gradient-card);
1774
+ border-radius: var(--leadbot-radius-card);
1775
+ border: var(--leadbot-border-light);
1776
+ box-shadow: var(--leadbot-shadow-sm);
1777
+ width: 100%;
1778
+ max-width: var(--leadbot-form-max-width);
1779
+ display: flex;
1780
+ flex-direction: column;
1781
+ max-height: var(--leadbot-form-max-height);
1782
+ min-height: 0;
1783
+ overflow: hidden;
1784
+ padding: 0;
1785
+ word-wrap: break-word;
1786
+ overflow-wrap: break-word;
1787
+ }
1788
+ .leadbot-components .leadbot-visually-hidden {
1789
+ clip-path: inset(50%);
1790
+ height: 1px;
1791
+ overflow: hidden;
1792
+ position: absolute;
1793
+ white-space: nowrap;
1794
+ width: 1px;
1795
+ }
1796
+ .leadbot-components .leadbot-submit-btn {
1797
+ border: 1px solid transparent;
1798
+ }
1799
+ .leadbot-components .leadbot-layout-inline .leadbot-form-shell {
1800
+ column-gap: 8px;
1801
+ display: grid;
1802
+ grid-template-columns: 1fr auto;
1803
+ overflow: visible;
1804
+ padding: var(--leadbot-form-inline-padding);
1805
+ }
1806
+ .leadbot-components .leadbot-layout-inline .leadbot-form-scroll,
1807
+ .leadbot-components .leadbot-layout-inline .leadbot-form-fields {
1808
+ display: contents;
1809
+ }
1810
+ .leadbot-components .leadbot-layout-inline .leadbot-form-title,
1811
+ .leadbot-components .leadbot-layout-inline .leadbot-form-error,
1812
+ .leadbot-components .leadbot-layout-inline .leadbot-field {
1813
+ grid-column: 1/-1;
1814
+ }
1815
+ .leadbot-components .leadbot-layout-inline .leadbot-field:last-of-type {
1816
+ grid-column: 1;
1817
+ margin-bottom: 0;
1818
+ }
1819
+ .leadbot-components .leadbot-layout-inline .leadbot-form-actions {
1820
+ align-self: end;
1821
+ background: none;
1822
+ border-top: 0;
1823
+ grid-column: 2;
1824
+ padding: 0;
1825
+ }
1826
+ .leadbot-components .leadbot-layout-inline .leadbot-submit-btn {
1827
+ width: auto;
1828
+ }
1829
+ .leadbot-components.leadbot-bare {
1830
+ --leadbot-form-inline-padding: 0px;
1831
+ }
1832
+ .leadbot-components.leadbot-bare .leadbot-form,
1833
+ .leadbot-components.leadbot-bare .leadbot-callback-form,
1834
+ .leadbot-components.leadbot-bare .leadbot-email-request-form,
1835
+ .leadbot-components.leadbot-bare .leadbot-chatbot-interface,
1836
+ .leadbot-components.leadbot-bare .leadbot-whatsapp-interface {
1837
+ background: none;
1838
+ border: 0;
1839
+ border-radius: 0;
1840
+ box-shadow: none;
1841
+ max-height: none;
1842
+ max-width: none;
1843
+ overflow: visible;
1844
+ }
1845
+ .leadbot-components.leadbot-bare .leadbot-form-shell {
1846
+ overflow: visible;
1847
+ }
1848
+ .leadbot-components.leadbot-bare .leadbot-form-scroll {
1849
+ overflow: visible;
1850
+ padding: 0;
1851
+ }
1852
+ .leadbot-components.leadbot-bare .leadbot-form-actions {
1853
+ background: none;
1854
+ border-top: 0;
1855
+ padding: 0;
1856
+ }
1857
+ .leadbot-components.leadbot-bare .leadbot-form-complete {
1858
+ padding: 0;
1859
+ }
1860
+ .leadbot-components .leadbot-field-error-text {
1861
+ color: var(--leadbot-color-error);
1862
+ font-size: 12px;
1863
+ margin-top: 4px;
1864
+ }
1865
+ .leadbot-components .leadbot-chatbot-interface {
1866
+ min-width: 0;
1867
+ max-width: 100%;
1868
+ }
1869
+ .leadbot-components .leadbot-chatbot-message-content {
1870
+ white-space: pre-wrap;
1871
+ }
1872
+ .leadbot-components .leadbot-whatsapp-interface {
1873
+ min-width: 0;
1874
+ max-width: 360px;
1875
+ }
1876
+ .leadbot-components .leadbot-buttons {
1877
+ display: flex;
1878
+ flex-wrap: wrap;
1879
+ gap: 8px;
1880
+ }
1881
+ .leadbot-components .leadbot-buttons-btn {
1882
+ background: var(--leadbot-color-surface);
1883
+ border: 1px solid color-mix(in srgb, var(--leadbot-primary) 45%, var(--leadbot-color-surface));
1884
+ color: var(--leadbot-primary);
1885
+ border-radius: var(--leadbot-radius-pill);
1886
+ padding: 8px 14px;
1887
+ font-size: var(--leadbot-font-size-sm);
1888
+ font-family: inherit;
1889
+ font-weight: 500;
1890
+ line-height: 1.4;
1891
+ cursor: pointer;
1892
+ transition: background var(--leadbot-duration-fast) var(--leadbot-ease-interactive), border-color var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
1893
+ }
1894
+ .leadbot-components .leadbot-buttons-btn:hover {
1895
+ background: color-mix(in srgb, var(--leadbot-primary) 8%, var(--leadbot-color-surface));
1896
+ border-color: var(--leadbot-primary);
1897
+ }
1898
+ @keyframes fadeSlide {
1899
+ from {
1900
+ opacity: 0;
1901
+ }
1902
+ to {
1903
+ opacity: 1;
1904
+ }
1905
+ }
1906
+ @keyframes subtle-pulse {
1907
+ 0%, 100% {
1908
+ transform: scale(1);
1909
+ opacity: 1;
1910
+ }
1911
+ 50% {
1912
+ transform: scale(1.1);
1913
+ opacity: 0.8;
1914
+ }
1915
+ }
1916
+ @keyframes leadbot-datepicker-pop {
1917
+ from {
1918
+ opacity: 0;
1919
+ transform: scale(0.95);
1920
+ }
1921
+ to {
1922
+ opacity: 1;
1923
+ transform: scale(1);
1924
+ }
1925
+ }
1926
+ .leadbot-flow {
1927
+ width: 100%;
1928
+ --leadbot-flow-align: flex-start;
1929
+ /* ==========================================================================
1930
+ Base Classes (composable)
1931
+ File: Used across multiple step renderers
1932
+ ========================================================================== */
1933
+ /* Card base - apply to message bubbles, forms, embeds
1934
+ Used in: message_step.js, base_form_step.js, html_embed_step.js */
1935
+ }
1936
+ .leadbot-flow .leadbot-card {
1937
+ position: relative;
1938
+ background: var(--leadbot-gradient-card);
1939
+ border-radius: var(--leadbot-radius-card);
1940
+ border: var(--leadbot-border-light);
1941
+ box-shadow: var(--leadbot-shadow-sm);
1942
+ padding: var(--leadbot-spacing-card);
1943
+ max-width: var(--leadbot-flow-max-width);
1944
+ font-size: 14px;
1945
+ color: var(--leadbot-color-text);
1946
+ line-height: 1.5;
1947
+ box-sizing: border-box;
1948
+ word-wrap: break-word;
1949
+ overflow-wrap: break-word;
1950
+ animation: slideInCard var(--leadbot-duration-normal) var(--leadbot-ease-appear) backwards;
1951
+ }
1952
+ @keyframes slideInCard {
1953
+ from {
1954
+ opacity: 0;
1955
+ transform: translate(12px, 8px);
1956
+ }
1957
+ to {
1958
+ opacity: 1;
1959
+ transform: translate(0, 0);
1960
+ }
1961
+ }
1962
+ .leadbot-flow {
1963
+ /* V1-style card modifiers */
1964
+ }
1965
+ .leadbot-flow .leadbot-card--has-pwrdby {
1966
+ padding-bottom: 8px;
1967
+ }
1968
+ .leadbot-flow {
1969
+ /* Title row (Name → Company) */
1970
+ }
1971
+ .leadbot-flow .leadbot-title-row {
1972
+ display: flex;
1973
+ align-items: center;
1974
+ flex-wrap: wrap;
1975
+ gap: 6px;
1976
+ margin-bottom: 8px;
1977
+ font-size: 13px;
1978
+ font-weight: 500;
1979
+ color: var(--leadbot-color-text-muted);
1980
+ max-width: 100%;
1981
+ min-width: 0;
1982
+ row-gap: 2px;
1983
+ }
1984
+ .leadbot-flow .leadbot-title-row__name {
1985
+ color: var(--leadbot-primary);
1986
+ font-weight: 500;
1987
+ flex: 0 1 auto;
1988
+ max-width: 100%;
1989
+ min-width: 0;
1990
+ overflow-wrap: break-word;
1991
+ }
1992
+ .leadbot-flow .leadbot-title-row__arrow {
1993
+ width: 15px;
1994
+ height: 15px;
1995
+ display: flex;
1996
+ align-items: center;
1997
+ justify-content: center;
1998
+ flex: 0 0 15px;
1999
+ }
2000
+ .leadbot-flow .leadbot-title-row__arrow svg {
2001
+ width: 10px;
2002
+ height: 10px;
2003
+ fill: #9ca3af;
2004
+ }
2005
+ .leadbot-flow .leadbot-title-row__company {
2006
+ color: #374151;
2007
+ flex: 0 1 auto;
2008
+ font-weight: 600;
2009
+ max-width: 100%;
2010
+ min-width: 0;
2011
+ overflow-wrap: break-word;
2012
+ }
2013
+ .leadbot-flow {
2014
+ /* Card content */
2015
+ }
2016
+ .leadbot-flow .leadbot-card__content {
2017
+ font-weight: 400;
2018
+ font-size: 14px;
2019
+ line-height: 1.5;
2020
+ color: var(--leadbot-color-text);
2021
+ }
2022
+ .leadbot-flow .leadbot-card__content p {
2023
+ margin: 0 0 12px 0;
2024
+ }
2025
+ .leadbot-flow .leadbot-card__content p:last-child {
2026
+ margin-bottom: 0;
2027
+ }
2028
+ .leadbot-flow .leadbot-card__content strong {
2029
+ font-weight: 600;
2030
+ color: #374151;
2031
+ }
2032
+ .leadbot-flow .leadbot-card__content a {
2033
+ color: var(--leadbot-primary);
2034
+ text-decoration: underline;
2035
+ }
2036
+ .leadbot-flow .leadbot-card__content a:hover {
2037
+ opacity: 0.8;
2038
+ }
2039
+ .leadbot-flow {
2040
+ /* Inline form content inside card */
2041
+ }
2042
+ .leadbot-flow .leadbot-card__inline-form {
2043
+ margin-top: 12px;
2044
+ }
2045
+ .leadbot-flow {
2046
+ /* Button group sibling step styling */
2047
+ }
2048
+ .leadbot-flow .leadbot-step-buttons {
2049
+ margin-top: 0;
2050
+ }
2051
+ .leadbot-flow {
2052
+ /* ==========================================================================
2053
+ Message Row & Avatar
2054
+ File: src/steps/message_step.js
2055
+ Classes: leadbot-message-row, leadbot-floating-avatar, leadbot-online-dot
2056
+ ========================================================================== */
2057
+ }
2058
+ .leadbot-flow .leadbot-message-row {
2059
+ display: flex;
2060
+ align-items: flex-start;
2061
+ gap: 8px;
2062
+ margin-bottom: 4px;
2063
+ flex-direction: row;
2064
+ }
2065
+ .leadbot-flow .leadbot-message-row.leadbot-message-has-avatar {
2066
+ align-items: flex-start;
2067
+ }
2068
+ .leadbot-flow .leadbot-left .leadbot-message-row {
2069
+ flex-direction: row-reverse;
2070
+ }
2071
+ .leadbot-flow .leadbot-right .leadbot-message-row {
2072
+ flex-direction: row;
2073
+ }
2074
+ .leadbot-flow .leadbot-floating-avatar {
2075
+ position: relative;
2076
+ width: 54px;
2077
+ height: 54px;
2078
+ border-radius: 50%;
2079
+ overflow: visible;
2080
+ background: #f0f0f0;
2081
+ display: flex;
2082
+ align-items: center;
2083
+ justify-content: center;
2084
+ border: 2px solid #fff;
2085
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 4px 10px rgba(0, 0, 0, 0.1);
2086
+ flex-shrink: 0;
2087
+ margin: 0;
2088
+ }
2089
+ .leadbot-flow .leadbot-floating-avatar img {
2090
+ width: 100%;
2091
+ height: 100%;
2092
+ object-fit: cover;
2093
+ border-radius: 50%;
2094
+ }
2095
+ .leadbot-flow .leadbot-avatar-fallback {
2096
+ width: 100%;
2097
+ height: 100%;
2098
+ display: flex;
2099
+ align-items: center;
2100
+ justify-content: center;
2101
+ color: var(--leadbot-primary);
2102
+ }
2103
+ .leadbot-flow .leadbot-avatar-fallback svg {
2104
+ width: 65%;
2105
+ height: 65%;
2106
+ }
2107
+ .leadbot-flow .leadbot-online-dot {
2108
+ position: absolute;
2109
+ top: -2px;
2110
+ right: -3px;
2111
+ width: 12px;
2112
+ height: 12px;
2113
+ background-color: #4bc24f;
2114
+ border-radius: 50%;
2115
+ border: 2px solid #fff;
2116
+ z-index: 10;
2117
+ animation: subtle-pulse 2s var(--leadbot-ease-loop) infinite;
2118
+ }
2119
+ .leadbot-flow {
2120
+ /* ==========================================================================
2121
+ Card Components (consolidated)
2122
+ Files: message_step.js, base_form_step.js, html_embed_step.js, whatsapp_step.js
2123
+ Base class: leadbot-card (see Base Classes section)
2124
+ Specific: leadbot-message-bubble, leadbot-form, leadbot-callback-form,
2125
+ leadbot-email-request-form, leadbot-whatsapp-form, leadbot-html-embed
2126
+ ========================================================================== */
2127
+ }
2128
+ .leadbot-flow .leadbot-message-bubble,
2129
+ .leadbot-flow .leadbot-callback-form,
2130
+ .leadbot-flow .leadbot-email-request-form,
2131
+ .leadbot-flow .leadbot-whatsapp-form,
2132
+ .leadbot-flow .leadbot-html-embed,
2133
+ .leadbot-flow .leadbot-form {
2134
+ background: var(--leadbot-gradient-card);
2135
+ border-radius: var(--leadbot-radius-card);
2136
+ border: var(--leadbot-border-light);
2137
+ box-shadow: var(--leadbot-shadow-sm);
2138
+ padding: var(--leadbot-spacing-card);
2139
+ max-width: var(--leadbot-flow-max-width);
2140
+ font-size: 14px;
2141
+ color: var(--leadbot-color-text);
2142
+ line-height: 1.5;
2143
+ box-sizing: border-box;
2144
+ word-wrap: break-word;
2145
+ overflow-wrap: break-word;
2146
+ }
2147
+ .leadbot-flow .leadbot-callback-form,
2148
+ .leadbot-flow .leadbot-email-request-form,
2149
+ .leadbot-flow .leadbot-whatsapp-form,
2150
+ .leadbot-flow .leadbot-form {
2151
+ width: var(--leadbot-flow-max-width);
2152
+ }
2153
+ .leadbot-flow .leadbot-callback-form,
2154
+ .leadbot-flow .leadbot-email-request-form,
2155
+ .leadbot-flow .leadbot-form {
2156
+ display: flex;
2157
+ flex-direction: column;
2158
+ max-height: calc(var(--leadbot-available-height, 100vh) - 240px);
2159
+ min-height: 0;
2160
+ overflow: hidden;
2161
+ padding: 0;
2162
+ }
2163
+ .leadbot-flow .leadbot-message-bubble {
2164
+ font-weight: 400;
2165
+ }
2166
+ .leadbot-flow .leadbot-html-embed {
2167
+ background: none;
2168
+ border: none;
2169
+ box-shadow: none;
2170
+ padding: 0;
2171
+ }
2172
+ .leadbot-flow {
2173
+ /* 66px = 42px avatar + 8px gap + 16px padding */
2174
+ }
2175
+ .leadbot-flow .leadbot-right .leadbot-html-embed {
2176
+ margin-left: 66px;
2177
+ }
2178
+ .leadbot-flow .leadbot-left .leadbot-html-embed {
2179
+ margin-right: 66px;
2180
+ }
2181
+ .leadbot-flow .leadbot-form {
2182
+ box-sizing: border-box;
2183
+ pointer-events: auto;
2184
+ }
2185
+ .leadbot-flow .leadbot-form * {
2186
+ pointer-events: auto;
2187
+ }
2188
+ .leadbot-flow .leadbot-bubble-whatsapp {
2189
+ background: #e5f6ed;
2190
+ color: #2563eb;
2191
+ }
2192
+ .leadbot-flow .leadbot-bubble-thankyou {
2193
+ background: #f3f3f3;
2194
+ color: #2563eb;
2195
+ }
2196
+ .leadbot-flow {
2197
+ /* ==========================================================================
2198
+ Options & Next Steps
2199
+ File: src/steps/button_step.js, src/widget.js
2200
+ Classes: leadbot-options, leadbot-next-steps, leadbot-option-btn
2201
+ ========================================================================== */
2202
+ }
2203
+ .leadbot-flow .leadbot-options {
2204
+ display: flex;
2205
+ flex-direction: row;
2206
+ flex-wrap: wrap;
2207
+ /* Widget panel hugs the right edge; an embedded flow sets the token to
2208
+ flex-start (see @leadbot/components `_flow.scss`). `--leadbot-flow-options-justify`
2209
+ overrides just the button row (e.g. space-evenly) without moving the cards. */
2210
+ justify-content: var(--leadbot-flow-options-justify, var(--leadbot-flow-align, flex-end));
2211
+ gap: 8px;
2212
+ background: none;
2213
+ max-width: var(--leadbot-flow-max-width);
2214
+ }
2215
+ .leadbot-flow .leadbot-right .leadbot-options {
2216
+ justify-content: flex-end;
2217
+ }
2218
+ .leadbot-flow .leadbot-left .leadbot-options {
2219
+ justify-content: flex-start;
2220
+ }
2221
+ .leadbot-flow .leadbot-next-steps {
2222
+ display: flex;
2223
+ flex-direction: column;
2224
+ gap: 8px;
2225
+ padding: 0;
2226
+ opacity: 0;
2227
+ max-height: 0;
2228
+ overflow: hidden;
2229
+ align-items: var(--leadbot-flow-align, flex-start);
2230
+ }
2231
+ .leadbot-flow .leadbot-right .leadbot-next-steps {
2232
+ align-items: flex-end;
2233
+ }
2234
+ .leadbot-flow .leadbot-next-steps-animate {
2235
+ animation: slideInNextSteps var(--animation-duration, 300ms) var(--leadbot-ease-appear) forwards;
2236
+ overflow: visible;
2237
+ }
2238
+ .leadbot-flow {
2239
+ /* ==========================================================================
2240
+ Option Buttons
2241
+ ========================================================================== */
2242
+ }
2243
+ .leadbot-flow .leadbot-option-btn {
2244
+ display: inline-flex;
2245
+ justify-content: center;
2246
+ align-items: center;
2247
+ background: var(--btn-bg, var(--leadbot-primary));
2248
+ color: var(--btn-color, #fff);
2249
+ border: 1px solid var(--btn-bg, var(--leadbot-primary));
2250
+ padding: 8px 16px;
2251
+ border-radius: var(--leadbot-radius-md);
2252
+ font-size: 14px;
2253
+ cursor: pointer;
2254
+ transition: box-shadow var(--leadbot-duration-fast) var(--leadbot-ease-interactive), transform var(--leadbot-duration-fast) var(--leadbot-ease-interactive);
2255
+ box-shadow: var(--leadbot-shadow-sm);
2256
+ position: relative;
2257
+ max-width: var(--leadbot-flow-max-width);
2258
+ /* Set --leadbot-flow-option-grow to 1 to let buttons fill the row. */
2259
+ flex: var(--leadbot-flow-option-grow, 0) 1 auto;
2260
+ line-height: 1.4;
2261
+ white-space: normal;
2262
+ word-wrap: break-word;
2263
+ overflow-wrap: break-word;
2264
+ box-sizing: border-box;
2265
+ }
2266
+ .leadbot-flow .leadbot-option-btn strong {
2267
+ font-weight: 700;
2268
+ }
2269
+ .leadbot-flow .leadbot-option-btn-icon {
2270
+ display: inline-flex;
2271
+ align-items: center;
2272
+ justify-content: center;
2273
+ margin-right: 8px;
2274
+ width: 16px;
2275
+ height: 16px;
2276
+ flex-shrink: 0;
2277
+ }
2278
+ .leadbot-flow .leadbot-option-btn-icon svg {
2279
+ width: 100%;
2280
+ height: 100%;
2281
+ }
2282
+ .leadbot-flow .leadbot-option-btn-icon-badge {
2283
+ width: 22px;
2284
+ height: 22px;
2285
+ border-radius: 50%;
2286
+ background: var(--leadbot-primary);
2287
+ color: #fff;
2288
+ }
2289
+ .leadbot-flow .leadbot-option-btn-icon-badge svg {
2290
+ width: 12px;
2291
+ height: 12px;
2292
+ }
2293
+ .leadbot-flow .leadbot-option-btn:hover {
2294
+ box-shadow: var(--leadbot-shadow-md);
2295
+ transform: translateY(-2px);
2296
+ }
2297
+ .leadbot-flow {
2298
+ /* Secondary buttons (white background) */
2299
+ }
2300
+ .leadbot-flow .leadbot-option-btn-secondary {
2301
+ background: #fff;
2302
+ color: #161615;
2303
+ border-color: #f4f3f1;
2304
+ }
2305
+ .leadbot-flow .leadbot-option-disabled {
2306
+ opacity: 0.5;
2307
+ cursor: not-allowed !important;
2308
+ pointer-events: none;
2309
+ }
2310
+ .leadbot-flow {
2311
+ /* History indicator - shows which option the user selected */
2312
+ }
2313
+ .leadbot-flow .leadbot-option-selected {
2314
+ background: #7a7a79 !important;
2315
+ color: #fff !important;
2316
+ border-color: #7a7a79 !important;
2317
+ }
2318
+ .leadbot-flow .leadbot-datepicker {
2319
+ position: relative;
2320
+ }
2321
+ .leadbot-flow .leadbot-datepicker.has-clear .leadbot-datepicker-input {
2322
+ padding-right: 38px;
2323
+ }
2324
+ .leadbot-flow .leadbot-datepicker-icon {
2325
+ position: absolute;
2326
+ top: 50%;
2327
+ left: 12px;
2328
+ display: flex;
2329
+ align-items: center;
2330
+ justify-content: center;
2331
+ color: #888;
2332
+ pointer-events: none;
2333
+ transform: translateY(-50%);
2334
+ }
2335
+ .leadbot-flow .leadbot-field input.leadbot-datepicker-input {
2336
+ padding-left: 38px;
2337
+ cursor: pointer;
2338
+ caret-color: transparent;
2339
+ }
2340
+ .leadbot-flow .leadbot-datepicker-clear {
2341
+ position: absolute;
2342
+ top: 50%;
2343
+ right: 8px;
2344
+ display: flex;
2345
+ align-items: center;
2346
+ justify-content: center;
2347
+ width: 24px;
2348
+ height: 24px;
2349
+ padding: 0;
2350
+ border: none;
2351
+ border-radius: 50%;
2352
+ background: transparent;
2353
+ color: #777;
2354
+ font-size: 18px;
2355
+ line-height: 1;
2356
+ transform: translateY(-50%);
2357
+ cursor: pointer;
2358
+ }
2359
+ .leadbot-flow .leadbot-datepicker-clear:hover {
2360
+ background: #f0f0f0;
2361
+ color: #333;
2362
+ }
2363
+ .leadbot-flow .leadbot-datepicker-panel,
2364
+ .leadbot-flow .leadbot-timepicker-panel {
2365
+ position: fixed;
2366
+ z-index: 30;
2367
+ box-sizing: border-box;
2368
+ padding: 10px;
2369
+ border: 1px solid #ddd;
2370
+ border-radius: var(--leadbot-radius-md);
2371
+ background: #fff;
2372
+ box-shadow: 0 8px 28px rgba(0, 0, 0, 0.18);
2373
+ transform-origin: top center;
2374
+ animation: leadbot-datepicker-pop var(--leadbot-duration-fast) var(--leadbot-ease-appear) backwards;
2375
+ }
2376
+ .leadbot-flow .leadbot-datepicker-panel.is-above,
2377
+ .leadbot-flow .leadbot-timepicker-panel.is-above {
2378
+ transform-origin: bottom center;
2379
+ }
2380
+ .leadbot-flow .leadbot-datepicker-header {
2381
+ display: flex;
2382
+ align-items: center;
2383
+ justify-content: space-between;
2384
+ margin-bottom: 6px;
2385
+ }
2386
+ .leadbot-flow .leadbot-datepicker-month {
2387
+ padding: 4px 10px;
2388
+ border: none;
2389
+ border-radius: var(--leadbot-radius-sm);
2390
+ background: none;
2391
+ font-size: 14px;
2392
+ font-family: inherit;
2393
+ font-weight: 600;
2394
+ color: inherit;
2395
+ text-transform: capitalize;
2396
+ cursor: pointer;
2397
+ }
2398
+ .leadbot-flow .leadbot-datepicker-month:hover {
2399
+ background: #f0f0f0;
2400
+ }
2401
+ .leadbot-flow .leadbot-datepicker-years {
2402
+ display: grid;
2403
+ grid-template-columns: repeat(4, 1fr);
2404
+ gap: 2px;
2405
+ }
2406
+ .leadbot-flow .leadbot-datepicker-year {
2407
+ padding: 10px 0;
2408
+ border: none;
2409
+ border-radius: var(--leadbot-radius-sm);
2410
+ background: none;
2411
+ font-size: 13px;
2412
+ font-family: inherit;
2413
+ font-variant-numeric: tabular-nums;
2414
+ color: inherit;
2415
+ text-align: center;
2416
+ cursor: pointer;
2417
+ }
2418
+ .leadbot-flow .leadbot-datepicker-year:hover {
2419
+ background: #f0f0f0;
2420
+ }
2421
+ .leadbot-flow .leadbot-datepicker-year.is-selected {
2422
+ background: var(--leadbot-primary);
2423
+ color: #fff;
2424
+ font-weight: 600;
2425
+ }
2426
+ .leadbot-flow .leadbot-datepicker-nav {
2427
+ display: flex;
2428
+ align-items: center;
2429
+ justify-content: center;
2430
+ padding: 6px;
2431
+ border: none;
2432
+ border-radius: var(--leadbot-radius-sm);
2433
+ background: none;
2434
+ color: #555;
2435
+ cursor: pointer;
2436
+ }
2437
+ .leadbot-flow .leadbot-datepicker-nav:hover {
2438
+ background: #f0f0f0;
2439
+ }
2440
+ .leadbot-flow .leadbot-datepicker-weekdays,
2441
+ .leadbot-flow .leadbot-datepicker-grid {
2442
+ display: grid;
2443
+ grid-template-columns: repeat(7, 1fr);
2444
+ gap: 2px;
2445
+ }
2446
+ .leadbot-flow .leadbot-datepicker-weekdays span {
2447
+ padding: 4px 0;
2448
+ font-size: 11px;
2449
+ color: #888;
2450
+ text-align: center;
2451
+ text-transform: capitalize;
2452
+ }
2453
+ .leadbot-flow .leadbot-datepicker-day {
2454
+ display: flex;
2455
+ align-items: center;
2456
+ justify-content: center;
2457
+ aspect-ratio: 1;
2458
+ border: none;
2459
+ border-radius: 50%;
2460
+ background: none;
2461
+ font-size: 13px;
2462
+ font-family: inherit;
2463
+ color: inherit;
2464
+ cursor: pointer;
2465
+ }
2466
+ .leadbot-flow .leadbot-datepicker-day:hover {
2467
+ background: #f0f0f0;
2468
+ }
2469
+ .leadbot-flow .leadbot-datepicker-day.is-today {
2470
+ font-weight: 700;
2471
+ color: var(--leadbot-primary);
2472
+ }
2473
+ .leadbot-flow .leadbot-datepicker-day.is-selected {
2474
+ background: var(--leadbot-primary);
2475
+ color: #fff;
2476
+ }
2477
+ .leadbot-flow .leadbot-datepicker-blank {
2478
+ display: block;
2479
+ aspect-ratio: 1;
2480
+ }
2481
+ .leadbot-flow .leadbot-timepicker {
2482
+ position: relative;
2483
+ }
2484
+ .leadbot-flow .leadbot-timepicker-icon {
2485
+ position: absolute;
2486
+ top: 50%;
2487
+ left: 12px;
2488
+ display: flex;
2489
+ align-items: center;
2490
+ justify-content: center;
2491
+ color: #888;
2492
+ pointer-events: none;
2493
+ transform: translateY(-50%);
2494
+ }
2495
+ .leadbot-flow .leadbot-field input.leadbot-timepicker-input {
2496
+ padding-left: 38px;
2497
+ cursor: pointer;
2498
+ caret-color: transparent;
2499
+ }
2500
+ .leadbot-flow .leadbot-timepicker.has-clear .leadbot-timepicker-input {
2501
+ padding-right: 38px;
2502
+ }
2503
+ .leadbot-flow .leadbot-timepicker-clear {
2504
+ position: absolute;
2505
+ top: 50%;
2506
+ right: 8px;
2507
+ display: flex;
2508
+ align-items: center;
2509
+ justify-content: center;
2510
+ width: 24px;
2511
+ height: 24px;
2512
+ padding: 0;
2513
+ border: none;
2514
+ border-radius: 50%;
2515
+ background: transparent;
2516
+ color: #777;
2517
+ font-size: 18px;
2518
+ line-height: 1;
2519
+ transform: translateY(-50%);
2520
+ cursor: pointer;
2521
+ }
2522
+ .leadbot-flow .leadbot-timepicker-clear:hover {
2523
+ background: #f0f0f0;
2524
+ color: #333;
2525
+ }
2526
+ .leadbot-flow .leadbot-timepicker-columns {
2527
+ display: flex;
2528
+ align-items: stretch;
2529
+ gap: 4px;
2530
+ height: 180px;
2531
+ }
2532
+ .leadbot-flow .leadbot-timepicker-columns-separator {
2533
+ display: flex;
2534
+ align-items: center;
2535
+ color: #bbb;
2536
+ font-size: 16px;
2537
+ font-weight: 700;
2538
+ }
2539
+ .leadbot-flow .leadbot-timepicker-column {
2540
+ display: flex;
2541
+ flex: 1;
2542
+ flex-direction: column;
2543
+ gap: 2px;
2544
+ overflow-y: auto;
2545
+ scroll-behavior: smooth;
2546
+ scrollbar-width: thin;
2547
+ }
2548
+ .leadbot-flow .leadbot-timepicker-column::-webkit-scrollbar {
2549
+ width: 6px;
2550
+ }
2551
+ .leadbot-flow .leadbot-timepicker-column::-webkit-scrollbar-thumb {
2552
+ border-radius: 3px;
2553
+ background: #d8d8d8;
2554
+ }
2555
+ .leadbot-flow .leadbot-timepicker-option {
2556
+ flex: 0 0 auto;
2557
+ padding: 8px 0;
2558
+ border: none;
2559
+ border-radius: var(--leadbot-radius-sm);
2560
+ background: none;
2561
+ font-size: 14px;
2562
+ font-family: inherit;
2563
+ font-variant-numeric: tabular-nums;
2564
+ color: inherit;
2565
+ text-align: center;
2566
+ cursor: pointer;
2567
+ }
2568
+ .leadbot-flow .leadbot-timepicker-option:hover {
2569
+ background: #f0f0f0;
2570
+ }
2571
+ .leadbot-flow .leadbot-timepicker-option.is-selected {
2572
+ background: var(--leadbot-primary);
2573
+ color: #fff;
2574
+ font-weight: 600;
2575
+ }
2576
+ .leadbot-flow {
2577
+ /* ==========================================================================
2578
+ Embed Content
2579
+ ========================================================================== */
2580
+ }
2581
+ .leadbot-flow .leadbot-embed-content {
2582
+ display: flex;
2583
+ justify-content: center;
2584
+ align-items: center;
2585
+ position: relative;
2586
+ min-height: 300px;
2587
+ border-radius: var(--leadbot-radius-card);
2588
+ background: linear-gradient(110deg, #f0f0f0 8%, #f8f8f8 18%, #f0f0f0 33%);
2589
+ background-size: 200% 100%;
2590
+ animation: leadbot-embed-shimmer 1.5s linear infinite;
2591
+ }
2592
+ .leadbot-flow .leadbot-embed-loaded .leadbot-embed-content {
2593
+ background: none;
2594
+ animation: none;
2595
+ min-height: 0;
2596
+ }
2597
+ @keyframes leadbot-embed-shimmer {
2598
+ 0% {
2599
+ background-position: 200% 0;
2600
+ }
2601
+ 100% {
2602
+ background-position: -200% 0;
2603
+ }
2604
+ }
2605
+ .leadbot-flow .leadbot-embed-content iframe {
2606
+ width: 100%;
2607
+ min-height: 300px;
2608
+ border-radius: var(--leadbot-radius-card);
2609
+ border: none;
2610
+ box-shadow: var(--leadbot-shadow-sm);
2611
+ opacity: 0;
2612
+ transition: opacity var(--leadbot-duration-normal) var(--leadbot-ease-appear);
2613
+ }
2614
+ .leadbot-flow .leadbot-embed-loaded .leadbot-embed-content iframe {
2615
+ opacity: 1;
2616
+ }
2617
+ .leadbot-flow .leadbot-embed-content * {
2618
+ max-width: 100%;
2619
+ }
2620
+ .leadbot-flow {
2621
+ /* ==========================================================================
2622
+ Powered By
2623
+ ========================================================================== */
2624
+ }
2625
+ .leadbot-flow .leadbot-powered-by {
2626
+ font-size: 10px;
2627
+ margin-top: 16px;
2628
+ font-family: inherit;
2629
+ font-weight: 400;
2630
+ padding: 0;
2631
+ width: 100%;
2632
+ display: flex;
2633
+ justify-content: flex-end;
2634
+ align-items: center;
2635
+ gap: 4px;
2636
+ }
2637
+ .leadbot-flow .leadbot-powered-by--right {
2638
+ justify-content: flex-end;
2639
+ }
2640
+ .leadbot-flow .leadbot-powered-by--center {
2641
+ justify-content: center;
2642
+ }
2643
+ .leadbot-flow .leadbot-powered-by a {
2644
+ display: inline-flex;
2645
+ align-items: center;
2646
+ gap: 3px;
2647
+ transition: opacity 0.2s ease;
2648
+ text-decoration: none;
2649
+ color: #111827;
2650
+ }
2651
+ .leadbot-flow .leadbot-powered-by a:hover {
2652
+ opacity: 0.7;
2653
+ }
2654
+ .leadbot-flow .leadbot-powered-by > span:not(.leadbot-powered-by__logo) {
2655
+ color: #9ca3af;
2656
+ }
2657
+ .leadbot-flow .leadbot-powered-by__logo {
2658
+ display: inline-flex;
2659
+ align-items: center;
2660
+ line-height: 0;
2661
+ color: #111827;
2662
+ }
2663
+ .leadbot-flow .leadbot-powered-by__logo svg {
2664
+ height: 14px;
2665
+ width: auto;
2666
+ }
2667
+ .leadbot-flow .leadbot-powered-by svg,
2668
+ .leadbot-flow .leadbot-powered-by img {
2669
+ display: block;
2670
+ }
2671
+ .leadbot-flow .leadbot-powered-by img {
2672
+ height: 20px;
2673
+ width: auto;
2674
+ }
2675
+ .leadbot-flow .leadbot-steps-container {
2676
+ display: flex;
2677
+ flex-direction: column;
2678
+ justify-content: flex-start;
2679
+ align-items: var(--leadbot-flow-align);
2680
+ gap: 12px;
2681
+ width: 100%;
2682
+ box-sizing: border-box;
2683
+ }
2684
+ .leadbot-flow .leadbot-step-wrapper {
2685
+ display: flex;
2686
+ flex-direction: column;
2687
+ align-items: var(--leadbot-flow-align);
2688
+ gap: 12px;
2689
+ }
2690
+ .leadbot-flow .leadbot-message-row > .leadbot-card {
2691
+ flex: 1 1 auto;
2692
+ }
2693
+ .leadbot-flow .leadbot-step-current {
2694
+ z-index: 2;
2695
+ }
2696
+ .leadbot-flow .leadbot-step-typing {
2697
+ display: inline-flex;
2698
+ align-items: center;
2699
+ padding: 10px;
2700
+ background: #b0b8c4;
2701
+ border-radius: var(--leadbot-radius-pill);
2702
+ box-shadow: var(--leadbot-shadow-sm);
2703
+ animation: fadeSlide var(--leadbot-duration-fast) var(--leadbot-ease-appear) backwards;
2704
+ }
2705
+ .leadbot-flow .leadbot-step-typing-dots {
2706
+ display: flex;
2707
+ gap: 5px;
2708
+ align-items: center;
2709
+ }
2710
+ .leadbot-flow .leadbot-step-typing-dots span {
2711
+ width: 6px;
2712
+ height: 6px;
2713
+ background: #fff;
2714
+ border-radius: 50%;
2715
+ animation: leadbot-typing-bounce 1.4s infinite var(--leadbot-ease-loop);
2716
+ }
2717
+ .leadbot-flow .leadbot-step-typing-dots span:nth-child(1) {
2718
+ animation-delay: -0.32s;
2719
+ }
2720
+ .leadbot-flow .leadbot-step-typing-dots span:nth-child(2) {
2721
+ animation-delay: -0.16s;
2722
+ }
2723
+ }