Sanjay kumar K commited on
Commit
2de8f87
·
1 Parent(s): 4956cd6

Refine chatbot for mobile app focus

Browse files
README.md CHANGED
@@ -53,17 +53,16 @@ Add this before the closing `</body>` tag on your website:
53
  window.LookupITChatbotConfig = {
54
  apiBase: "https://sanjay8013-chatbot-lookupit.hf.space",
55
  title: "LookUP IT Assistant",
56
- subtitle: "Expert consulting services",
57
  accentColor: "#db3f46",
58
- welcomeMessage: "Welcome to LookUP IT Solutions. I can help you explore services, discuss a business requirement, or connect you with the team for a consultation.",
59
  quickReplies: [
60
- "Explore services",
61
- "Web application development",
62
- "AI & machine learning",
63
- "Book a consultation",
64
- "Share contact details"
65
  ],
66
- placeholder: "Tell us what you need..."
67
  };
68
  </script>
69
  <script
 
53
  window.LookupITChatbotConfig = {
54
  apiBase: "https://sanjay8013-chatbot-lookupit.hf.space",
55
  title: "LookUP IT Assistant",
56
+ subtitle: "Mobile app development",
57
  accentColor: "#db3f46",
58
+ welcomeMessage: "Welcome to LookUP IT Solutions. I can help you plan an iOS, Android, or Flutter app, discuss features, and connect you with our mobile app team.",
59
  quickReplies: [
60
+ "Build a mobile app",
61
+ "Flutter or native apps",
62
+ "Need iOS and Android",
63
+ "Get an app quote"
 
64
  ],
65
+ placeholder: "Describe your app idea..."
66
  };
67
  </script>
68
  <script
lookupitsolutions-chatbot-context.txt CHANGED
@@ -1,6 +1,6 @@
1
  You are the AI assistant for LookUP IT Solutions.
2
 
3
- Your job is to help website visitors understand the company, its services, industries, technologies, delivery models, and how to get in touch. Stay focused on LookUP IT Solutions and keep answers concise, professional, and commercially useful.
4
 
5
  Website:
6
  - Main website: https://www.lookupitsolutions.com/
@@ -13,6 +13,11 @@ Company snapshot based on the live website:
13
  - The site positions the company as a technology partner for large, medium, and small-sized enterprises.
14
  - Primary website goal: qualified inquiries, consultations, and project discussions.
15
 
 
 
 
 
 
16
  Core services shown on the website:
17
  - Web application development
18
  - Mobile app development
@@ -29,6 +34,7 @@ Core services shown on the website:
29
 
30
  What the website says about selected services:
31
  - Web application solutions focus on custom web applications, automation of business processes, improved collaboration, streamlined operations, and secure, scalable delivery.
 
32
  - Cloud solutions include cloud consulting, cloud migration, cloud security, and cloud backup and recovery.
33
  - AI and machine learning is presented as a major capability in the site navigation and services sections.
34
  - Offshore development and maintenance/support are presented as ongoing delivery and support options.
@@ -85,8 +91,9 @@ Contact information shown on the website:
85
 
86
  How to answer:
87
  - Greet warmly, then guide the visitor toward the right service or next step.
88
- - If the user asks what the company does, summarize the main services in plain business language.
89
  - If the user asks about a service, explain it in business terms, mention relevant outcomes, and invite them to discuss requirements.
 
90
  - If the user asks about industries or technologies, answer from the lists above.
91
  - If the user asks for contact details, give the company contact details directly.
92
  - If the user asks for pricing, exact cost, or project timeline, explain that it depends on scope and requirements, then offer to connect them with the team.
 
1
  You are the AI assistant for LookUP IT Solutions.
2
 
3
+ Your job is to help website visitors understand the company, its services, industries, technologies, delivery models, and how to get in touch. Lead conversations toward mobile app development when the user's request is broad or exploratory. Stay focused on LookUP IT Solutions and keep answers concise, professional, and commercially useful.
4
 
5
  Website:
6
  - Main website: https://www.lookupitsolutions.com/
 
13
  - The site positions the company as a technology partner for large, medium, and small-sized enterprises.
14
  - Primary website goal: qualified inquiries, consultations, and project discussions.
15
 
16
+ Primary focus for this bot:
17
+ - Treat mobile app development as the lead service when users ask broad questions such as "what do you do" or "how can you help?"
18
+ - Help visitors frame app requirements around platform choice, target users, core features, integrations, launch goals, and ongoing support.
19
+ - Position mobile delivery in business terms such as customer engagement, field operations, internal workflow improvement, and scalable digital products.
20
+
21
  Core services shown on the website:
22
  - Web application development
23
  - Mobile app development
 
34
 
35
  What the website says about selected services:
36
  - Web application solutions focus on custom web applications, automation of business processes, improved collaboration, streamlined operations, and secure, scalable delivery.
37
+ - Mobile app development should be explained around iOS, Android, Flutter, enterprise mobility, customer-facing apps, and operational efficiency.
38
  - Cloud solutions include cloud consulting, cloud migration, cloud security, and cloud backup and recovery.
39
  - AI and machine learning is presented as a major capability in the site navigation and services sections.
40
  - Offshore development and maintenance/support are presented as ongoing delivery and support options.
 
91
 
92
  How to answer:
93
  - Greet warmly, then guide the visitor toward the right service or next step.
94
+ - If the user asks what the company does, lead with mobile app development first, then summarize the other main services in plain business language.
95
  - If the user asks about a service, explain it in business terms, mention relevant outcomes, and invite them to discuss requirements.
96
+ - If the user is exploring a mobile app idea, ask concise follow-up questions about platform, audience, features, integrations, and whether they need native or cross-platform delivery.
97
  - If the user asks about industries or technologies, answer from the lists above.
98
  - If the user asks for contact details, give the company contact details directly.
99
  - If the user asks for pricing, exact cost, or project timeline, explain that it depends on scope and requirements, then offer to connect them with the team.
static/css/chatbot.css CHANGED
@@ -8,7 +8,7 @@
8
  --lookupit-coral: #c42f3e;
9
  --lookupit-coral-deep: #b51f34;
10
  --lookupit-coral-soft: #fff1f3;
11
- --lookupit-shadow: 0 24px 64px rgba(181, 31, 52, 0.18);
12
  }
13
 
14
  *, *::before, *::after {
@@ -29,23 +29,23 @@ body {
29
 
30
  #chat-widget {
31
  position: fixed;
32
- right: 26px;
33
- bottom: 26px;
34
  z-index: 9999;
35
  font-family: inherit;
36
  }
37
 
38
  #chat-toggle {
39
- width: 54px;
40
- height: 54px;
41
  border: 0;
42
- border-radius: 18px;
43
  background:
44
  radial-gradient(circle at 28% 22%, rgba(255, 255, 255, 0.28), transparent 28%),
45
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 52%, var(--lookupit-coral-deep) 100%);
46
  color: #fff;
47
  cursor: pointer;
48
- box-shadow: 0 18px 32px rgba(219, 63, 70, 0.28);
49
  display: flex;
50
  align-items: center;
51
  justify-content: center;
@@ -55,8 +55,8 @@ body {
55
  }
56
 
57
  #chat-toggle:hover {
58
- transform: translateY(-3px) scale(1.02);
59
- box-shadow: 0 34px 52px rgba(219, 63, 70, 0.34);
60
  }
61
 
62
  #chat-toggle::before {
@@ -64,12 +64,12 @@ body {
64
  position: absolute;
65
  inset: 6px;
66
  border: 1px solid rgba(255, 255, 255, 0.22);
67
- border-radius: 13px;
68
  }
69
 
70
  #chat-toggle svg {
71
- width: 22px;
72
- height: 22px;
73
  color: #fff;
74
  position: relative;
75
  z-index: 1;
@@ -79,13 +79,13 @@ body {
79
  position: absolute;
80
  top: -5px;
81
  right: -5px;
82
- min-width: 22px;
83
- height: 22px;
84
- padding: 0 6px;
85
  border-radius: 999px;
86
  background: var(--lookupit-coral-deep);
87
  color: #fff;
88
- font-size: 11px;
89
  font-weight: 800;
90
  display: flex;
91
  align-items: center;
@@ -97,10 +97,10 @@ body {
97
  #chat-window {
98
  position: absolute;
99
  right: 0;
100
- bottom: 72px;
101
- width: 340px;
102
- max-height: min(600px, calc(100vh - 100px));
103
- border-radius: 34px;
104
  background: linear-gradient(180deg, rgba(255, 250, 251, 0.98) 0%, rgba(255, 255, 255, 0.99) 100%);
105
  border: 1px solid rgba(217, 58, 73, 0.18);
106
  box-shadow: var(--lookupit-shadow);
@@ -115,13 +115,13 @@ body {
115
  #chat-window::before {
116
  content: "";
117
  position: absolute;
118
- top: -26px;
119
- right: -20px;
120
- width: 180px;
121
- height: 180px;
122
  background:
123
  radial-gradient(circle, rgba(217, 58, 73, 0.12) 0 22%, transparent 23% 100%);
124
- background-size: 22px 22px;
125
  opacity: 0.8;
126
  pointer-events: none;
127
  }
@@ -129,11 +129,11 @@ body {
129
  #chat-window::after {
130
  content: "";
131
  position: absolute;
132
- left: -56px;
133
- top: 112px;
134
- width: 150px;
135
- height: 150px;
136
- border: 14px solid rgba(217, 58, 73, 0.24);
137
  border-right-color: transparent;
138
  border-top-color: transparent;
139
  border-radius: 999px;
@@ -150,11 +150,11 @@ body {
150
 
151
  .chat-header {
152
  position: relative;
153
- padding: 14px 16px 12px;
154
  display: flex;
155
  align-items: flex-start;
156
  justify-content: space-between;
157
- gap: 10px;
158
  border-bottom: 1px solid rgba(217, 58, 73, 0.16);
159
  background: linear-gradient(180deg, rgba(255, 243, 245, 0.94) 0%, rgba(255, 255, 255, 0.94) 100%);
160
  z-index: 1;
@@ -163,13 +163,13 @@ body {
163
  .chat-header-info {
164
  display: flex;
165
  align-items: flex-start;
166
- gap: 10px;
167
  }
168
 
169
  .avatar {
170
- width: 40px;
171
- height: 40px;
172
- border-radius: 13px;
173
  flex-shrink: 0;
174
  display: flex;
175
  align-items: center;
@@ -177,17 +177,17 @@ body {
177
  background:
178
  radial-gradient(circle at 26% 22%, rgba(255, 255, 255, 0.34), transparent 24%),
179
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 58%, var(--lookupit-coral-deep) 100%);
180
- box-shadow: 0 10px 20px rgba(219, 63, 70, 0.22);
181
  }
182
 
183
  .avatar svg {
184
- width: 20px;
185
- height: 20px;
186
  color: #ffffff;
187
  }
188
 
189
  .chat-name {
190
- font-size: 14px;
191
  line-height: 1.1;
192
  font-weight: 800;
193
  letter-spacing: -0.03em;
@@ -195,41 +195,41 @@ body {
195
  }
196
 
197
  .chat-status {
198
- margin-top: 5px;
199
  display: inline-flex;
200
  align-items: center;
201
- gap: 6px;
202
- padding: 4px 9px;
203
  border-radius: 999px;
204
  background: var(--lookupit-coral-soft);
205
  color: var(--lookupit-coral-deep);
206
- font-size: 11px;
207
  font-weight: 700;
208
  line-height: 1;
209
  }
210
 
211
  .dot {
212
- width: 8px;
213
- height: 8px;
214
  border-radius: 50%;
215
  background: var(--lookupit-coral);
216
  box-shadow: 0 0 0 4px rgba(219, 63, 70, 0.14);
217
  }
218
 
219
  #chat-close-btn {
220
- width: 30px;
221
- height: 30px;
222
  border: 1px solid rgba(217, 58, 73, 0.16);
223
- border-radius: 10px;
224
  background: rgba(255, 255, 255, 0.9);
225
  color: var(--lookupit-ink);
226
  cursor: pointer;
227
  display: flex;
228
  align-items: center;
229
  justify-content: center;
230
- font-size: 14px;
231
  font-weight: 700;
232
- box-shadow: 0 6px 14px rgba(181, 31, 52, 0.08);
233
  transition: transform 160ms ease, border-color 160ms ease, color 160ms ease;
234
  }
235
 
@@ -243,10 +243,10 @@ body {
243
  position: relative;
244
  flex: 1;
245
  overflow-y: auto;
246
- padding: 12px 14px 10px;
247
  display: flex;
248
  flex-direction: column;
249
- gap: 10px;
250
  scroll-behavior: smooth;
251
  }
252
 
@@ -260,10 +260,10 @@ body {
260
  }
261
 
262
  .msg {
263
- max-width: 86%;
264
  display: flex;
265
  flex-direction: column;
266
- gap: 6px;
267
  animation: lookupitFadeSlide 220ms ease;
268
  }
269
 
@@ -288,10 +288,10 @@ body {
288
 
289
  .msg-bubble {
290
  position: relative;
291
- padding: 10px 13px;
292
- border-radius: 18px;
293
- font-size: 13px;
294
- line-height: 1.55;
295
  word-break: break-word;
296
  }
297
 
@@ -329,8 +329,8 @@ body {
329
  }
330
 
331
  .msg-time {
332
- padding: 0 6px;
333
- font-size: 11px;
334
  font-weight: 700;
335
  letter-spacing: 0.02em;
336
  color: var(--lookupit-muted);
@@ -343,21 +343,21 @@ body {
343
  .quick-replies {
344
  display: flex;
345
  flex-wrap: wrap;
346
- gap: 8px;
347
- margin-top: 8px;
348
  }
349
 
350
  .quick-reply {
351
- padding: 8px 13px;
352
  border-radius: 999px;
353
  border: 1px solid rgba(217, 58, 73, 0.22);
354
  background: linear-gradient(180deg, #ffffff 0%, #fff4f6 100%);
355
  color: var(--lookupit-ink);
356
- font-size: 12px;
357
  font-weight: 700;
358
  line-height: 1.2;
359
  cursor: pointer;
360
- box-shadow: 0 10px 18px rgba(181, 31, 52, 0.06);
361
  transition: transform 150ms ease, border-color 150ms ease, color 150ms ease;
362
  }
363
 
@@ -370,8 +370,8 @@ body {
370
  #typing-indicator {
371
  display: flex;
372
  align-items: center;
373
- gap: 7px;
374
- padding: 4px 24px 14px;
375
  }
376
 
377
  #typing-indicator.hidden {
@@ -379,8 +379,8 @@ body {
379
  }
380
 
381
  #typing-indicator span {
382
- width: 8px;
383
- height: 8px;
384
  border-radius: 50%;
385
  background: rgba(219, 63, 70, 0.42);
386
  animation: lookupitBounce 1s infinite ease-in-out;
@@ -404,10 +404,10 @@ body {
404
  }
405
 
406
  .chat-input-area {
407
- padding: 10px 12px 12px;
408
  display: flex;
409
  align-items: flex-end;
410
- gap: 8px;
411
  border-top: 1px solid rgba(217, 58, 73, 0.14);
412
  background:
413
  linear-gradient(180deg, rgba(255, 255, 255, 0.86) 0%, rgba(255, 245, 247, 0.98) 100%);
@@ -415,15 +415,15 @@ body {
415
 
416
  #chat-input {
417
  flex: 1;
418
- min-height: 42px;
419
- max-height: 96px;
420
- padding: 11px 13px;
421
- border-radius: 16px;
422
  border: 1px solid var(--lookupit-line);
423
  background: rgba(255, 255, 255, 0.94);
424
  color: var(--lookupit-ink);
425
  font: inherit;
426
- font-size: 13px;
427
  line-height: 1.5;
428
  outline: none;
429
  resize: none;
@@ -434,7 +434,7 @@ body {
434
 
435
  #chat-input:focus {
436
  border-color: rgba(219, 63, 70, 0.36);
437
- box-shadow: 0 0 0 4px rgba(219, 63, 70, 0.08);
438
  }
439
 
440
  #chat-input::placeholder {
@@ -442,10 +442,10 @@ body {
442
  }
443
 
444
  #send-btn {
445
- width: 42px;
446
- height: 42px;
447
  border: 0;
448
- border-radius: 14px;
449
  background:
450
  radial-gradient(circle at 30% 22%, rgba(255, 255, 255, 0.28), transparent 28%),
451
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 58%, var(--lookupit-coral-deep) 100%);
@@ -455,13 +455,13 @@ body {
455
  align-items: center;
456
  justify-content: center;
457
  flex-shrink: 0;
458
- box-shadow: 0 14px 24px rgba(219, 63, 70, 0.24);
459
  transition: transform 150ms ease, box-shadow 150ms ease;
460
  }
461
 
462
  #send-btn:hover {
463
  transform: translateY(-1px);
464
- box-shadow: 0 24px 40px rgba(219, 63, 70, 0.3);
465
  }
466
 
467
  #send-btn:disabled {
@@ -471,23 +471,23 @@ body {
471
  }
472
 
473
  #send-btn svg {
474
- width: 16px;
475
- height: 16px;
476
  color: #fff;
477
  }
478
 
479
  @media (max-width: 640px) {
480
  #chat-widget {
481
- right: 12px;
482
- bottom: 12px;
483
  }
484
 
485
  #chat-window {
486
- width: min(100vw - 16px, 340px);
487
- right: -2px;
488
- bottom: 70px;
489
- max-height: min(75vh, 560px);
490
- border-radius: 24px;
491
  }
492
  }
493
  @keyframes chatbotPulse {
@@ -502,9 +502,9 @@ body {
502
  }
503
  }
504
 
505
- .lookupit-toggle {
506
  animation: chatbotPulse 2s infinite;
507
  }
508
- .lookupit-toggle:hover {
509
  transform: scale(1.08);
510
  }
 
8
  --lookupit-coral: #c42f3e;
9
  --lookupit-coral-deep: #b51f34;
10
  --lookupit-coral-soft: #fff1f3;
11
+ --lookupit-shadow: 0 18px 44px rgba(181, 31, 52, 0.18);
12
  }
13
 
14
  *, *::before, *::after {
 
29
 
30
  #chat-widget {
31
  position: fixed;
32
+ right: 18px;
33
+ bottom: 18px;
34
  z-index: 9999;
35
  font-family: inherit;
36
  }
37
 
38
  #chat-toggle {
39
+ width: 46px;
40
+ height: 46px;
41
  border: 0;
42
+ border-radius: 16px;
43
  background:
44
  radial-gradient(circle at 28% 22%, rgba(255, 255, 255, 0.28), transparent 28%),
45
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 52%, var(--lookupit-coral-deep) 100%);
46
  color: #fff;
47
  cursor: pointer;
48
+ box-shadow: 0 12px 24px rgba(219, 63, 70, 0.26);
49
  display: flex;
50
  align-items: center;
51
  justify-content: center;
 
55
  }
56
 
57
  #chat-toggle:hover {
58
+ transform: translateY(-2px) scale(1.02);
59
+ box-shadow: 0 16px 28px rgba(219, 63, 70, 0.3);
60
  }
61
 
62
  #chat-toggle::before {
 
64
  position: absolute;
65
  inset: 6px;
66
  border: 1px solid rgba(255, 255, 255, 0.22);
67
+ border-radius: 11px;
68
  }
69
 
70
  #chat-toggle svg {
71
+ width: 20px;
72
+ height: 20px;
73
  color: #fff;
74
  position: relative;
75
  z-index: 1;
 
79
  position: absolute;
80
  top: -5px;
81
  right: -5px;
82
+ min-width: 17px;
83
+ height: 17px;
84
+ padding: 0 4px;
85
  border-radius: 999px;
86
  background: var(--lookupit-coral-deep);
87
  color: #fff;
88
+ font-size: 9px;
89
  font-weight: 800;
90
  display: flex;
91
  align-items: center;
 
97
  #chat-window {
98
  position: absolute;
99
  right: 0;
100
+ bottom: 58px;
101
+ width: 308px;
102
+ max-height: min(500px, calc(100vh - 88px));
103
+ border-radius: 22px;
104
  background: linear-gradient(180deg, rgba(255, 250, 251, 0.98) 0%, rgba(255, 255, 255, 0.99) 100%);
105
  border: 1px solid rgba(217, 58, 73, 0.18);
106
  box-shadow: var(--lookupit-shadow);
 
115
  #chat-window::before {
116
  content: "";
117
  position: absolute;
118
+ top: -18px;
119
+ right: -16px;
120
+ width: 128px;
121
+ height: 128px;
122
  background:
123
  radial-gradient(circle, rgba(217, 58, 73, 0.12) 0 22%, transparent 23% 100%);
124
+ background-size: 18px 18px;
125
  opacity: 0.8;
126
  pointer-events: none;
127
  }
 
129
  #chat-window::after {
130
  content: "";
131
  position: absolute;
132
+ left: -36px;
133
+ top: 92px;
134
+ width: 104px;
135
+ height: 104px;
136
+ border: 10px solid rgba(217, 58, 73, 0.22);
137
  border-right-color: transparent;
138
  border-top-color: transparent;
139
  border-radius: 999px;
 
150
 
151
  .chat-header {
152
  position: relative;
153
+ padding: 12px 13px 10px;
154
  display: flex;
155
  align-items: flex-start;
156
  justify-content: space-between;
157
+ gap: 8px;
158
  border-bottom: 1px solid rgba(217, 58, 73, 0.16);
159
  background: linear-gradient(180deg, rgba(255, 243, 245, 0.94) 0%, rgba(255, 255, 255, 0.94) 100%);
160
  z-index: 1;
 
163
  .chat-header-info {
164
  display: flex;
165
  align-items: flex-start;
166
+ gap: 9px;
167
  }
168
 
169
  .avatar {
170
+ width: 34px;
171
+ height: 34px;
172
+ border-radius: 11px;
173
  flex-shrink: 0;
174
  display: flex;
175
  align-items: center;
 
177
  background:
178
  radial-gradient(circle at 26% 22%, rgba(255, 255, 255, 0.34), transparent 24%),
179
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 58%, var(--lookupit-coral-deep) 100%);
180
+ box-shadow: 0 6px 14px rgba(219, 63, 70, 0.22);
181
  }
182
 
183
  .avatar svg {
184
+ width: 18px;
185
+ height: 18px;
186
  color: #ffffff;
187
  }
188
 
189
  .chat-name {
190
+ font-size: 13px;
191
  line-height: 1.1;
192
  font-weight: 800;
193
  letter-spacing: -0.03em;
 
195
  }
196
 
197
  .chat-status {
198
+ margin-top: 3px;
199
  display: inline-flex;
200
  align-items: center;
201
+ gap: 4px;
202
+ padding: 4px 7px;
203
  border-radius: 999px;
204
  background: var(--lookupit-coral-soft);
205
  color: var(--lookupit-coral-deep);
206
+ font-size: 10px;
207
  font-weight: 700;
208
  line-height: 1;
209
  }
210
 
211
  .dot {
212
+ width: 5px;
213
+ height: 5px;
214
  border-radius: 50%;
215
  background: var(--lookupit-coral);
216
  box-shadow: 0 0 0 4px rgba(219, 63, 70, 0.14);
217
  }
218
 
219
  #chat-close-btn {
220
+ width: 28px;
221
+ height: 28px;
222
  border: 1px solid rgba(217, 58, 73, 0.16);
223
+ border-radius: 9px;
224
  background: rgba(255, 255, 255, 0.9);
225
  color: var(--lookupit-ink);
226
  cursor: pointer;
227
  display: flex;
228
  align-items: center;
229
  justify-content: center;
230
+ font-size: 13px;
231
  font-weight: 700;
232
+ box-shadow: 0 4px 8px rgba(181, 31, 52, 0.08);
233
  transition: transform 160ms ease, border-color 160ms ease, color 160ms ease;
234
  }
235
 
 
243
  position: relative;
244
  flex: 1;
245
  overflow-y: auto;
246
+ padding: 10px 11px 8px;
247
  display: flex;
248
  flex-direction: column;
249
+ gap: 8px;
250
  scroll-behavior: smooth;
251
  }
252
 
 
260
  }
261
 
262
  .msg {
263
+ max-width: 90%;
264
  display: flex;
265
  flex-direction: column;
266
+ gap: 5px;
267
  animation: lookupitFadeSlide 220ms ease;
268
  }
269
 
 
288
 
289
  .msg-bubble {
290
  position: relative;
291
+ padding: 9px 11px;
292
+ border-radius: 14px;
293
+ font-size: 12.5px;
294
+ line-height: 1.5;
295
  word-break: break-word;
296
  }
297
 
 
329
  }
330
 
331
  .msg-time {
332
+ padding: 0 4px;
333
+ font-size: 10px;
334
  font-weight: 700;
335
  letter-spacing: 0.02em;
336
  color: var(--lookupit-muted);
 
343
  .quick-replies {
344
  display: flex;
345
  flex-wrap: wrap;
346
+ gap: 6px;
347
+ margin-top: 6px;
348
  }
349
 
350
  .quick-reply {
351
+ padding: 6px 10px;
352
  border-radius: 999px;
353
  border: 1px solid rgba(217, 58, 73, 0.22);
354
  background: linear-gradient(180deg, #ffffff 0%, #fff4f6 100%);
355
  color: var(--lookupit-ink);
356
+ font-size: 10.5px;
357
  font-weight: 700;
358
  line-height: 1.2;
359
  cursor: pointer;
360
+ box-shadow: 0 4px 8px rgba(181, 31, 52, 0.06);
361
  transition: transform 150ms ease, border-color 150ms ease, color 150ms ease;
362
  }
363
 
 
370
  #typing-indicator {
371
  display: flex;
372
  align-items: center;
373
+ gap: 4px;
374
+ padding: 2px 13px 8px;
375
  }
376
 
377
  #typing-indicator.hidden {
 
379
  }
380
 
381
  #typing-indicator span {
382
+ width: 7px;
383
+ height: 7px;
384
  border-radius: 50%;
385
  background: rgba(219, 63, 70, 0.42);
386
  animation: lookupitBounce 1s infinite ease-in-out;
 
404
  }
405
 
406
  .chat-input-area {
407
+ padding: 8px 10px 10px;
408
  display: flex;
409
  align-items: flex-end;
410
+ gap: 7px;
411
  border-top: 1px solid rgba(217, 58, 73, 0.14);
412
  background:
413
  linear-gradient(180deg, rgba(255, 255, 255, 0.86) 0%, rgba(255, 245, 247, 0.98) 100%);
 
415
 
416
  #chat-input {
417
  flex: 1;
418
+ min-height: 38px;
419
+ max-height: 84px;
420
+ padding: 9px 11px;
421
+ border-radius: 14px;
422
  border: 1px solid var(--lookupit-line);
423
  background: rgba(255, 255, 255, 0.94);
424
  color: var(--lookupit-ink);
425
  font: inherit;
426
+ font-size: 12.5px;
427
  line-height: 1.5;
428
  outline: none;
429
  resize: none;
 
434
 
435
  #chat-input:focus {
436
  border-color: rgba(219, 63, 70, 0.36);
437
+ box-shadow: 0 0 0 2px rgba(219, 63, 70, 0.08);
438
  }
439
 
440
  #chat-input::placeholder {
 
442
  }
443
 
444
  #send-btn {
445
+ width: 38px;
446
+ height: 38px;
447
  border: 0;
448
+ border-radius: 12px;
449
  background:
450
  radial-gradient(circle at 30% 22%, rgba(255, 255, 255, 0.28), transparent 28%),
451
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 58%, var(--lookupit-coral-deep) 100%);
 
455
  align-items: center;
456
  justify-content: center;
457
  flex-shrink: 0;
458
+ box-shadow: 0 8px 16px rgba(219, 63, 70, 0.24);
459
  transition: transform 150ms ease, box-shadow 150ms ease;
460
  }
461
 
462
  #send-btn:hover {
463
  transform: translateY(-1px);
464
+ box-shadow: 0 10px 18px rgba(219, 63, 70, 0.28);
465
  }
466
 
467
  #send-btn:disabled {
 
471
  }
472
 
473
  #send-btn svg {
474
+ width: 15px;
475
+ height: 15px;
476
  color: #fff;
477
  }
478
 
479
  @media (max-width: 640px) {
480
  #chat-widget {
481
+ right: 10px;
482
+ bottom: 10px;
483
  }
484
 
485
  #chat-window {
486
+ width: min(calc(100vw - 16px), 294px);
487
+ right: 0;
488
+ bottom: 60px;
489
+ max-height: min(440px, calc(100vh - 84px));
490
+ border-radius: 20px;
491
  }
492
  }
493
  @keyframes chatbotPulse {
 
502
  }
503
  }
504
 
505
+ #chat-toggle {
506
  animation: chatbotPulse 2s infinite;
507
  }
508
+ #chat-toggle:hover {
509
  transform: scale(1.08);
510
  }
static/js/chatbot.js CHANGED
@@ -24,12 +24,17 @@
24
  return;
25
  }
26
 
 
 
 
 
 
27
  const QUICK_REPLIES = [
28
- "Explore services",
29
- "Web application development",
30
- "AI & machine learning",
31
- "Book a consultation",
32
- "Share contact details",
33
  ];
34
 
35
  // ── Typewriter engine ──────────────────────────────────────────────────────
@@ -301,7 +306,7 @@
301
  function showWelcome() {
302
  appendMessage(
303
  "bot",
304
- "Welcome to LookUP IT Solutions.\n\nI can help you explore services, discuss a business requirement, or connect you with the team for a consultation.",
305
  QUICK_REPLIES,
306
  );
307
  }
@@ -342,4 +347,4 @@ function setOpen(open) {
342
  } else {
343
  toggleButton.style.animation = "chatbotPulse 2s infinite";
344
  }
345
- }
 
24
  return;
25
  }
26
 
27
+ document.title = "Lookup IT Solutions - Mobile App Chatbot Demo";
28
+ closeBtn.innerHTML = "&times;";
29
+ inputEl.placeholder = "Describe your app idea...";
30
+ toggleBtn.setAttribute("aria-label", "Open mobile app chat");
31
+
32
  const QUICK_REPLIES = [
33
+ "Build a mobile app",
34
+ "Flutter or native apps",
35
+ "Need iOS and Android",
36
+ "Estimate my app project",
37
+ "Book an app consultation",
38
  ];
39
 
40
  // ── Typewriter engine ──────────────────────────────────────────────────────
 
306
  function showWelcome() {
307
  appendMessage(
308
  "bot",
309
+ "Welcome to LookUP IT Solutions.\n\nI can help you plan an iOS, Android, or Flutter app, discuss features, and connect you with our mobile app team.",
310
  QUICK_REPLIES,
311
  );
312
  }
 
347
  } else {
348
  toggleButton.style.animation = "chatbotPulse 2s infinite";
349
  }
350
+ }
static/js/embed.js CHANGED
@@ -12,18 +12,18 @@
12
  const defaultConfig = {
13
  apiBase: scriptOrigin,
14
  title: "LookUP IT Assistant",
15
- subtitle: "Expert consulting services",
16
  accentColor: "#db3f46",
17
  welcomeMessage:
18
- "👋 Hi! I'm the Lookup IT Solutions AI Assistant.\n\nI can help you learn about our services, get a custom quote, or connect you with our team. How can I help you today?",
19
  quickReplies: [
20
- "What services do you offer?",
21
- "Tell me about Cloud Solutions",
22
- "I need a Web App",
23
- "Get a free quote",
24
  ],
25
- placeholder: "Tell us what you need...",
26
- buttonLabel: "Open chat",
27
  position: "right",
28
  logoUrl: "",
29
  };
@@ -163,10 +163,10 @@
163
  --lookupit-coral: ${config.accentColor};
164
  --lookupit-coral-deep: #b51f34;
165
  --lookupit-coral-soft: #fff1f3;
166
- --lookupit-shadow: 0 24px 64px rgba(181, 31, 52, 0.18);
167
  position: fixed;
168
- ${config.position === "left" ? "left: 26px;" : "right: 26px;"}
169
- bottom: 26px;
170
  z-index: 2147483000;
171
  font-family: "Manrope", "Segoe UI", sans-serif;
172
  }
@@ -184,16 +184,16 @@
184
  }
185
 
186
  #${widgetId} .lookupit-toggle {
187
- width: 52px;
188
- height: 52px;
189
  border: 0;
190
- border-radius: 24px;
191
  background:
192
  radial-gradient(circle at 28% 22%, rgba(255, 255, 255, 0.28), transparent 28%),
193
  linear-gradient(145deg, #ef5b69 0%, #b72f38 54%, var(--lookupit-coral-deep) 100%);
194
  color: #fff;
195
  cursor: pointer;
196
- box-shadow: 0 26px 44px rgba(219, 63, 70, 0.28);
197
  display: grid;
198
  place-items: center;
199
  position: relative;
@@ -202,36 +202,36 @@
202
  }
203
 
204
  #${widgetId} .lookupit-toggle:hover {
205
- transform: translateY(-3px) scale(1.02);
206
- box-shadow: 0 34px 52px rgba(219, 63, 70, 0.34);
207
  }
208
 
209
  #${widgetId} .lookupit-toggle::before {
210
  content: "";
211
  position: absolute;
212
- inset: 8px;
213
  border: 1px solid rgba(255, 255, 255, 0.22);
214
- border-radius: 18px;
215
  }
216
 
217
  #${widgetId} .lookupit-toggle svg {
218
- width: 28px;
219
- height: 28px;
220
  position: relative;
221
  z-index: 1;
222
  }
223
 
224
  #${widgetId} .lookupit-badge {
225
  position: absolute;
226
- top: -5px;
227
- right: -5px;
228
- min-width: 22px;
229
- height: 22px;
230
- padding: 0 6px;
231
  border-radius: 999px;
232
  background: var(--lookupit-coral-deep);
233
  color: #fff;
234
- font-size: 11px;
235
  font-weight: 800;
236
  display: none;
237
  align-items: center;
@@ -243,10 +243,10 @@
243
  #${widgetId} .lookupit-panel {
244
  position: absolute;
245
  ${config.position === "left" ? "left: 0;" : "right: 0;"}
246
- bottom: 92px;
247
- width: min(398px, calc(100vw - 20px));
248
- max-height: min(720px, calc(100vh - 120px));
249
- border-radius: 34px;
250
  background: linear-gradient(180deg, rgba(255, 250, 251, 0.98) 0%, rgba(255, 255, 255, 0.99) 100%);
251
  border: 1px solid rgba(217, 58, 73, 0.18);
252
  box-shadow: var(--lookupit-shadow);
@@ -259,13 +259,13 @@
259
  #${widgetId} .lookupit-panel::before {
260
  content: "";
261
  position: absolute;
262
- top: -26px;
263
- right: -20px;
264
- width: 180px;
265
- height: 180px;
266
  background:
267
  radial-gradient(circle, rgba(217, 58, 73, 0.12) 0 22%, transparent 23% 100%);
268
- background-size: 22px 22px;
269
  opacity: 0.8;
270
  pointer-events: none;
271
  }
@@ -273,11 +273,11 @@
273
  #${widgetId} .lookupit-panel::after {
274
  content: "";
275
  position: absolute;
276
- left: -56px;
277
- top: 112px;
278
- width: 150px;
279
- height: 150px;
280
- border: 14px solid rgba(217, 58, 73, 0.24);
281
  border-right-color: transparent;
282
  border-top-color: transparent;
283
  border-radius: 999px;
@@ -292,11 +292,11 @@
292
 
293
  #${widgetId} .lookupit-header {
294
  position: relative;
295
- padding: 24px 24px 20px;
296
  display: flex;
297
- align-items: flex-start;
298
  justify-content: space-between;
299
- gap: 16px;
300
  border-bottom: 1px solid rgba(217, 58, 73, 0.16);
301
  background: linear-gradient(180deg, rgba(255, 243, 245, 0.94) 0%, rgba(255, 255, 255, 0.94) 100%);
302
  z-index: 1;
@@ -304,15 +304,15 @@
304
 
305
  #${widgetId} .lookupit-header-info {
306
  display: flex;
307
- align-items: flex-start;
308
- gap: 14px;
309
  }
310
 
311
  #${widgetId} .lookupit-brand-mark,
312
  #${widgetId} .lookupit-logo {
313
- width: 52px;
314
- height: 52px;
315
- border-radius: 18px;
316
  flex: 0 0 auto;
317
  }
318
 
@@ -324,66 +324,66 @@
324
  background:
325
  radial-gradient(circle at 26% 22%, rgba(255, 255, 255, 0.34), transparent 24%),
326
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 58%, var(--lookupit-coral-deep) 100%);
327
- box-shadow: 0 18px 30px rgba(219, 63, 70, 0.24);
328
  }
329
 
330
  #${widgetId} .lookupit-brand-mark svg {
331
- width: 28px;
332
- height: 28px;
333
  }
334
 
335
  #${widgetId} .lookupit-logo {
336
  object-fit: contain;
337
  background: #fff;
338
  border: 1px solid rgba(217, 58, 73, 0.16);
339
- padding: 8px;
340
- box-shadow: 0 18px 30px rgba(181, 31, 52, 0.08);
341
  }
342
 
343
  #${widgetId} .lookupit-title {
344
- font-size: 18px;
345
  line-height: 1.1;
346
  font-weight: 800;
347
- letter-spacing: -0.03em;
348
  color: var(--lookupit-ink);
349
  }
350
 
351
  #${widgetId} .lookupit-subtitle {
352
- margin-top: 8px;
353
  display: inline-flex;
354
  align-items: center;
355
- gap: 8px;
356
- padding: 7px 12px;
357
  border-radius: 999px;
358
  background: var(--lookupit-coral-soft);
359
  color: var(--lookupit-coral-deep);
360
- font-size: 12px;
361
  font-weight: 700;
362
  line-height: 1;
363
  }
364
 
365
  #${widgetId} .lookupit-status-dot {
366
- width: 8px;
367
- height: 8px;
368
  border-radius: 50%;
369
  background: var(--lookupit-coral);
370
- box-shadow: 0 0 0 4px rgba(219, 63, 70, 0.14);
371
  }
372
 
373
  #${widgetId} .lookupit-close {
374
- width: 38px;
375
- height: 38px;
376
  border: 1px solid rgba(217, 58, 73, 0.16);
377
- border-radius: 14px;
378
  background: rgba(255, 255, 255, 0.9);
379
  color: var(--lookupit-ink);
380
  cursor: pointer;
381
  display: flex;
382
  align-items: center;
383
  justify-content: center;
384
- font-size: 18px;
385
  font-weight: 700;
386
- box-shadow: 0 10px 20px rgba(181, 31, 52, 0.08);
387
  transition: transform 160ms ease, border-color 160ms ease, color 160ms ease;
388
  }
389
 
@@ -394,18 +394,18 @@
394
  }
395
 
396
  #${widgetId} .lookupit-close svg {
397
- width: 18px;
398
- height: 18px;
399
  }
400
 
401
  #${widgetId} .lookupit-messages {
402
  position: relative;
403
  flex: 1;
404
  overflow-y: auto;
405
- padding: 18px 20px 14px;
406
  display: flex;
407
  flex-direction: column;
408
- gap: 14px;
409
  scroll-behavior: smooth;
410
  }
411
 
@@ -419,10 +419,10 @@
419
  }
420
 
421
  #${widgetId} .lookupit-msg {
422
- max-width: 86%;
423
  display: flex;
424
  flex-direction: column;
425
- gap: 6px;
426
  animation: lookupitFadeSlide 220ms ease;
427
  }
428
 
@@ -435,10 +435,10 @@
435
  }
436
 
437
  #${widgetId} .lookupit-bubble {
438
- padding: 13px 16px;
439
- border-radius: 24px;
440
- font-size: 14px;
441
- line-height: 1.62;
442
  word-break: break-word;
443
  }
444
 
@@ -476,8 +476,8 @@
476
  }
477
 
478
  #${widgetId} .lookupit-time {
479
- padding: 0 6px;
480
- font-size: 11px;
481
  font-weight: 700;
482
  letter-spacing: 0.02em;
483
  color: var(--lookupit-muted);
@@ -490,21 +490,21 @@
490
  #${widgetId} .lookupit-replies {
491
  display: flex;
492
  flex-wrap: wrap;
493
- gap: 8px;
494
- margin-top: 8px;
495
  }
496
 
497
  #${widgetId} .lookupit-reply {
498
- padding: 8px 13px;
499
  border-radius: 999px;
500
  border: 1px solid rgba(217, 58, 73, 0.22);
501
  background: linear-gradient(180deg, #ffffff 0%, #fff4f6 100%);
502
  color: var(--lookupit-ink);
503
- font-size: 12px;
504
  font-weight: 700;
505
  line-height: 1.2;
506
  cursor: pointer;
507
- box-shadow: 0 10px 18px rgba(181, 31, 52, 0.06);
508
  transition: transform 150ms ease, border-color 150ms ease, color 150ms ease;
509
  }
510
 
@@ -517,13 +517,13 @@
517
  #${widgetId} .lookupit-typing {
518
  display: flex;
519
  align-items: center;
520
- gap: 7px;
521
- padding: 4px 24px 14px;
522
  }
523
 
524
  #${widgetId} .lookupit-typing span {
525
- width: 8px;
526
- height: 8px;
527
  border-radius: 50%;
528
  background: rgba(219, 63, 70, 0.42);
529
  animation: lookupitBounce 1s infinite ease-in-out;
@@ -538,24 +538,24 @@
538
  }
539
 
540
  #${widgetId} .lookupit-input {
541
- padding: 16px 18px 18px;
542
  display: flex;
543
  align-items: flex-end;
544
- gap: 10px;
545
  border-top: 1px solid rgba(217, 58, 73, 0.14);
546
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.86) 0%, rgba(255, 245, 247, 0.98) 100%);
547
  }
548
 
549
  #${widgetId} .lookupit-input textarea {
550
  flex: 1;
551
- min-height: 52px;
552
- max-height: 112px;
553
- padding: 14px 16px;
554
- border-radius: 20px;
555
  border: 1px solid var(--lookupit-line);
556
  background: rgba(255, 255, 255, 0.94);
557
  color: var(--lookupit-ink);
558
- font-size: 14px;
559
  line-height: 1.5;
560
  outline: none;
561
  resize: none;
@@ -566,7 +566,7 @@
566
 
567
  #${widgetId} .lookupit-input textarea:focus {
568
  border-color: rgba(219, 63, 70, 0.36);
569
- box-shadow: 0 0 0 4px rgba(219, 63, 70, 0.08);
570
  }
571
 
572
  #${widgetId} .lookupit-input textarea::placeholder {
@@ -574,10 +574,10 @@
574
  }
575
 
576
  #${widgetId} .lookupit-send {
577
- width: 52px;
578
- height: 52px;
579
  border: 0;
580
- border-radius: 18px;
581
  background:
582
  radial-gradient(circle at 30% 22%, rgba(255, 255, 255, 0.28), transparent 28%),
583
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 58%, var(--lookupit-coral-deep) 100%);
@@ -587,13 +587,13 @@
587
  align-items: center;
588
  justify-content: center;
589
  flex: 0 0 auto;
590
- box-shadow: 0 20px 34px rgba(219, 63, 70, 0.24);
591
  transition: transform 150ms ease, box-shadow 150ms ease;
592
  }
593
 
594
  #${widgetId} .lookupit-send:hover {
595
  transform: translateY(-1px);
596
- box-shadow: 0 24px 40px rgba(219, 63, 70, 0.3);
597
  }
598
 
599
  #${widgetId} .lookupit-send:disabled {
@@ -603,8 +603,8 @@
603
  }
604
 
605
  #${widgetId} .lookupit-send svg {
606
- width: 20px;
607
- height: 20px;
608
  }
609
 
610
  @keyframes lookupitFadeSlide {
@@ -629,14 +629,15 @@
629
 
630
  @media (max-width: 640px) {
631
  #${widgetId} {
632
- ${config.position === "left" ? "left: 14px;" : "right: 14px;"}
633
- bottom: 14px;
634
  }
635
 
636
  #${widgetId} .lookupit-panel {
637
- width: min(calc(100vw - 16px), 396px);
638
- bottom: 88px;
639
- border-radius: 28px;
 
640
  }
641
  }
642
  `;
 
12
  const defaultConfig = {
13
  apiBase: scriptOrigin,
14
  title: "LookUP IT Assistant",
15
+ subtitle: "Mobile app development",
16
  accentColor: "#db3f46",
17
  welcomeMessage:
18
+ "Hi! I'm the LookUP IT mobile app assistant.\n\nI can help you plan an iOS, Android, or Flutter app, review features, and connect you with our team. How can I help with your app today?",
19
  quickReplies: [
20
+ "Build a mobile app",
21
+ "Flutter or native apps",
22
+ "Need iOS and Android",
23
+ "Get an app quote",
24
  ],
25
+ placeholder: "Describe your app idea...",
26
+ buttonLabel: "Open mobile app chat",
27
  position: "right",
28
  logoUrl: "",
29
  };
 
163
  --lookupit-coral: ${config.accentColor};
164
  --lookupit-coral-deep: #b51f34;
165
  --lookupit-coral-soft: #fff1f3;
166
+ --lookupit-shadow: 0 18px 44px rgba(181, 31, 52, 0.18);
167
  position: fixed;
168
+ ${config.position === "left" ? "left: 18px;" : "right: 18px;"}
169
+ bottom: 18px;
170
  z-index: 2147483000;
171
  font-family: "Manrope", "Segoe UI", sans-serif;
172
  }
 
184
  }
185
 
186
  #${widgetId} .lookupit-toggle {
187
+ width: 46px;
188
+ height: 46px;
189
  border: 0;
190
+ border-radius: 16px;
191
  background:
192
  radial-gradient(circle at 28% 22%, rgba(255, 255, 255, 0.28), transparent 28%),
193
  linear-gradient(145deg, #ef5b69 0%, #b72f38 54%, var(--lookupit-coral-deep) 100%);
194
  color: #fff;
195
  cursor: pointer;
196
+ box-shadow: 0 12px 24px rgba(219, 63, 70, 0.26);
197
  display: grid;
198
  place-items: center;
199
  position: relative;
 
202
  }
203
 
204
  #${widgetId} .lookupit-toggle:hover {
205
+ transform: translateY(-2px) scale(1.02);
206
+ box-shadow: 0 16px 28px rgba(219, 63, 70, 0.3);
207
  }
208
 
209
  #${widgetId} .lookupit-toggle::before {
210
  content: "";
211
  position: absolute;
212
+ inset: 6px;
213
  border: 1px solid rgba(255, 255, 255, 0.22);
214
+ border-radius: 11px;
215
  }
216
 
217
  #${widgetId} .lookupit-toggle svg {
218
+ width: 20px;
219
+ height: 20px;
220
  position: relative;
221
  z-index: 1;
222
  }
223
 
224
  #${widgetId} .lookupit-badge {
225
  position: absolute;
226
+ top: -4px;
227
+ right: -4px;
228
+ min-width: 17px;
229
+ height: 17px;
230
+ padding: 0 4px;
231
  border-radius: 999px;
232
  background: var(--lookupit-coral-deep);
233
  color: #fff;
234
+ font-size: 9px;
235
  font-weight: 800;
236
  display: none;
237
  align-items: center;
 
243
  #${widgetId} .lookupit-panel {
244
  position: absolute;
245
  ${config.position === "left" ? "left: 0;" : "right: 0;"}
246
+ bottom: 58px;
247
+ width: min(308px, calc(100vw - 20px));
248
+ max-height: min(500px, calc(100vh - 88px));
249
+ border-radius: 22px;
250
  background: linear-gradient(180deg, rgba(255, 250, 251, 0.98) 0%, rgba(255, 255, 255, 0.99) 100%);
251
  border: 1px solid rgba(217, 58, 73, 0.18);
252
  box-shadow: var(--lookupit-shadow);
 
259
  #${widgetId} .lookupit-panel::before {
260
  content: "";
261
  position: absolute;
262
+ top: -18px;
263
+ right: -16px;
264
+ width: 128px;
265
+ height: 128px;
266
  background:
267
  radial-gradient(circle, rgba(217, 58, 73, 0.12) 0 22%, transparent 23% 100%);
268
+ background-size: 18px 18px;
269
  opacity: 0.8;
270
  pointer-events: none;
271
  }
 
273
  #${widgetId} .lookupit-panel::after {
274
  content: "";
275
  position: absolute;
276
+ left: -36px;
277
+ top: 92px;
278
+ width: 104px;
279
+ height: 104px;
280
+ border: 10px solid rgba(217, 58, 73, 0.22);
281
  border-right-color: transparent;
282
  border-top-color: transparent;
283
  border-radius: 999px;
 
292
 
293
  #${widgetId} .lookupit-header {
294
  position: relative;
295
+ padding: 12px 13px 10px;
296
  display: flex;
297
+ align-items: center;
298
  justify-content: space-between;
299
+ gap: 8px;
300
  border-bottom: 1px solid rgba(217, 58, 73, 0.16);
301
  background: linear-gradient(180deg, rgba(255, 243, 245, 0.94) 0%, rgba(255, 255, 255, 0.94) 100%);
302
  z-index: 1;
 
304
 
305
  #${widgetId} .lookupit-header-info {
306
  display: flex;
307
+ align-items: center;
308
+ gap: 9px;
309
  }
310
 
311
  #${widgetId} .lookupit-brand-mark,
312
  #${widgetId} .lookupit-logo {
313
+ width: 34px;
314
+ height: 34px;
315
+ border-radius: 11px;
316
  flex: 0 0 auto;
317
  }
318
 
 
324
  background:
325
  radial-gradient(circle at 26% 22%, rgba(255, 255, 255, 0.34), transparent 24%),
326
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 58%, var(--lookupit-coral-deep) 100%);
327
+ box-shadow: 0 6px 14px rgba(219, 63, 70, 0.22);
328
  }
329
 
330
  #${widgetId} .lookupit-brand-mark svg {
331
+ width: 18px;
332
+ height: 18px;
333
  }
334
 
335
  #${widgetId} .lookupit-logo {
336
  object-fit: contain;
337
  background: #fff;
338
  border: 1px solid rgba(217, 58, 73, 0.16);
339
+ padding: 5px;
340
+ box-shadow: 0 6px 14px rgba(181, 31, 52, 0.08);
341
  }
342
 
343
  #${widgetId} .lookupit-title {
344
+ font-size: 13px;
345
  line-height: 1.1;
346
  font-weight: 800;
347
+ letter-spacing: -0.02em;
348
  color: var(--lookupit-ink);
349
  }
350
 
351
  #${widgetId} .lookupit-subtitle {
352
+ margin-top: 3px;
353
  display: inline-flex;
354
  align-items: center;
355
+ gap: 4px;
356
+ padding: 4px 7px;
357
  border-radius: 999px;
358
  background: var(--lookupit-coral-soft);
359
  color: var(--lookupit-coral-deep);
360
+ font-size: 10px;
361
  font-weight: 700;
362
  line-height: 1;
363
  }
364
 
365
  #${widgetId} .lookupit-status-dot {
366
+ width: 5px;
367
+ height: 5px;
368
  border-radius: 50%;
369
  background: var(--lookupit-coral);
370
+ box-shadow: 0 0 0 3px rgba(219, 63, 70, 0.14);
371
  }
372
 
373
  #${widgetId} .lookupit-close {
374
+ width: 28px;
375
+ height: 28px;
376
  border: 1px solid rgba(217, 58, 73, 0.16);
377
+ border-radius: 9px;
378
  background: rgba(255, 255, 255, 0.9);
379
  color: var(--lookupit-ink);
380
  cursor: pointer;
381
  display: flex;
382
  align-items: center;
383
  justify-content: center;
384
+ font-size: 13px;
385
  font-weight: 700;
386
+ box-shadow: 0 4px 8px rgba(181, 31, 52, 0.08);
387
  transition: transform 160ms ease, border-color 160ms ease, color 160ms ease;
388
  }
389
 
 
394
  }
395
 
396
  #${widgetId} .lookupit-close svg {
397
+ width: 13px;
398
+ height: 13px;
399
  }
400
 
401
  #${widgetId} .lookupit-messages {
402
  position: relative;
403
  flex: 1;
404
  overflow-y: auto;
405
+ padding: 10px 11px 8px;
406
  display: flex;
407
  flex-direction: column;
408
+ gap: 8px;
409
  scroll-behavior: smooth;
410
  }
411
 
 
419
  }
420
 
421
  #${widgetId} .lookupit-msg {
422
+ max-width: 90%;
423
  display: flex;
424
  flex-direction: column;
425
+ gap: 5px;
426
  animation: lookupitFadeSlide 220ms ease;
427
  }
428
 
 
435
  }
436
 
437
  #${widgetId} .lookupit-bubble {
438
+ padding: 9px 11px;
439
+ border-radius: 14px;
440
+ font-size: 12.5px;
441
+ line-height: 1.5;
442
  word-break: break-word;
443
  }
444
 
 
476
  }
477
 
478
  #${widgetId} .lookupit-time {
479
+ padding: 0 4px;
480
+ font-size: 10px;
481
  font-weight: 700;
482
  letter-spacing: 0.02em;
483
  color: var(--lookupit-muted);
 
490
  #${widgetId} .lookupit-replies {
491
  display: flex;
492
  flex-wrap: wrap;
493
+ gap: 6px;
494
+ margin-top: 6px;
495
  }
496
 
497
  #${widgetId} .lookupit-reply {
498
+ padding: 6px 10px;
499
  border-radius: 999px;
500
  border: 1px solid rgba(217, 58, 73, 0.22);
501
  background: linear-gradient(180deg, #ffffff 0%, #fff4f6 100%);
502
  color: var(--lookupit-ink);
503
+ font-size: 10.5px;
504
  font-weight: 700;
505
  line-height: 1.2;
506
  cursor: pointer;
507
+ box-shadow: 0 4px 8px rgba(181, 31, 52, 0.06);
508
  transition: transform 150ms ease, border-color 150ms ease, color 150ms ease;
509
  }
510
 
 
517
  #${widgetId} .lookupit-typing {
518
  display: flex;
519
  align-items: center;
520
+ gap: 4px;
521
+ padding: 2px 13px 8px;
522
  }
523
 
524
  #${widgetId} .lookupit-typing span {
525
+ width: 7px;
526
+ height: 7px;
527
  border-radius: 50%;
528
  background: rgba(219, 63, 70, 0.42);
529
  animation: lookupitBounce 1s infinite ease-in-out;
 
538
  }
539
 
540
  #${widgetId} .lookupit-input {
541
+ padding: 8px 10px 10px;
542
  display: flex;
543
  align-items: flex-end;
544
+ gap: 7px;
545
  border-top: 1px solid rgba(217, 58, 73, 0.14);
546
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.86) 0%, rgba(255, 245, 247, 0.98) 100%);
547
  }
548
 
549
  #${widgetId} .lookupit-input textarea {
550
  flex: 1;
551
+ min-height: 38px;
552
+ max-height: 84px;
553
+ padding: 9px 11px;
554
+ border-radius: 14px;
555
  border: 1px solid var(--lookupit-line);
556
  background: rgba(255, 255, 255, 0.94);
557
  color: var(--lookupit-ink);
558
+ font-size: 12.5px;
559
  line-height: 1.5;
560
  outline: none;
561
  resize: none;
 
566
 
567
  #${widgetId} .lookupit-input textarea:focus {
568
  border-color: rgba(219, 63, 70, 0.36);
569
+ box-shadow: 0 0 0 2px rgba(219, 63, 70, 0.08);
570
  }
571
 
572
  #${widgetId} .lookupit-input textarea::placeholder {
 
574
  }
575
 
576
  #${widgetId} .lookupit-send {
577
+ width: 38px;
578
+ height: 38px;
579
  border: 0;
580
+ border-radius: 12px;
581
  background:
582
  radial-gradient(circle at 30% 22%, rgba(255, 255, 255, 0.28), transparent 28%),
583
  linear-gradient(145deg, #ef5b69 0%, var(--lookupit-coral) 58%, var(--lookupit-coral-deep) 100%);
 
587
  align-items: center;
588
  justify-content: center;
589
  flex: 0 0 auto;
590
+ box-shadow: 0 8px 16px rgba(219, 63, 70, 0.24);
591
  transition: transform 150ms ease, box-shadow 150ms ease;
592
  }
593
 
594
  #${widgetId} .lookupit-send:hover {
595
  transform: translateY(-1px);
596
+ box-shadow: 0 10px 18px rgba(219, 63, 70, 0.28);
597
  }
598
 
599
  #${widgetId} .lookupit-send:disabled {
 
603
  }
604
 
605
  #${widgetId} .lookupit-send svg {
606
+ width: 15px;
607
+ height: 15px;
608
  }
609
 
610
  @keyframes lookupitFadeSlide {
 
629
 
630
  @media (max-width: 640px) {
631
  #${widgetId} {
632
+ ${config.position === "left" ? "left: 10px;" : "right: 10px;"}
633
+ bottom: 10px;
634
  }
635
 
636
  #${widgetId} .lookupit-panel {
637
+ width: min(calc(100vw - 16px), 294px);
638
+ bottom: 60px;
639
+ max-height: min(440px, calc(100vh - 84px));
640
+ border-radius: 20px;
641
  }
642
  }
643
  `;
templates/index.html CHANGED
@@ -35,8 +35,8 @@
35
  </svg>
36
  </div>
37
  <div>
38
- <div class="chat-name">Lookup IT Assistant</div>
39
- <div class="chat-status"><span class="dot"></span> Online</div>
40
  </div>
41
  </div>
42
  <button id="chat-close-btn" aria-label="Close chat">✕</button>
@@ -53,7 +53,7 @@
53
  <div class="chat-input-area">
54
  <textarea
55
  id="chat-input"
56
- placeholder="Type your message…"
57
  rows="1"
58
  maxlength="1000"
59
  ></textarea>
 
35
  </svg>
36
  </div>
37
  <div>
38
+ <div class="chat-name">LookUP IT Assistant</div>
39
+ <div class="chat-status"><span class="dot"></span> Mobile app experts</div>
40
  </div>
41
  </div>
42
  <button id="chat-close-btn" aria-label="Close chat">✕</button>
 
53
  <div class="chat-input-area">
54
  <textarea
55
  id="chat-input"
56
+ placeholder="Describe your app idea..."
57
  rows="1"
58
  maxlength="1000"
59
  ></textarea>