PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.9.4
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.9.4
3.6.2 3.6.1 3.6.0 3.5.9 3.5.8 3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / themes / sass / _common.scss
ai-engine / themes / sass Last commit date
_common.scss 11 months ago chatgpt.scss 11 months ago messages.scss 11 months ago timeless.scss 11 months ago
_common.scss
1298 lines
1 // main: chatgpt.scss, messages.scss
2
3 @mixin discussions-styles {
4 &.mwai-discussions {
5 border-radius: var(--mwai-borderRadius);
6 background: var(--mwai-backgroundHeaderColor);
7 overflow: hidden;
8
9 * {
10 box-sizing: border-box;
11 }
12
13 .mwai-discussion {
14 display: flex;
15 position: relative;
16 padding-left: calc(var(--mwai-spacing) / 2);
17 padding-right: calc(var(--mwai-spacing) / 2);
18 padding-bottom: calc(var(--mwai-spacing) / 2);
19 color: var(--mwai-conversationsTextColor);
20 opacity: 0.65;
21 align-items: center;
22
23 .mwai-discussion-content {
24 flex: 1;
25 padding: 5px 10px;
26 overflow: hidden;
27 }
28
29 .mwai-discussion-title {
30 display: block;
31 overflow: hidden;
32 text-overflow: ellipsis;
33 white-space: nowrap;
34 font-size: var(--mwai-fontSize);
35 margin-bottom: 4px;
36 }
37
38 .mwai-discussion-info {
39 display: flex;
40 gap: 12px;
41 font-size: calc(var(--mwai-fontSize) * 0.85);
42 opacity: 0.7;
43
44 .mwai-info-item {
45 display: flex;
46 align-items: center;
47 gap: 4px;
48
49 svg {
50 opacity: 0.6;
51 }
52 }
53 }
54
55 .mwai-discussion-actions {
56 position: absolute;
57 top: 50%;
58 right: calc(var(--mwai-spacing) / 2);
59 transform: translateY(-50%);
60 opacity: 0;
61 transition: opacity 0.2s ease-out;
62 z-index: 100;
63
64 .mwai-menu-icon {
65 width: 28px;
66 height: 28px;
67 display: flex;
68 align-items: center;
69 justify-content: center;
70 cursor: pointer;
71 color: var(--mwai-conversationsTextColor);
72 }
73
74 }
75
76 &.mwai-active {
77 cursor: pointer;
78
79 .mwai-discussion-content {
80 background: var(--mwai-backgroundPrimaryColor);
81 border-radius: var(--mwai-borderRadius);
82 opacity: 1;
83 }
84 }
85
86 &:hover {
87 cursor: pointer;
88
89 .mwai-discussion-content {
90 background: var(--mwai-backgroundPrimaryColor);
91 border-radius: var(--mwai-borderRadius);
92 opacity: 1;
93 }
94
95 .mwai-discussion-actions {
96 opacity: 1;
97 }
98 }
99
100 // Keep actions visible when menu is open
101 &:has(.mwai-context-menu) {
102 .mwai-discussion-actions {
103 opacity: 1;
104 }
105 }
106
107 &:first-child {
108 margin-top: calc(var(--mwai-spacing) / 2);
109 }
110 }
111
112 .mwai-header {
113 color: var(--mwai-headerButtonsColor);
114 padding: var(--mwai-spacing);
115 display: flex;
116 justify-content: space-between;
117 align-items: center;
118 gap: 10px;
119
120 button {
121 background: var(--mwai-backgroundPrimaryColor);
122 color: var(--mwai-fontColor);
123 border: none;
124 padding: 8px 16px;
125 border-radius: var(--mwai-borderRadius);
126 cursor: pointer;
127 transition: all 0.2s ease-out;
128
129 &:hover:not(:disabled) {
130 background: var(--mwai-iconTextBackgroundColor);
131 }
132
133 &:disabled {
134 opacity: 0.5;
135 cursor: not-allowed;
136 }
137 }
138
139 .mwai-refresh-btn {
140 padding: 8px;
141 display: flex;
142 align-items: center;
143 justify-content: center;
144 }
145 }
146
147 .mwai-body {
148 background: var(--mwai-conversationsBackgroundColor);
149 list-style: none;
150 padding: 0;
151 margin: 0;
152 position: relative;
153 min-height: 200px;
154 display: flex;
155 flex-direction: column;
156 border-radius: 0;
157 z-index: 1;
158 }
159
160 .mwai-loading-overlay {
161 position: absolute;
162 top: 0;
163 left: 0;
164 right: 0;
165 bottom: 0;
166 background: var(--mwai-conversationsBackgroundColor);
167 opacity: 0.9;
168 display: flex;
169 align-items: center;
170 justify-content: center;
171 z-index: 10;
172 }
173
174 .mwai-spinner {
175 animation: spin 1s linear infinite;
176 color: var(--mwai-fontColor);
177 }
178
179 @keyframes spin {
180 from { transform: rotate(0deg); }
181 to { transform: rotate(360deg); }
182 }
183
184 .mwai-pagination {
185 background: var(--mwai-backgroundHeaderColor);
186 padding: var(--mwai-spacing);
187 display: flex;
188 justify-content: space-between;
189 align-items: center;
190 border-top: 1px solid var(--mwai-backgroundPrimaryColor);
191
192 button {
193 background: var(--mwai-backgroundPrimaryColor);
194 color: var(--mwai-fontColor);
195 border: none;
196 padding: 8px 12px;
197 border-radius: var(--mwai-borderRadius);
198 cursor: pointer;
199 transition: all 0.2s ease-out;
200 display: flex;
201 align-items: center;
202 justify-content: center;
203
204 &:hover:not(:disabled) {
205 background: var(--mwai-iconTextBackgroundColor);
206 }
207
208 &:disabled {
209 opacity: 0.3;
210 cursor: not-allowed;
211 }
212 }
213
214 span {
215 color: var(--mwai-headerButtonsColor);
216 font-size: var(--mwai-fontSize);
217 font-weight: 500;
218 }
219
220 .mwai-page-indicator {
221 color: var(--mwai-headerButtonsColor);
222 font-size: calc(var(--mwai-fontSize) * 0.85);
223 font-weight: 400;
224 opacity: 0.8;
225 }
226 }
227 }
228 }
229
230 @mixin file-upload-icon-sprites {
231 $icon-size: 32px;
232
233 &.mwai-idle-add {
234 background-position: -1 * $icon-size -3 * $icon-size;
235 }
236
237 &.mwai-image-add {
238 background-position: -1 * $icon-size -0 * $icon-size;
239 }
240
241 &.mwai-image-up {
242 background-position: -2 * $icon-size -0 * $icon-size;
243 }
244
245 &.mwai-image-del {
246 background-position: -3 * $icon-size -0 * $icon-size;
247 }
248
249 &.mwai-image-ok {
250 background-position: -4 * $icon-size -0 * $icon-size;
251 }
252
253 &.mwai-document-add {
254 background-position: -1 * $icon-size -2 * $icon-size;
255 }
256
257 &.mwai-document-up {
258 background-position: -2 * $icon-size -2 * $icon-size;
259 }
260
261 &.mwai-document-del {
262 background-position: -3 * $icon-size -2 * $icon-size;
263 }
264
265 &.mwai-document-ok {
266 background-position: -4 * $icon-size -2 * $icon-size;
267 }
268
269 .mwai-file-upload-progress {
270 position: absolute;
271 font-size: 8px;
272 width: 21px;
273 top: 24px;
274 left: 23px;
275 overflow: hidden;
276 text-align: center;
277 font-weight: bold;
278 color: white;
279 }
280 }
281
282 @mixin microphone {
283
284 display: flex;
285 justify-content: center;
286 align-items: center;
287
288 svg {
289 opacity: 0.5;
290 filter: grayscale(100%);
291 transition: opacity 0.3s ease-out;
292 cursor: pointer;
293 }
294
295 &[active=true]=true] svg {
296 opacity: 1;
297 }
298
299 &[disabled]] svg {
300 opacity: 0;
301 cursor: not-allowed;
302 }
303 }
304
305 @mixin fullscreen-window {
306 position: fixed;
307 left: 0 !important;
308 right: 0 !important;
309 bottom: 0 !important;
310 top: 0 !important;
311 width: 100%;
312 height: 100%;
313 max-height: 100%;
314 max-width: 100%;
315 display: flex;
316 flex-direction: column;
317 margin: 0;
318 z-index: 999999;
319 background-color: var(--mwai-backgroundSecondaryColor);
320
321 .mwai-header {
322 border-radius: 0;
323 }
324
325 .mwai-body {
326 height: 100%;
327 max-height: inherit;
328 border-radius: 0;
329
330 .mwai-conversation {
331 flex: auto;
332 max-height: none;
333 }
334 }
335 }
336
337 @mixin common-styles {
338
339 // Transitions
340
341 &.mwai-transition, .mwai-transition {
342 opacity: 0;
343 transition: opacity 350ms ease-in-out;
344 }
345
346 &.mwai-transition-visible, .mwai-transition-visible {
347 opacity: 1;
348 }
349
350 .mwai-text {
351 overflow-wrap: anywhere;
352
353 img {
354 max-width: 100%;
355 }
356
357 div {
358 p:first-child {
359 margin-top: 0;
360 }
361 p:last-child {
362 margin-bottom: 0;
363 }
364 }
365 }
366
367 // The icon when the chat window is closed.
368
369 .mwai-trigger {
370 position: absolute;
371 right: 0;
372 bottom: 0;
373 transition: all 0.2s ease-out;
374 z-index: 9999;
375 display: flex;
376 flex-direction: column;
377 align-items: end;
378
379 .mwai-icon-text-container {
380 display: flex;
381 flex-direction: column;
382 align-items: flex-end;
383
384 .mwai-icon-text {
385 background: var(--mwai-iconTextBackgroundColor);
386 color: var(--mwai-iconTextColor);
387 box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.15);
388 max-width: 200px;
389 font-size: 13px;
390 margin-bottom: 15px;
391 padding: 10px 15px;
392 border-radius: 8px;
393 }
394
395 .mwai-icon-text-close {
396 color: var(--mwai-iconTextColor);
397 background: var(--mwai-iconTextBackgroundColor);
398 padding: 0;
399 width: 24px;
400 height: 24px;
401 border-radius: 50%;
402 display: none;
403 justify-content: center;
404 align-items: center;
405 margin-bottom: 3px;
406 }
407
408 &:hover {
409 cursor: pointer;
410
411 .mwai-icon-text-close {
412 display: flex;
413 font-size: 12px;
414
415 &:hover {
416 filter: brightness(1.2);
417 }
418 }
419 }
420
421 @media (max-width: 760px) {
422 .mwai-icon-text-close {
423 display: flex;
424 }
425 }
426
427 }
428
429 .mwai-icon-container {
430
431 .mwai-icon {
432 filter: drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.15));
433 transition: all 0.2s ease-out;
434
435 &:hover {
436 cursor: pointer;
437 transform: scale(1.05);
438 }
439 }
440 }
441 }
442
443 // Handle the chat window and fullscreen.
444 // Let's keep this common for all themes.
445
446 &.mwai-window {
447 position: fixed;
448 right: 30px;
449 bottom: 30px;
450 width: var(--mwai-width);
451 z-index: 9999;
452
453 .mwai-header {
454 display: none;
455 justify-content: flex-end;
456 align-items: center;
457 border-radius: var(--mwai-borderRadius) var(--mwai-borderRadius) 0 0;
458 background: var(--mwai-backgroundHeaderColor);
459
460 .mwai-buttons {
461 display: flex;
462 align-items: center;
463
464 .mwai-resize-button {
465 justify-content: center;
466 height: 32px;
467 width: 22px;
468 cursor: pointer;
469 display: flex;
470 justify-content: center;
471 align-items: center;
472
473 &:before {
474 transition: all 0.2s ease-out;
475 content: ' ';
476 cursor: pointer;
477 position: absolute;
478 height: 13px;
479 width: 13px;
480 border: 1px solid var(--mwai-headerButtonsColor);
481 }
482
483 &:hover:before {
484 width: 16px;
485 height: 16px;
486 }
487 }
488
489 .mwai-close-button {
490 justify-content: center;
491 height: 32px;
492 width: 33px;
493 cursor: pointer;
494 border-radius: var(--mwai-borderRadius);
495
496 &:before {
497 transition: all 0.2s ease-out;
498 transform: translate(16px, 5px) rotate(45deg);
499 }
500 &:after {
501 transition: all 0.2s ease-out;
502 transform: translate(16px, 5px) rotate(-45deg);
503 }
504 }
505
506 .mwai-close-button:before, .mwai-close-button:after {
507 content: ' ';
508 cursor: pointer;
509 position: absolute;
510 height: 22px;
511 width: 1px;
512 background-color: var(--mwai-headerButtonsColor);
513 }
514
515 .mwai-close-button:hover {
516 &:before {
517 opacity: 1;
518 transform: translate(16px, 5px) rotate(135deg);
519 }
520 &:after {
521 opacity: 1;
522 transform: translate(16px, 5px) rotate(45deg);
523 }
524 }
525
526 }
527 }
528
529 .mwai-body {
530 display: none;
531 opacity: 0;
532 max-height: var(--mwai-maxHeight);
533 border-radius: 0 0 var(--mwai-borderRadius) var(--mwai-borderRadius);
534 }
535
536 &.mwai-bottom-left {
537 bottom: 30px;
538 right: inherit;
539 left: 30px;
540
541 .mwai-trigger {
542 right: inherit;
543 left: 0;
544 }
545 }
546
547 &.mwai-top-right {
548 top: 30px;
549 bottom: inherit;
550 right: 30px;
551
552 .mwai-trigger {
553 top: 0;
554 bottom: inherit;
555 }
556 }
557
558 &.mwai-top-left {
559 top: 30px;
560 bottom: inherit;
561 right: inherit;
562 left: 30px;
563
564 .mwai-trigger {
565 top: 0;
566 bottom: inherit;
567 right: inherit;
568 left: 0;
569 }
570 }
571
572 &.mwai-top-left, &.mwai-bottom-left {
573
574 .mwai-trigger {
575 align-items: flex-start;
576 }
577 }
578
579 &.mwai-top-right, &.mwai-top-left {
580
581 .mwai-trigger {
582 flex-direction: column-reverse;
583
584 .mwai-icon-text {
585 margin-bottom: 0;
586 margin-top: 15px;
587 }
588 }
589 }
590 }
591
592 // Popup chat is fullscreen
593
594 &.mwai-window.mwai-fullscreen {
595
596 .mwai-header {
597
598 .mwai-buttons {
599 margin-bottom: 0px;
600
601 .mwai-resize-button {
602 &:before {
603 width: 16px;
604 height: 16px;
605 }
606
607 &:hover:before {
608 width: 13px;
609 height: 13px;
610 }
611 }
612 }
613 }
614 }
615
616 // Standard chat is fullscreen
617
618 &.mwai-fullscreen:not(.mwai-window), &.mwai-fullscreen.mwai-window.mwai-open {
619 @include fullscreen-window;
620 }
621
622 // Popup chat is open
623
624 &.mwai-window.mwai-open {
625
626 .mwai-header {
627 display: flex;
628 }
629
630 .mwai-body {
631 display: flex;
632 transition: opacity 200ms ease-in-out 0s;
633 opacity: 1;
634 }
635
636 .mwai-trigger {
637 display: none;
638 }
639 }
640
641 // Old error style - kept for backwards compatibility
642 .mwai-body > .mwai-error {
643 margin: var(--mwai-spacing);
644 color: white;
645 background: rgba(180, 55, 55, 0.55);
646 padding: var(--mwai-spacing);
647 border-radius: var(--mwai-borderRadius);
648
649 &:hover {
650 cursor: pointer;
651 background: rgba(180, 44, 44, 0.85);
652 }
653 }
654
655 // Error message specific styles
656 .mwai-reply.mwai-error {
657 .mwai-text {
658 color: #ff5656; // ChatGPT-style red for error text
659
660 // Style links in error messages
661 a {
662 color: #ff5656;
663 text-decoration: underline;
664 }
665 }
666
667 // Style action buttons in error messages
668 .mwai-reply-actions {
669 .mwai-action-button {
670 fill: var(--mwai-fontColor);
671 padding: 3px 5px;
672 width: 24px;
673 height: 24px;
674 background: var(--mwai-backgroundPrimaryColor);
675 cursor: pointer;
676 border-radius: 5px;
677
678 &:hover {
679 filter: brightness(1.2);
680 }
681 }
682 }
683 }
684
685 // Reply actions visibility
686 .mwai-reply-actions {
687 opacity: 0;
688 transition: opacity 0.2s ease-in-out;
689 }
690
691 // Show reply actions on hover of entire reply container
692 .mwai-reply:hover .mwai-reply-actions {
693 opacity: 1 !important;
694 }
695
696 &.mwai-bubble .mwai-icon-container {
697 background: var(--mwai-bubbleColor);
698 width: 60px;
699 height: 60px;
700 border-radius: 100%;
701 transition: all 0.2s ease-out;
702 display: flex;
703 justify-content: center;
704 align-items: center;
705
706 .mwai-icon {
707 max-width: 50%;
708 max-height: 50%;
709 filter: none;
710
711 &:hover {
712 transform: none;
713 }
714 }
715
716 .mwai-emoji {
717 font-size: 30px !important;
718 }
719
720 &:hover {
721 cursor: pointer;
722 filter: brightness(1.1);
723 }
724 }
725
726 @media (max-width: 760px) {
727 &.mwai-window.mwai-open {
728 @include fullscreen-window;
729
730 .mwai-input {
731 flex-direction: column;
732
733 button {
734 font-size: 16px;
735 margin-left: 0;
736 width: 100%;
737 }
738
739 .mwai-input-text {
740 //margin-bottom: var(--mwai-spacing);
741 width: 100%;
742
743 // This is to avoid iOS from zooming in when focusing on an input field.
744 input, textarea {
745 font-size: 16px;
746 }
747 }
748 }
749
750 .mwai-body {
751 display: flex;
752 transition: opacity 200ms ease-in-out 0s;
753 opacity: 1;
754 height: 100%;
755 max-height: inherit;
756
757 .mwai-conversation {
758 flex: auto;
759 max-height: none;
760 }
761 }
762
763 .mwai-resize-button {
764 display: none !important;
765 }
766
767 .mwai-trigger {
768 display: none;
769 }
770 }
771 }
772
773 // Keyframes for buttons
774
775 @keyframes mwai-button-spinner {
776
777 from {
778 transform: rotate(0turn);
779 }
780 to {
781 transform: rotate(1turn);
782 }
783 }
784
785 // Safari-specific fix for spinner cleanup
786 button:not(.mwai-busy):before {
787 content: none !important;
788 display: none !important;
789 animation: none !important;
790 }
791
792 // WordPress Admin Bar
793
794 .admin-bar .mwai-fullscreen:not(.mwai-window),
795 .admin-bar .mwai-fullscreen.mwai-window.mwai-open {
796 top: 32px;
797 }
798 }
799
800 @mixin code-dark {
801
802 pre code.hljs {
803 display: block;
804 overflow-x: auto;
805 padding: 1em;
806 }
807
808 code.hljs {
809 padding: 3px 5px;
810 }
811
812 .hljs {
813 color: #fff;
814
815 &-subst {
816 color: #fff;
817 }
818
819 &-comment {
820 color: #999;
821 }
822
823 &-attr,
824 &-doctag,
825 &-keyword,
826 &-meta .hljs-keyword,
827 &-section,
828 &-selector-tag {
829 color: #88aece;
830 }
831
832 &-attribute {
833 color: #c59bc1;
834 }
835
836 &-name,
837 &-number,
838 &-quote,
839 &-selector-id,
840 &-template-tag,
841 &-type {
842 color: #f08d49;
843 }
844
845 &-selector-class {
846 color: #88aece;
847 }
848
849 &-link,
850 &-regexp,
851 &-selector-attr,
852 &-string,
853 &-symbol,
854 &-template-variable,
855 &-variable {
856 color: #b5bd68;
857 }
858
859 &-meta,
860 &-selector-pseudo {
861 color: #88aece;
862 }
863
864 &-built_in,
865 &-literal,
866 &-title {
867 color: #f08d49;
868 }
869
870 &-bullet,
871 &-code {
872 color: #ccc;
873 }
874
875 &-meta .hljs-string {
876 color: #b5bd68;
877 }
878
879 &-deletion {
880 color: #de7176;
881 }
882
883 &-addition {
884 color: #76c490;
885 }
886
887 &-emphasis {
888 font-style: italic;
889 }
890
891 &-strong {
892 font-weight: 700;
893 }
894 }
895 }
896
897 @mixin code-light {
898
899 pre code.hljs {
900 display: block;
901 overflow-x: auto;
902 padding: 1em;
903 }
904
905 code.hljs {
906 padding: 3px 5px;
907 }
908
909 .hljs {
910 color: #333;
911 background: #f0f0f0;
912
913 &-subst {
914 color: #333;
915 }
916
917 &-comment {
918 color: #888;
919 }
920
921 &-attr,
922 &-doctag,
923 &-keyword,
924 &-meta .hljs-keyword,
925 &-section,
926 &-selector-tag {
927 color: #0077cc;
928 }
929
930 &-attribute {
931 color: #aa3377;
932 }
933
934 &-name,
935 &-number,
936 &-quote,
937 &-selector-id,
938 &-template-tag,
939 &-type {
940 color: #c18401;
941 }
942
943 &-selector-class {
944 color: #0077cc;
945 }
946
947 &-link,
948 &-regexp,
949 &-selector-attr,
950 &-string,
951 &-symbol,
952 &-template-variable,
953 &-variable {
954 color: #689700;
955 }
956
957 &-meta,
958 &-selector-pseudo {
959 color: #0077cc;
960 }
961
962 &-built_in,
963 &-literal,
964 &-title {
965 color: #c18401;
966 }
967
968 &-bullet,
969 &-code {
970 color: #555;
971 }
972
973 &-meta .hljs-string {
974 color: #689700;
975 }
976
977 &-deletion {
978 color: #b71c1c;
979 }
980
981 &-addition {
982 color: #1b5e20;
983 }
984
985 &-emphasis {
986 font-style: italic;
987 }
988
989 &-strong {
990 font-weight: 700;
991 }
992 }
993 }
994
995 @mixin reply-actions {
996 .mwai-reply-actions {
997 position: absolute;
998 border-radius: 5px;
999 top: 10px;
1000 right: 10px;
1001 display: flex;
1002 align-items: center;
1003 padding: 2px 2px;
1004 z-index: 100;
1005 background: var(--mwai-backgroundPrimaryColor);
1006 box-shadow: 0 0 8px rgba(0, 0, 0, 0.25);
1007 z-index: 100;
1008
1009 .mwai-copy-button {
1010 fill: var(--mwai-fontColor);
1011 padding: 3px 5px;
1012 width: 24px;
1013 height: 24px;
1014 background: var(--mwai-backgroundPrimaryColor);
1015 cursor: pointer;
1016 border-radius: 5px;
1017
1018 &:hover {
1019 filter: brightness(1.2);
1020 }
1021 }
1022
1023 &.mwai-hidden {
1024 opacity: 0;
1025 }
1026 }
1027 }
1028
1029 @mixin realtime {
1030 .mwai-realtime {
1031 padding: var(--mwai-spacing);
1032
1033 .mwai-visualizer {
1034 display: flex;
1035 justify-content: center;
1036 align-items: center;
1037
1038 hr {
1039 width: 100px;
1040 margin-right: var(--mwai-spacing);
1041 margin-left: var(--mwai-spacing);
1042 border: 1px solid var(--mwai-backgroundPrimaryColor);
1043 }
1044
1045 .mwai-animation {
1046 background: var(--mwai-backgroundPrimaryColor);
1047 }
1048 }
1049
1050 .mwai-controls {
1051 display: flex;
1052 justify-content: center;
1053 align-items: center;
1054 margin-bottom: var(--mwai-spacing);
1055
1056 > * + * {
1057 margin-left: 10px;
1058 }
1059
1060 button {
1061 border-radius: 100%;
1062 width: 50px;
1063 height: 50px;
1064 margin: 5px;
1065 padding: 5px;
1066 display: flex;
1067 align-items: center;
1068 justify-content: center;
1069 color: var(--mwai-fontColor);
1070 border: 2px solid var(--mwai-backgroundPrimaryColor);
1071 background: none;
1072 cursor: pointer;
1073 transition: all 0.2s ease-out;
1074 min-width: inherit;
1075 max-width: inherit;
1076
1077 &:hover:not(:disabled) {
1078 background: var(--mwai-backgroundPrimaryColor);
1079 }
1080
1081 &:disabled {
1082 opacity: 0.5;
1083 cursor: not-allowed;
1084 background: none;
1085 }
1086
1087 &.mwai-active {
1088 border: 2px solid var(--mwai-fontColor);
1089 }
1090 }
1091 }
1092
1093 .mwai-last-transcript {
1094 margin: var(--mwai-spacing);
1095 margin-top: 0;
1096 border: 2px solid var(--mwai-backgroundPrimaryColor);
1097 padding: calc(var(--mwai-spacing) / 2);
1098 border-radius: var(--mwai-borderRadius);
1099 display: flex;
1100 justify-content: center;
1101 font-size: 80%;
1102 }
1103
1104 .mwai-statistics {
1105 display: grid;
1106 grid-template-columns: 1fr 1fr 1fr;
1107 grid-row-gap: 10px;
1108 font-size: 14px;
1109
1110 div {
1111 display: flex;
1112 flex-direction: column;
1113 align-items: center;
1114 }
1115
1116 label {
1117 font-size: 11px;
1118 opacity: 0.5;
1119 text-transform: uppercase;
1120 }
1121 }
1122
1123 .mwai-options {
1124 margin-top: var(--mwai-spacing);
1125 display: flex;
1126 align-items: center;
1127
1128 .mwai-option {
1129 cursor: pointer;
1130 opacity: 0.5;
1131 margin-right: 2px;
1132
1133 &.mwai-active {
1134 opacity: 1;
1135 }
1136 }
1137 }
1138 }
1139 }
1140
1141 // Context Menu Portal (appears at document body level)
1142 .mwai-context-menu-portal {
1143 .mwai-context-menu {
1144 background: var(--mwai-backgroundHeaderColor);
1145 border: 1px solid rgba(0, 0, 0, 0.1);
1146 border-radius: var(--mwai-borderRadius);
1147 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1148 font-size: 13px;
1149 color: var(--mwai-fontColor);
1150
1151 .mwai-menu-item {
1152 display: flex;
1153 align-items: center;
1154 gap: 8px;
1155 padding: 8px 12px;
1156 cursor: pointer;
1157 transition: background-color 0.2s;
1158
1159 &:hover {
1160 background-color: rgba(0, 0, 0, 0.05);
1161 }
1162
1163 &.mwai-danger {
1164 color: #dc3545;
1165
1166 &:hover {
1167 background-color: rgba(220, 53, 69, 0.1);
1168 }
1169 }
1170
1171 svg {
1172 flex-shrink: 0;
1173 }
1174 }
1175 }
1176 }
1177
1178
1179 // ChatbotChunks - Debug Stream Events Display
1180 .mwai-chunks {
1181 padding: 8px;
1182 background: rgba(0, 0, 0, 0.03);
1183 font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
1184 font-size: 11px;
1185 border-top: 1px solid rgba(0, 0, 0, 0.06);
1186
1187 &.mwai-chunks-collapsed {
1188 .mwai-chunks-header {
1189 margin-bottom: 0 !important;
1190 }
1191 }
1192
1193 .mwai-chunks-header {
1194 display: flex;
1195 align-items: center;
1196 gap: 6px;
1197 margin-bottom: 8px;
1198 color: #6b7280;
1199 font-size: 10px;
1200 text-transform: uppercase;
1201 letter-spacing: 0.05em;
1202
1203 .mwai-chunks-title {
1204 flex: 1; // This pushes the buttons to the right
1205 overflow: hidden;
1206 text-overflow: ellipsis;
1207 white-space: nowrap;
1208 }
1209
1210 .mwai-chunks-status {
1211 margin-left: 4px;
1212 font-weight: 500;
1213 }
1214
1215 .mwai-chunks-toggle {
1216 background: none;
1217 border: 1px solid rgba(0, 0, 0, 0.1);
1218 border-radius: 3px;
1219 padding: 2px;
1220 width: 30px;
1221 height: 20px;
1222 cursor: pointer;
1223 color: #6b7280;
1224 display: flex;
1225 align-items: center;
1226 justify-content: center;
1227 transition: all 0.2s ease;
1228 margin-left: 4px;
1229
1230 &:hover {
1231 background: rgba(0, 0, 0, 0.05);
1232 color: #374151;
1233 }
1234 }
1235 }
1236
1237 .mwai-chunk {
1238 margin-bottom: 4px;
1239 padding: 6px 8px;
1240 background: white;
1241 border-radius: 4px;
1242 border: 1px solid rgba(0, 0, 0, 0.06);
1243 transition: all 0.2s ease;
1244
1245 .mwai-chunk-header {
1246 display: flex;
1247 align-items: center;
1248 gap: 8px;
1249 cursor: pointer;
1250 user-select: none;
1251
1252 .mwai-chunk-time {
1253 color: #9ca3af;
1254 font-size: 10px;
1255 font-variant-numeric: tabular-nums;
1256 }
1257
1258 .mwai-chunk-type {
1259 display: flex;
1260 align-items: center;
1261 gap: 4px;
1262 padding: 2px 6px;
1263 border-radius: 3px;
1264 font-size: 10px;
1265 font-weight: 500;
1266 color: white;
1267 }
1268
1269 .mwai-chunk-data {
1270 flex: 1;
1271 color: #374151;
1272 overflow: hidden;
1273 text-overflow: ellipsis;
1274 white-space: nowrap;
1275 }
1276
1277 .mwai-chunk-expand {
1278 color: #9ca3af;
1279 transition: transform 0.2s ease;
1280 }
1281 }
1282
1283 .mwai-chunk-details {
1284 margin-top: 8px;
1285 padding: 8px;
1286 background: rgba(0, 0, 0, 0.02);
1287 border-radius: 3px;
1288 overflow-x: auto;
1289
1290 pre {
1291 margin: 0;
1292 white-space: pre-wrap;
1293 word-break: break-word;
1294 color: #4b5563;
1295 }
1296 }
1297 }
1298 }