@siact/sime-x-vue 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/style.css CHANGED
@@ -345,7 +345,7 @@
345
345
  opacity: 0;
346
346
  transform: scale(0.8);
347
347
  }
348
- .sime-x[data-v-c01a4dba] {
348
+ .sime-x[data-v-91f104d1] {
349
349
  --bg-primary: #ffffff;
350
350
  --bg-secondary: #f8fafc;
351
351
  --bg-header: #0f172a;
@@ -359,7 +359,7 @@
359
359
  --accent-color: #3b82f6;
360
360
  --hover-bg: rgba(0, 0, 0, 0.05);
361
361
  }
362
- .sime-x[data-theme=dark][data-v-c01a4dba] {
362
+ .sime-x[data-theme=dark][data-v-91f104d1] {
363
363
  --bg-primary: #1e293b;
364
364
  --bg-secondary: #0f172a;
365
365
  --bg-header: #0f172a;
@@ -373,13 +373,13 @@
373
373
  --accent-color: #60a5fa;
374
374
  --hover-bg: rgba(255, 255, 255, 0.1);
375
375
  }
376
- .is-hidden[data-v-c01a4dba] {
376
+ .is-hidden[data-v-91f104d1] {
377
377
  height: 0;
378
378
  opacity: 0 !important;
379
379
  pointer-events: none !important;
380
380
  visibility: hidden !important;
381
381
  }
382
- .assistant-fab[data-v-c01a4dba] {
382
+ .assistant-fab[data-v-91f104d1] {
383
383
  position: relative;
384
384
  cursor: pointer;
385
385
  overflow: visible;
@@ -388,30 +388,30 @@
388
388
  pointer-events: auto;
389
389
  transition: all 0.3s ease;
390
390
  }
391
- .assistant-fab[data-v-c01a4dba]:hover {
391
+ .assistant-fab[data-v-91f104d1]:hover {
392
392
  transform: scale(1.05);
393
393
  }
394
- .assistant-fab[data-v-c01a4dba]:active {
394
+ .assistant-fab[data-v-91f104d1]:active {
395
395
  transform: scale(0.95);
396
396
  }
397
- .assistant-fab .voice-status[data-v-c01a4dba] {
397
+ .assistant-fab .voice-status[data-v-91f104d1] {
398
398
  position: absolute;
399
399
  right: 100%;
400
400
  margin-right: 20px;
401
401
  }
402
- .assistant-fab img[data-v-c01a4dba] {
402
+ .assistant-fab img[data-v-91f104d1] {
403
403
  display: block;
404
404
  position: relative;
405
405
  object-fit: contain;
406
406
  }
407
- .assistant-fab .fab-pulse[data-v-c01a4dba] {
407
+ .assistant-fab .fab-pulse[data-v-91f104d1] {
408
408
  position: absolute;
409
409
  inset: -4px;
410
410
  border-radius: 50%;
411
411
  border: 2px solid var(--accent-color);
412
412
  opacity: 0;
413
413
  }
414
- @keyframes pulse-c01a4dba {
414
+ @keyframes pulse-91f104d1 {
415
415
  0%, 100% {
416
416
  opacity: 0;
417
417
  transform: scale(1);
@@ -421,7 +421,7 @@
421
421
  transform: scale(1.1);
422
422
  }
423
423
  }
424
- .x-dialog-container[data-v-c01a4dba] {
424
+ .x-dialog-container[data-v-91f104d1] {
425
425
  position: fixed;
426
426
  top: 0;
427
427
  left: 0;
@@ -435,17 +435,17 @@
435
435
  opacity: 0;
436
436
  pointer-events: none;
437
437
  }
438
- .x-dialog-container.position-ready[data-v-c01a4dba] {
438
+ .x-dialog-container.position-ready[data-v-91f104d1] {
439
439
  opacity: 1;
440
440
  pointer-events: auto;
441
441
  }
442
- .x-dialog-container[data-v-c01a4dba]:active {
442
+ .x-dialog-container[data-v-91f104d1]:active {
443
443
  cursor: grabbing;
444
444
  }
445
- .x-dialog-container.collapsed .x-dialog-header[data-v-c01a4dba] {
445
+ .x-dialog-container.collapsed .x-dialog-header[data-v-91f104d1] {
446
446
  border-radius: 16px;
447
447
  }
448
- .x-dialog-container .x-dialog-header[data-v-c01a4dba] {
448
+ .x-dialog-container .x-dialog-header[data-v-91f104d1] {
449
449
  position: relative;
450
450
  display: flex;
451
451
  justify-content: space-between;
@@ -456,12 +456,12 @@
456
456
  user-select: none;
457
457
  border-bottom: 1px solid var(--border-color);
458
458
  }
459
- .x-dialog-container .x-dialog-header .header-left[data-v-c01a4dba] {
459
+ .x-dialog-container .x-dialog-header .header-left[data-v-91f104d1] {
460
460
  display: flex;
461
461
  align-items: center;
462
462
  gap: 10px;
463
463
  }
464
- .x-dialog-container .x-dialog-header .header-left .logo-icon[data-v-c01a4dba] {
464
+ .x-dialog-container .x-dialog-header .header-left .logo-icon[data-v-91f104d1] {
465
465
  display: flex;
466
466
  align-items: center;
467
467
  justify-content: center;
@@ -469,23 +469,23 @@
469
469
  height: 36px;
470
470
  transition: transform 0.2s ease;
471
471
  }
472
- .x-dialog-container .x-dialog-header .header-left .logo-icon .logo[data-v-c01a4dba] {
472
+ .x-dialog-container .x-dialog-header .header-left .logo-icon .logo[data-v-91f104d1] {
473
473
  width: 100%;
474
474
  height: 100%;
475
475
  object-fit: contain;
476
476
  }
477
- .x-dialog-container .x-dialog-header .header-left .title[data-v-c01a4dba] {
477
+ .x-dialog-container .x-dialog-header .header-left .title[data-v-91f104d1] {
478
478
  font-weight: 600;
479
479
  font-size: 15px;
480
480
  color: var(--text-header);
481
481
  letter-spacing: -0.01em;
482
482
  }
483
- .x-dialog-container .x-dialog-header .actions[data-v-c01a4dba] {
483
+ .x-dialog-container .x-dialog-header .actions[data-v-91f104d1] {
484
484
  display: flex;
485
485
  align-items: center;
486
486
  gap: 4px;
487
487
  }
488
- .x-dialog-container .x-dialog-header .actions .action-btn[data-v-c01a4dba] {
488
+ .x-dialog-container .x-dialog-header .actions .action-btn[data-v-91f104d1] {
489
489
  display: flex;
490
490
  align-items: center;
491
491
  justify-content: center;
@@ -498,26 +498,26 @@
498
498
  transition: all 0.2s ease;
499
499
  border-radius: 8px;
500
500
  }
501
- .x-dialog-container .x-dialog-header .actions .action-btn[data-v-c01a4dba]:hover {
501
+ .x-dialog-container .x-dialog-header .actions .action-btn[data-v-91f104d1]:hover {
502
502
  color: var(--text-header);
503
503
  background: var(--hover-bg);
504
504
  transform: translateY(-1px);
505
505
  }
506
- .x-dialog-container .x-dialog-header .actions .action-btn[data-v-c01a4dba]:active {
506
+ .x-dialog-container .x-dialog-header .actions .action-btn[data-v-91f104d1]:active {
507
507
  transform: translateY(0);
508
508
  }
509
- .x-dialog-container .x-dialog-header .actions .action-btn svg[data-v-c01a4dba] {
509
+ .x-dialog-container .x-dialog-header .actions .action-btn svg[data-v-91f104d1] {
510
510
  transition: transform 0.2s ease;
511
511
  }
512
- .x-dialog-container .x-dialog-header .actions .action-btn.collapse-btn:hover svg[data-v-c01a4dba] {
512
+ .x-dialog-container .x-dialog-header .actions .action-btn.collapse-btn:hover svg[data-v-91f104d1] {
513
513
  transform: scale(1.1);
514
514
  }
515
- .x-dialog-container .voice-container[data-v-c01a4dba] {
515
+ .x-dialog-container .voice-container[data-v-91f104d1] {
516
516
  width: 100%;
517
517
  opacity: 1;
518
518
  pointer-events: auto;
519
519
  }
520
- .x-dialog-container .x-dialog-content[data-v-c01a4dba] {
520
+ .x-dialog-container .x-dialog-content[data-v-91f104d1] {
521
521
  flex: 1;
522
522
  display: flex;
523
523
  overflow: hidden;
@@ -525,13 +525,13 @@
525
525
  opacity: 1;
526
526
  pointer-events: auto;
527
527
  }
528
- .x-dialog-container .x-iframe[data-v-c01a4dba] {
528
+ .x-dialog-container .x-iframe[data-v-91f104d1] {
529
529
  flex: 1;
530
530
  width: 100%;
531
531
  height: 100%;
532
532
  border: none;
533
533
  }
534
- .x-dialog-container .resize-handle[data-v-c01a4dba] {
534
+ .x-dialog-container .resize-handle[data-v-91f104d1] {
535
535
  position: absolute;
536
536
  bottom: 0;
537
537
  right: 0;
@@ -547,38 +547,38 @@
547
547
  border-bottom-right-radius: 16px;
548
548
  z-index: 10;
549
549
  }
550
- .x-dialog-container .resize-handle[data-v-c01a4dba]:hover {
550
+ .x-dialog-container .resize-handle[data-v-91f104d1]:hover {
551
551
  color: var(--accent-color);
552
552
  background: linear-gradient(135deg, transparent 50%, var(--hover-bg) 50%);
553
553
  }
554
- .x-dialog-container .resize-handle svg[data-v-c01a4dba] {
554
+ .x-dialog-container .resize-handle svg[data-v-91f104d1] {
555
555
  width: 16px;
556
556
  height: 16px;
557
557
  transform: rotate(0deg);
558
558
  transition: transform 0.2s ease;
559
559
  }
560
- .x-dialog-container .resize-handle:hover svg[data-v-c01a4dba] {
560
+ .x-dialog-container .resize-handle:hover svg[data-v-91f104d1] {
561
561
  transform: scale(1.2);
562
562
  }
563
563
 
564
564
  /* 语音按钮状态样式 */
565
- .action-btn.theme-btn[data-v-c01a4dba] {
565
+ .action-btn.theme-btn[data-v-91f104d1] {
566
566
  position: relative;
567
567
  transition: all 0.3s ease;
568
568
  }
569
- .action-btn.theme-btn.active[data-v-c01a4dba] {
569
+ .action-btn.theme-btn.active[data-v-91f104d1] {
570
570
  background: rgba(59, 130, 246, 0.1);
571
571
  color: #3b82f6;
572
572
  }
573
- .action-btn.theme-btn.listening[data-v-c01a4dba] {
574
- animation: pulse-listening-c01a4dba 2s ease-in-out infinite;
573
+ .action-btn.theme-btn.listening[data-v-91f104d1] {
574
+ animation: pulse-listening-91f104d1 2s ease-in-out infinite;
575
575
  }
576
- .action-btn.theme-btn.woke[data-v-c01a4dba] {
576
+ .action-btn.theme-btn.woke[data-v-91f104d1] {
577
577
  background: rgba(34, 197, 94, 0.2);
578
578
  color: #22c55e;
579
- animation: pulse-wake-c01a4dba 0.6s ease-in-out;
579
+ animation: pulse-wake-91f104d1 0.6s ease-in-out;
580
580
  }
581
- @keyframes pulse-listening-c01a4dba {
581
+ @keyframes pulse-listening-91f104d1 {
582
582
  0%, 100% {
583
583
  box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4);
584
584
  }
@@ -586,7 +586,7 @@
586
586
  box-shadow: 0 0 0 8px rgba(59, 130, 246, 0);
587
587
  }
588
588
  }
589
- @keyframes pulse-wake-c01a4dba {
589
+ @keyframes pulse-wake-91f104d1 {
590
590
  0%, 100% {
591
591
  transform: scale(1);
592
592
  }
@@ -595,7 +595,7 @@
595
595
  }
596
596
  }
597
597
  /* 语音指示器 */
598
- .voice-indicator[data-v-c01a4dba] {
598
+ .voice-indicator[data-v-91f104d1] {
599
599
  position: absolute;
600
600
  top: 4px;
601
601
  right: 4px;
@@ -604,14 +604,14 @@
604
604
  border-radius: 50%;
605
605
  background: #3b82f6;
606
606
  }
607
- .action-btn.theme-btn.listening .voice-indicator[data-v-c01a4dba] {
608
- animation: blink-c01a4dba 1.5s ease-in-out infinite;
607
+ .action-btn.theme-btn.listening .voice-indicator[data-v-91f104d1] {
608
+ animation: blink-91f104d1 1.5s ease-in-out infinite;
609
609
  }
610
- .action-btn.theme-btn.woke .voice-indicator[data-v-c01a4dba] {
610
+ .action-btn.theme-btn.woke .voice-indicator[data-v-91f104d1] {
611
611
  background: #22c55e;
612
612
  animation: none;
613
613
  }
614
- @keyframes blink-c01a4dba {
614
+ @keyframes blink-91f104d1 {
615
615
  0%, 100% {
616
616
  opacity: 1;
617
617
  }
@@ -620,23 +620,23 @@
620
620
  }
621
621
  }
622
622
  /* 麦克风唤醒动画 */
623
- .listening-badge.wake-active[data-v-c01a4dba] {
623
+ .listening-badge.wake-active[data-v-91f104d1] {
624
624
  background-color: rgba(34, 197, 94, 0.85);
625
- animation: wake-badge-pop-c01a4dba 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
625
+ animation: wake-badge-pop-91f104d1 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
626
626
  }
627
- .listening-badge.wake-active .listening-icon[data-v-c01a4dba] {
628
- animation: wake-icon-flash-c01a4dba 1.5s ease-in-out;
627
+ .listening-badge.wake-active .listening-icon[data-v-91f104d1] {
628
+ animation: wake-icon-flash-91f104d1 1.5s ease-in-out;
629
629
  }
630
- .listening-badge.wake-active[data-v-c01a4dba]::after {
630
+ .listening-badge.wake-active[data-v-91f104d1]::after {
631
631
  content: "";
632
632
  position: absolute;
633
633
  inset: -3px;
634
634
  border-radius: 50%;
635
635
  border: 2px solid #22c55e;
636
- animation: wake-mic-ring-c01a4dba 1.2s ease-out forwards;
636
+ animation: wake-mic-ring-91f104d1 1.2s ease-out forwards;
637
637
  pointer-events: none;
638
638
  }
639
- @keyframes wake-badge-pop-c01a4dba {
639
+ @keyframes wake-badge-pop-91f104d1 {
640
640
  0% {
641
641
  transform: scale(1);
642
642
  }
@@ -647,7 +647,7 @@
647
647
  transform: scale(1);
648
648
  }
649
649
  }
650
- @keyframes wake-icon-flash-c01a4dba {
650
+ @keyframes wake-icon-flash-91f104d1 {
651
651
  0%, 100% {
652
652
  color: #ffffff;
653
653
  }
@@ -661,7 +661,7 @@
661
661
  color: #bbf7d0;
662
662
  }
663
663
  }
664
- @keyframes wake-mic-ring-c01a4dba {
664
+ @keyframes wake-mic-ring-91f104d1 {
665
665
  0% {
666
666
  transform: scale(1);
667
667
  opacity: 0.8;
@@ -672,7 +672,7 @@
672
672
  }
673
673
  }
674
674
  /* FAB 头像容器 */
675
- .fab-avatar-wrapper[data-v-c01a4dba] {
675
+ .fab-avatar-wrapper[data-v-91f104d1] {
676
676
  position: relative;
677
677
  display: flex; /* 改用 flex 可以消除图片底部的行高间隙 */
678
678
  align-items: center;
@@ -682,7 +682,7 @@
682
682
  }
683
683
 
684
684
  /* 2. 修正图片样式 */
685
- .fab-avatar-wrapper img[data-v-c01a4dba] {
685
+ .fab-avatar-wrapper img[data-v-91f104d1] {
686
686
  display: block;
687
687
  max-width: 100%;
688
688
  height: auto;
@@ -690,7 +690,7 @@
690
690
  }
691
691
 
692
692
  /* 3. 优化徽章定位 */
693
- .listening-badge[data-v-c01a4dba] {
693
+ .listening-badge[data-v-91f104d1] {
694
694
  position: absolute;
695
695
  /* 强制定位到容器边缘 */
696
696
  top: 0;
@@ -707,22 +707,22 @@
707
707
  z-index: 10;
708
708
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
709
709
  /* 继承你原有的动画 */
710
- animation: badge-float-c01a4dba 5s ease-in-out infinite;
710
+ animation: badge-float-91f104d1 5s ease-in-out infinite;
711
711
  pointer-events: none; /* 防止遮挡头像点击 */
712
712
  }
713
713
 
714
714
  /* 4. 调整声波扩散的基准 */
715
- .wave[data-v-c01a4dba] {
715
+ .wave[data-v-91f104d1] {
716
716
  position: absolute;
717
717
  /* 确保声波从徽章中心扩散,而不是从容器左上角 */
718
718
  inset: -2px;
719
719
  border-radius: 50%;
720
720
  border: 2px solid rgba(59, 130, 246, 0.6); /* 声波颜色建议跟主题色一致 */
721
- animation: wave-expand-c01a4dba 3s ease-out infinite;
721
+ animation: wave-expand-91f104d1 3s ease-out infinite;
722
722
  }
723
723
 
724
724
  /* 优化后的监听状态徽章 */
725
- .listening-badge[data-v-c01a4dba] {
725
+ .listening-badge[data-v-91f104d1] {
726
726
  position: absolute;
727
727
  top: -8px;
728
728
  right: -8px;
@@ -734,11 +734,11 @@
734
734
  align-items: center;
735
735
  justify-content: center;
736
736
  z-index: 10;
737
- animation: badge-float-c01a4dba 5s ease-in-out infinite;
737
+ animation: badge-float-91f104d1 5s ease-in-out infinite;
738
738
  }
739
739
 
740
740
  /* 徽章浮动动画 */
741
- @keyframes badge-float-c01a4dba {
741
+ @keyframes badge-float-91f104d1 {
742
742
  0%, 100% {
743
743
  transform: translateY(0) scale(1);
744
744
  }
@@ -747,7 +747,7 @@
747
747
  }
748
748
  }
749
749
  /* 声波容器 */
750
- .listening-waves[data-v-c01a4dba] {
750
+ .listening-waves[data-v-91f104d1] {
751
751
  position: absolute;
752
752
  inset: 0;
753
753
  display: flex;
@@ -756,24 +756,24 @@
756
756
  }
757
757
 
758
758
  /* 声波动画 */
759
- .wave[data-v-c01a4dba] {
759
+ .wave[data-v-91f104d1] {
760
760
  position: absolute;
761
761
  width: 100%;
762
762
  height: 100%;
763
763
  border-radius: 50%;
764
764
  border: 2px solid rgba(255, 255, 255, 0.6);
765
- animation: wave-expand-c01a4dba 3s ease-out infinite;
765
+ animation: wave-expand-91f104d1 3s ease-out infinite;
766
766
  }
767
- .wave-1[data-v-c01a4dba] {
767
+ .wave-1[data-v-91f104d1] {
768
768
  animation-delay: 0s;
769
769
  }
770
- .wave-2[data-v-c01a4dba] {
770
+ .wave-2[data-v-91f104d1] {
771
771
  animation-delay: 0.6s;
772
772
  }
773
- .wave-3[data-v-c01a4dba] {
773
+ .wave-3[data-v-91f104d1] {
774
774
  animation-delay: 1.2s;
775
775
  }
776
- @keyframes wave-expand-c01a4dba {
776
+ @keyframes wave-expand-91f104d1 {
777
777
  0% {
778
778
  transform: scale(0.8);
779
779
  opacity: 0.8;
@@ -784,7 +784,7 @@
784
784
  }
785
785
  }
786
786
  /* 麦克风图标 */
787
- .listening-icon[data-v-c01a4dba] {
787
+ .listening-icon[data-v-91f104d1] {
788
788
  position: relative;
789
789
  width: 24px;
790
790
  height: 24px;
@@ -793,9 +793,9 @@
793
793
  justify-content: center;
794
794
  color: #ffffff;
795
795
  z-index: 1;
796
- animation: icon-pulse-c01a4dba 2.5s ease-in-out infinite;
796
+ animation: icon-pulse-91f104d1 2.5s ease-in-out infinite;
797
797
  }
798
- @keyframes icon-pulse-c01a4dba {
798
+ @keyframes icon-pulse-91f104d1 {
799
799
  0%, 100% {
800
800
  transform: scale(1);
801
801
  }
@@ -804,23 +804,23 @@
804
804
  }
805
805
  }
806
806
  /* 徽章淡入淡出动画 */
807
- .indicator-fade-enter-active[data-v-c01a4dba] {
807
+ .indicator-fade-enter-active[data-v-91f104d1] {
808
808
  transition: all 1s cubic-bezier(0.34, 1.56, 0.64, 1);
809
809
  }
810
- .indicator-fade-leave-active[data-v-c01a4dba] {
810
+ .indicator-fade-leave-active[data-v-91f104d1] {
811
811
  transition: all 1s ease;
812
812
  }
813
- .indicator-fade-enter-from[data-v-c01a4dba] {
813
+ .indicator-fade-enter-from[data-v-91f104d1] {
814
814
  opacity: 0;
815
815
  transform: scale(0.3) rotate(-180deg);
816
816
  }
817
- .indicator-fade-leave-to[data-v-c01a4dba] {
817
+ .indicator-fade-leave-to[data-v-91f104d1] {
818
818
  opacity: 0;
819
819
  transform: scale(0.5) rotate(180deg);
820
820
  }
821
821
 
822
822
  /* FAB 脉冲效果 */
823
- .fab-pulse[data-v-c01a4dba] {
823
+ .fab-pulse[data-v-91f104d1] {
824
824
  position: absolute;
825
825
  top: 0;
826
826
  left: 0;
@@ -829,10 +829,10 @@
829
829
  border-radius: 50%;
830
830
  pointer-events: none;
831
831
  }
832
- .fab-pulse.active[data-v-c01a4dba] {
833
- animation: fab-pulse-c01a4dba 2s ease-in-out infinite;
832
+ .fab-pulse.active[data-v-91f104d1] {
833
+ animation: fab-pulse-91f104d1 2s ease-in-out infinite;
834
834
  }
835
- @keyframes fab-pulse-c01a4dba {
835
+ @keyframes fab-pulse-91f104d1 {
836
836
  0%, 100% {
837
837
  box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4);
838
838
  }
@@ -841,9 +841,338 @@
841
841
  }
842
842
  }
843
843
  /* 深色模式适配 */
844
- [data-theme=dark] .action-btn.theme-btn.active[data-v-c01a4dba] {
844
+ [data-theme=dark] .action-btn.theme-btn.active[data-v-91f104d1] {
845
845
  background: rgba(59, 130, 246, 0.2);
846
846
  }
847
- [data-theme=dark] .action-btn.theme-btn.woke[data-v-c01a4dba] {
847
+ [data-theme=dark] .action-btn.theme-btn.woke[data-v-91f104d1] {
848
848
  background: rgba(34, 197, 94, 0.3);
849
+ }
850
+ .voice-assistant[data-v-9e420a26] {
851
+ --text-primary: #e6edf7;
852
+ --text-secondary: #95a8c8;
853
+ --glass-bg: rgba(8, 16, 32, 0.72);
854
+ --glass-border: rgba(125, 160, 220, 0.28);
855
+ --shadow-md: 0 18px 36px rgba(1, 6, 20, 0.56);
856
+ --color-success: #4ade80;
857
+ --color-error: #f87171;
858
+ --color-accent: #818cf8;
859
+ position: relative;
860
+ display: inline-flex;
861
+ flex-direction: column;
862
+ align-items: flex-end;
863
+ gap: 12px;
864
+ }
865
+
866
+ /* ── FAB 按钮 ── */
867
+ .assistant-fab[data-v-9e420a26] {
868
+ position: relative;
869
+ cursor: pointer;
870
+ transition: transform 0.2s ease, filter 0.2s ease;
871
+ }
872
+ .assistant-fab[data-v-9e420a26]:hover {
873
+ transform: translateY(-1px) scale(1.03);
874
+ filter: brightness(1.06);
875
+ }
876
+ .status-pill[data-v-9e420a26] {
877
+ position: absolute;
878
+ right: calc(100% + 12px);
879
+ top: 50%;
880
+ transform: translateY(-50%);
881
+ max-width: 280px;
882
+ background: var(--glass-bg);
883
+ color: var(--text-primary);
884
+ font-size: 12px;
885
+ line-height: 1.45;
886
+ padding: 8px 13px;
887
+ border-radius: 999px;
888
+ border: 1px solid var(--glass-border);
889
+ backdrop-filter: blur(10px);
890
+ white-space: nowrap;
891
+ overflow: hidden;
892
+ text-overflow: ellipsis;
893
+ box-shadow: 0 10px 20px rgba(2, 8, 24, 0.38);
894
+ }
895
+ .fab-avatar-wrapper[data-v-9e420a26] {
896
+ position: relative;
897
+ display: flex;
898
+ align-items: center;
899
+ justify-content: center;
900
+ }
901
+ .fab-avatar-wrapper img[data-v-9e420a26] {
902
+ display: block;
903
+ height: auto;
904
+ object-fit: contain;
905
+ filter: drop-shadow(var(--shadow-md)) saturate(1.05);
906
+ }
907
+
908
+ /* ── 气泡容器 ── */
909
+ .bubble-stack[data-v-9e420a26] {
910
+ position: absolute;
911
+ right: 0;
912
+ bottom: calc(100% + 16px);
913
+ width: min(380px, 86vw);
914
+ max-height: min(58vh, 520px);
915
+ overflow: auto;
916
+ }
917
+ .bubble-stack[data-v-9e420a26]::-webkit-scrollbar {
918
+ width: 4px;
919
+ }
920
+ .bubble-stack[data-v-9e420a26]::-webkit-scrollbar-thumb {
921
+ background: rgba(126, 155, 204, 0.3);
922
+ border-radius: 999px;
923
+ }
924
+
925
+ /* ── 统一 agent 气泡 ── */
926
+ .agent-bubble[data-v-9e420a26] {
927
+ border-radius: 16px;
928
+ padding: 12px 14px;
929
+ background: radial-gradient(circle at 12% 10%, rgba(80, 122, 255, 0.14), transparent 50%), linear-gradient(155deg, rgba(24, 42, 72, 0.96), rgba(14, 24, 46, 0.97));
930
+ border: 1px solid rgba(108, 141, 204, 0.2);
931
+ box-shadow: 0 12px 32px rgba(1, 6, 20, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.04);
932
+ backdrop-filter: blur(16px);
933
+ display: flex;
934
+ flex-direction: column;
935
+ gap: 0;
936
+ animation: bubble-appear-9e420a26 0.3s cubic-bezier(0.16, 1, 0.3, 1);
937
+ }
938
+ @keyframes bubble-appear-9e420a26 {
939
+ from {
940
+ opacity: 0;
941
+ transform: translateY(8px) scale(0.97);
942
+ }
943
+ to {
944
+ opacity: 1;
945
+ transform: translateY(0) scale(1);
946
+ }
947
+ }
948
+ /* ── 工具执行步骤(内联紧凑) ── */
949
+ .tool-steps[data-v-9e420a26] {
950
+ display: flex;
951
+ flex-direction: column;
952
+ gap: 2px;
953
+ margin-bottom: 6px;
954
+ padding-bottom: 8px;
955
+ border-bottom: 1px solid rgba(125, 160, 220, 0.1);
956
+ }
957
+ .tool-step[data-v-9e420a26] {
958
+ display: flex;
959
+ align-items: center;
960
+ gap: 7px;
961
+ padding: 4px 6px;
962
+ border-radius: 8px;
963
+ transition: background 0.2s ease;
964
+ animation: step-in-9e420a26 0.25s cubic-bezier(0.16, 1, 0.3, 1);
965
+ }
966
+ .tool-step--loading .tool-step__icon[data-v-9e420a26] {
967
+ color: var(--color-accent);
968
+ }
969
+ .tool-step--loading .tool-step__name[data-v-9e420a26] {
970
+ color: rgba(200, 215, 240, 0.85);
971
+ }
972
+ .tool-step--done .tool-step__icon[data-v-9e420a26] {
973
+ color: var(--color-success);
974
+ }
975
+ .tool-step--done .tool-step__name[data-v-9e420a26] {
976
+ color: rgba(200, 215, 240, 0.55);
977
+ }
978
+ .tool-step--error .tool-step__icon[data-v-9e420a26] {
979
+ color: var(--color-error);
980
+ }
981
+ .tool-step--error .tool-step__name[data-v-9e420a26] {
982
+ color: rgba(248, 113, 113, 0.8);
983
+ }
984
+ .tool-step--executing[data-v-9e420a26] {
985
+ background: rgba(129, 140, 248, 0.06);
986
+ }
987
+ .tool-step--executing .tool-step__icon[data-v-9e420a26] {
988
+ color: var(--color-accent);
989
+ }
990
+ @keyframes step-in-9e420a26 {
991
+ from {
992
+ opacity: 0;
993
+ transform: translateX(-6px);
994
+ }
995
+ to {
996
+ opacity: 1;
997
+ transform: translateX(0);
998
+ }
999
+ }
1000
+ .tool-step__icon[data-v-9e420a26] {
1001
+ display: flex;
1002
+ align-items: center;
1003
+ justify-content: center;
1004
+ width: 18px;
1005
+ height: 18px;
1006
+ flex-shrink: 0;
1007
+ }
1008
+ .tool-step__spinner[data-v-9e420a26] {
1009
+ animation: tool-spin-9e420a26 0.8s linear infinite;
1010
+ }
1011
+ @keyframes tool-spin-9e420a26 {
1012
+ from {
1013
+ transform: rotate(0deg);
1014
+ }
1015
+ to {
1016
+ transform: rotate(360deg);
1017
+ }
1018
+ }
1019
+ .tool-step__name[data-v-9e420a26] {
1020
+ font-size: 12px;
1021
+ font-weight: 500;
1022
+ white-space: nowrap;
1023
+ overflow: hidden;
1024
+ text-overflow: ellipsis;
1025
+ transition: color 0.2s ease;
1026
+ }
1027
+ .tool-step__tag[data-v-9e420a26] {
1028
+ font-size: 10px;
1029
+ font-weight: 500;
1030
+ padding: 1px 6px;
1031
+ border-radius: 4px;
1032
+ white-space: nowrap;
1033
+ flex-shrink: 0;
1034
+ }
1035
+ .tool-step__tag--exec[data-v-9e420a26] {
1036
+ background: rgba(129, 140, 248, 0.12);
1037
+ color: var(--color-accent);
1038
+ }
1039
+
1040
+ /* ── 思考中动画 ── */
1041
+ .thinking-dots[data-v-9e420a26] {
1042
+ display: inline-flex;
1043
+ align-items: center;
1044
+ gap: 5px;
1045
+ padding: 2px 0;
1046
+ }
1047
+ .thinking-dots span[data-v-9e420a26] {
1048
+ width: 5px;
1049
+ height: 5px;
1050
+ border-radius: 50%;
1051
+ background: var(--text-secondary);
1052
+ animation: thinking-bounce-9e420a26 1s infinite ease-in-out;
1053
+ }
1054
+ .thinking-dots span[data-v-9e420a26]:nth-child(2) {
1055
+ animation-delay: 0.15s;
1056
+ }
1057
+ .thinking-dots span[data-v-9e420a26]:nth-child(3) {
1058
+ animation-delay: 0.3s;
1059
+ }
1060
+ @keyframes thinking-bounce-9e420a26 {
1061
+ 0%, 100% {
1062
+ transform: translateY(0);
1063
+ opacity: 0.3;
1064
+ }
1065
+ 50% {
1066
+ transform: translateY(-3px);
1067
+ opacity: 1;
1068
+ }
1069
+ }
1070
+ /* ── 文本内容 ── */
1071
+ .agent-text[data-v-9e420a26] {
1072
+ font-size: 14px;
1073
+ line-height: 1.55;
1074
+ color: var(--text-primary);
1075
+ white-space: pre-wrap;
1076
+ word-break: break-word;
1077
+ }
1078
+
1079
+ /* ── 气泡淡入淡出过渡 ── */
1080
+ .bubble-fade-enter-active[data-v-9e420a26] {
1081
+ transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);
1082
+ }
1083
+ .bubble-fade-leave-active[data-v-9e420a26] {
1084
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
1085
+ }
1086
+ .bubble-fade-enter-from[data-v-9e420a26] {
1087
+ opacity: 0;
1088
+ transform: translateY(12px) scale(0.95);
1089
+ }
1090
+ .bubble-fade-leave-to[data-v-9e420a26] {
1091
+ opacity: 0;
1092
+ transform: translateY(8px) scale(0.97);
1093
+ }
1094
+
1095
+ /* ── 监听状态指示器 ── */
1096
+ .listening-badge[data-v-9e420a26] {
1097
+ position: absolute;
1098
+ top: -8px;
1099
+ right: -8px;
1100
+ width: 32px;
1101
+ height: 32px;
1102
+ border-radius: 50%;
1103
+ background-color: rgba(0, 0, 0, 0.72);
1104
+ display: flex;
1105
+ align-items: center;
1106
+ justify-content: center;
1107
+ }
1108
+ .listening-waves[data-v-9e420a26] {
1109
+ position: absolute;
1110
+ inset: 0;
1111
+ display: flex;
1112
+ align-items: center;
1113
+ justify-content: center;
1114
+ }
1115
+ .wave[data-v-9e420a26] {
1116
+ position: absolute;
1117
+ width: 100%;
1118
+ height: 100%;
1119
+ border-radius: 50%;
1120
+ border: 2px solid rgba(255, 255, 255, 0.65);
1121
+ animation: wave-expand-9e420a26 3s ease-out infinite;
1122
+ }
1123
+ .wave-1[data-v-9e420a26] {
1124
+ animation-delay: 0s;
1125
+ }
1126
+ .wave-2[data-v-9e420a26] {
1127
+ animation-delay: 0.6s;
1128
+ }
1129
+ .wave-3[data-v-9e420a26] {
1130
+ animation-delay: 1.2s;
1131
+ }
1132
+ .listening-icon[data-v-9e420a26] {
1133
+ position: relative;
1134
+ color: #fff;
1135
+ }
1136
+ .listening-badge.wake-active[data-v-9e420a26] {
1137
+ background-color: rgba(34, 197, 94, 0.9);
1138
+ animation: wake-badge-pop-9e420a26 0.35s ease;
1139
+ }
1140
+ .indicator-fade-enter-active[data-v-9e420a26],
1141
+ .indicator-fade-leave-active[data-v-9e420a26] {
1142
+ transition: all 0.2s ease;
1143
+ }
1144
+ .indicator-fade-enter-from[data-v-9e420a26],
1145
+ .indicator-fade-leave-to[data-v-9e420a26] {
1146
+ opacity: 0;
1147
+ transform: translateY(6px);
1148
+ }
1149
+ @media (max-width: 768px) {
1150
+ .bubble-stack[data-v-9e420a26] {
1151
+ width: min(320px, 88vw);
1152
+ max-height: min(54vh, 420px);
1153
+ }
1154
+ .status-pill[data-v-9e420a26] {
1155
+ max-width: 220px;
1156
+ }
1157
+ }
1158
+ @keyframes wave-expand-9e420a26 {
1159
+ 0% {
1160
+ transform: scale(0.8);
1161
+ opacity: 0.8;
1162
+ }
1163
+ 100% {
1164
+ transform: scale(1.2);
1165
+ opacity: 0;
1166
+ }
1167
+ }
1168
+ @keyframes wake-badge-pop-9e420a26 {
1169
+ 0% {
1170
+ transform: scale(1);
1171
+ }
1172
+ 50% {
1173
+ transform: scale(1.35);
1174
+ }
1175
+ 100% {
1176
+ transform: scale(1);
1177
+ }
849
1178
  }