PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.9.2
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.9.2
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 1 year ago chatgpt.scss 1 year ago messages.scss 1 year ago timeless.scss 1 year ago
_common.scss
1256 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 .mwai-error {
642 margin: var(--mwai-spacing);
643 color: white;
644 background: rgba(180, 55, 55, 0.55);
645 padding: var(--mwai-spacing);
646 border-radius: var(--mwai-borderRadius);
647
648 &:hover {
649 cursor: pointer;
650 background: rgba(180, 44, 44, 0.85);
651 }
652 }
653
654 &.mwai-bubble .mwai-icon-container {
655 background: var(--mwai-bubbleColor);
656 width: 60px;
657 height: 60px;
658 border-radius: 100%;
659 transition: all 0.2s ease-out;
660 display: flex;
661 justify-content: center;
662 align-items: center;
663
664 .mwai-icon {
665 max-width: 50%;
666 max-height: 50%;
667 filter: none;
668
669 &:hover {
670 transform: none;
671 }
672 }
673
674 .mwai-emoji {
675 font-size: 30px !important;
676 }
677
678 &:hover {
679 cursor: pointer;
680 filter: brightness(1.1);
681 }
682 }
683
684 @media (max-width: 760px) {
685 &.mwai-window.mwai-open {
686 @include fullscreen-window;
687
688 .mwai-input {
689 flex-direction: column;
690
691 button {
692 font-size: 16px;
693 margin-left: 0;
694 width: 100%;
695 }
696
697 .mwai-input-text {
698 //margin-bottom: var(--mwai-spacing);
699 width: 100%;
700
701 // This is to avoid iOS from zooming in when focusing on an input field.
702 input, textarea {
703 font-size: 16px;
704 }
705 }
706 }
707
708 .mwai-body {
709 display: flex;
710 transition: opacity 200ms ease-in-out 0s;
711 opacity: 1;
712 height: 100%;
713 max-height: inherit;
714
715 .mwai-conversation {
716 flex: auto;
717 max-height: none;
718 }
719 }
720
721 .mwai-resize-button {
722 display: none !important;
723 }
724
725 .mwai-trigger {
726 display: none;
727 }
728 }
729 }
730
731 // Keyframes for buttons
732
733 @keyframes mwai-button-spinner {
734
735 from {
736 transform: rotate(0turn);
737 }
738 to {
739 transform: rotate(1turn);
740 }
741 }
742
743 // Safari-specific fix for spinner cleanup
744 button:not(.mwai-busy):before {
745 content: none !important;
746 display: none !important;
747 animation: none !important;
748 }
749
750 // WordPress Admin Bar
751
752 .admin-bar .mwai-fullscreen:not(.mwai-window),
753 .admin-bar .mwai-fullscreen.mwai-window.mwai-open {
754 top: 32px;
755 }
756 }
757
758 @mixin code-dark {
759
760 pre code.hljs {
761 display: block;
762 overflow-x: auto;
763 padding: 1em;
764 }
765
766 code.hljs {
767 padding: 3px 5px;
768 }
769
770 .hljs {
771 color: #fff;
772
773 &-subst {
774 color: #fff;
775 }
776
777 &-comment {
778 color: #999;
779 }
780
781 &-attr,
782 &-doctag,
783 &-keyword,
784 &-meta .hljs-keyword,
785 &-section,
786 &-selector-tag {
787 color: #88aece;
788 }
789
790 &-attribute {
791 color: #c59bc1;
792 }
793
794 &-name,
795 &-number,
796 &-quote,
797 &-selector-id,
798 &-template-tag,
799 &-type {
800 color: #f08d49;
801 }
802
803 &-selector-class {
804 color: #88aece;
805 }
806
807 &-link,
808 &-regexp,
809 &-selector-attr,
810 &-string,
811 &-symbol,
812 &-template-variable,
813 &-variable {
814 color: #b5bd68;
815 }
816
817 &-meta,
818 &-selector-pseudo {
819 color: #88aece;
820 }
821
822 &-built_in,
823 &-literal,
824 &-title {
825 color: #f08d49;
826 }
827
828 &-bullet,
829 &-code {
830 color: #ccc;
831 }
832
833 &-meta .hljs-string {
834 color: #b5bd68;
835 }
836
837 &-deletion {
838 color: #de7176;
839 }
840
841 &-addition {
842 color: #76c490;
843 }
844
845 &-emphasis {
846 font-style: italic;
847 }
848
849 &-strong {
850 font-weight: 700;
851 }
852 }
853 }
854
855 @mixin code-light {
856
857 pre code.hljs {
858 display: block;
859 overflow-x: auto;
860 padding: 1em;
861 }
862
863 code.hljs {
864 padding: 3px 5px;
865 }
866
867 .hljs {
868 color: #333;
869 background: #f0f0f0;
870
871 &-subst {
872 color: #333;
873 }
874
875 &-comment {
876 color: #888;
877 }
878
879 &-attr,
880 &-doctag,
881 &-keyword,
882 &-meta .hljs-keyword,
883 &-section,
884 &-selector-tag {
885 color: #0077cc;
886 }
887
888 &-attribute {
889 color: #aa3377;
890 }
891
892 &-name,
893 &-number,
894 &-quote,
895 &-selector-id,
896 &-template-tag,
897 &-type {
898 color: #c18401;
899 }
900
901 &-selector-class {
902 color: #0077cc;
903 }
904
905 &-link,
906 &-regexp,
907 &-selector-attr,
908 &-string,
909 &-symbol,
910 &-template-variable,
911 &-variable {
912 color: #689700;
913 }
914
915 &-meta,
916 &-selector-pseudo {
917 color: #0077cc;
918 }
919
920 &-built_in,
921 &-literal,
922 &-title {
923 color: #c18401;
924 }
925
926 &-bullet,
927 &-code {
928 color: #555;
929 }
930
931 &-meta .hljs-string {
932 color: #689700;
933 }
934
935 &-deletion {
936 color: #b71c1c;
937 }
938
939 &-addition {
940 color: #1b5e20;
941 }
942
943 &-emphasis {
944 font-style: italic;
945 }
946
947 &-strong {
948 font-weight: 700;
949 }
950 }
951 }
952
953 @mixin reply-actions {
954 .mwai-reply-actions {
955 position: absolute;
956 border-radius: 5px;
957 top: 10px;
958 right: 10px;
959 display: flex;
960 align-items: center;
961 padding: 2px 2px;
962 z-index: 100;
963 background: var(--mwai-backgroundPrimaryColor);
964 box-shadow: 0 0 8px rgba(0, 0, 0, 0.25);
965 z-index: 100;
966
967 .mwai-copy-button {
968 fill: var(--mwai-fontColor);
969 padding: 3px 5px;
970 width: 24px;
971 height: 24px;
972 background: var(--mwai-backgroundPrimaryColor);
973 cursor: pointer;
974 border-radius: 5px;
975
976 &:hover {
977 filter: brightness(1.2);
978 }
979 }
980
981 &.mwai-hidden {
982 opacity: 0;
983 }
984 }
985 }
986
987 @mixin realtime {
988 .mwai-realtime {
989 padding: var(--mwai-spacing);
990
991 .mwai-visualizer {
992 display: flex;
993 justify-content: center;
994 align-items: center;
995
996 hr {
997 width: 100px;
998 margin-right: var(--mwai-spacing);
999 margin-left: var(--mwai-spacing);
1000 border: 1px solid var(--mwai-backgroundPrimaryColor);
1001 }
1002
1003 .mwai-animation {
1004 background: var(--mwai-backgroundPrimaryColor);
1005 }
1006 }
1007
1008 .mwai-controls {
1009 display: flex;
1010 justify-content: center;
1011 align-items: center;
1012 margin-bottom: var(--mwai-spacing);
1013
1014 > * + * {
1015 margin-left: 10px;
1016 }
1017
1018 button {
1019 border-radius: 100%;
1020 width: 50px;
1021 height: 50px;
1022 margin: 5px;
1023 padding: 5px;
1024 display: flex;
1025 align-items: center;
1026 justify-content: center;
1027 color: var(--mwai-fontColor);
1028 border: 2px solid var(--mwai-backgroundPrimaryColor);
1029 background: none;
1030 cursor: pointer;
1031 transition: all 0.2s ease-out;
1032 min-width: inherit;
1033 max-width: inherit;
1034
1035 &:hover:not(:disabled) {
1036 background: var(--mwai-backgroundPrimaryColor);
1037 }
1038
1039 &:disabled {
1040 opacity: 0.5;
1041 cursor: not-allowed;
1042 background: none;
1043 }
1044
1045 &.mwai-active {
1046 border: 2px solid var(--mwai-fontColor);
1047 }
1048 }
1049 }
1050
1051 .mwai-last-transcript {
1052 margin: var(--mwai-spacing);
1053 margin-top: 0;
1054 border: 2px solid var(--mwai-backgroundPrimaryColor);
1055 padding: calc(var(--mwai-spacing) / 2);
1056 border-radius: var(--mwai-borderRadius);
1057 display: flex;
1058 justify-content: center;
1059 font-size: 80%;
1060 }
1061
1062 .mwai-statistics {
1063 display: grid;
1064 grid-template-columns: 1fr 1fr 1fr;
1065 grid-row-gap: 10px;
1066 font-size: 14px;
1067
1068 div {
1069 display: flex;
1070 flex-direction: column;
1071 align-items: center;
1072 }
1073
1074 label {
1075 font-size: 11px;
1076 opacity: 0.5;
1077 text-transform: uppercase;
1078 }
1079 }
1080
1081 .mwai-options {
1082 margin-top: var(--mwai-spacing);
1083 display: flex;
1084 align-items: center;
1085
1086 .mwai-option {
1087 cursor: pointer;
1088 opacity: 0.5;
1089 margin-right: 2px;
1090
1091 &.mwai-active {
1092 opacity: 1;
1093 }
1094 }
1095 }
1096 }
1097 }
1098
1099 // Context Menu Portal (appears at document body level)
1100 .mwai-context-menu-portal {
1101 .mwai-context-menu {
1102 background: var(--mwai-backgroundHeaderColor);
1103 border: 1px solid rgba(0, 0, 0, 0.1);
1104 border-radius: var(--mwai-borderRadius);
1105 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1106 font-size: 13px;
1107 color: var(--mwai-fontColor);
1108
1109 .mwai-menu-item {
1110 display: flex;
1111 align-items: center;
1112 gap: 8px;
1113 padding: 8px 12px;
1114 cursor: pointer;
1115 transition: background-color 0.2s;
1116
1117 &:hover {
1118 background-color: rgba(0, 0, 0, 0.05);
1119 }
1120
1121 &.mwai-danger {
1122 color: #dc3545;
1123
1124 &:hover {
1125 background-color: rgba(220, 53, 69, 0.1);
1126 }
1127 }
1128
1129 svg {
1130 flex-shrink: 0;
1131 }
1132 }
1133 }
1134 }
1135
1136
1137 // ChatbotChunks - Debug Stream Events Display
1138 .mwai-chunks {
1139 padding: 8px;
1140 background: rgba(0, 0, 0, 0.03);
1141 font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
1142 font-size: 11px;
1143 border-top: 1px solid rgba(0, 0, 0, 0.06);
1144
1145 &.mwai-chunks-collapsed {
1146 .mwai-chunks-header {
1147 margin-bottom: 0 !important;
1148 }
1149 }
1150
1151 .mwai-chunks-header {
1152 display: flex;
1153 align-items: center;
1154 gap: 6px;
1155 margin-bottom: 8px;
1156 color: #6b7280;
1157 font-size: 10px;
1158 text-transform: uppercase;
1159 letter-spacing: 0.05em;
1160
1161 .mwai-chunks-title {
1162 flex: 1; // This pushes the buttons to the right
1163 overflow: hidden;
1164 text-overflow: ellipsis;
1165 white-space: nowrap;
1166 }
1167
1168 .mwai-chunks-status {
1169 margin-left: 4px;
1170 font-weight: 500;
1171 }
1172
1173 .mwai-chunks-toggle {
1174 background: none;
1175 border: 1px solid rgba(0, 0, 0, 0.1);
1176 border-radius: 3px;
1177 padding: 2px;
1178 width: 30px;
1179 height: 20px;
1180 cursor: pointer;
1181 color: #6b7280;
1182 display: flex;
1183 align-items: center;
1184 justify-content: center;
1185 transition: all 0.2s ease;
1186 margin-left: 4px;
1187
1188 &:hover {
1189 background: rgba(0, 0, 0, 0.05);
1190 color: #374151;
1191 }
1192 }
1193 }
1194
1195 .mwai-chunk {
1196 margin-bottom: 4px;
1197 padding: 6px 8px;
1198 background: white;
1199 border-radius: 4px;
1200 border: 1px solid rgba(0, 0, 0, 0.06);
1201 transition: all 0.2s ease;
1202
1203 .mwai-chunk-header {
1204 display: flex;
1205 align-items: center;
1206 gap: 8px;
1207 cursor: pointer;
1208 user-select: none;
1209
1210 .mwai-chunk-time {
1211 color: #9ca3af;
1212 font-size: 10px;
1213 font-variant-numeric: tabular-nums;
1214 }
1215
1216 .mwai-chunk-type {
1217 display: flex;
1218 align-items: center;
1219 gap: 4px;
1220 padding: 2px 6px;
1221 border-radius: 3px;
1222 font-size: 10px;
1223 font-weight: 500;
1224 color: white;
1225 }
1226
1227 .mwai-chunk-data {
1228 flex: 1;
1229 color: #374151;
1230 overflow: hidden;
1231 text-overflow: ellipsis;
1232 white-space: nowrap;
1233 }
1234
1235 .mwai-chunk-expand {
1236 color: #9ca3af;
1237 transition: transform 0.2s ease;
1238 }
1239 }
1240
1241 .mwai-chunk-details {
1242 margin-top: 8px;
1243 padding: 8px;
1244 background: rgba(0, 0, 0, 0.02);
1245 border-radius: 3px;
1246 overflow-x: auto;
1247
1248 pre {
1249 margin: 0;
1250 white-space: pre-wrap;
1251 word-break: break-word;
1252 color: #4b5563;
1253 }
1254 }
1255 }
1256 }