@webless/agent 0.12.1 → 0.13.1

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/react.css CHANGED
@@ -18,6 +18,22 @@
18
18
  --as-radius-sm: 8px;
19
19
  --as-radius-md: 12px;
20
20
  --as-radius-lg: 16px;
21
+ --as-brand-mark-size: 24px;
22
+ --as-brand-mark-size-compact: 22px;
23
+ --as-brand-wordmark-header-height: 20px;
24
+ --as-brand-wordmark-header-max-width: 96px;
25
+ --as-brand-wordmark-message-height: 18px;
26
+ --as-brand-wordmark-message-max-width: 80px;
27
+ --as-brand-identity-gap: 6px;
28
+ --as-discovery-row-min-height: 46px;
29
+ --as-discovery-row-padding: 12px 16px;
30
+ --as-discovery-row-gap: 10px;
31
+ --as-discovery-row-font-size: 14px;
32
+ --as-discovery-row-font-weight: 400;
33
+ --as-discovery-row-line-height: 1.5;
34
+ --as-focus-inset-ring: inset 0 0 0 2px var(--as-brand);
35
+ --as-focus-link-padding-block: 2px;
36
+ --as-focus-link-padding-inline: 4px;
21
37
  --as-font-body:
22
38
  "Mulish",
23
39
  "Avenir Next",
@@ -39,11 +55,26 @@
39
55
  color: var(--as-text);
40
56
  -webkit-font-smoothing: antialiased;
41
57
  }
58
+ .webless-agent-root img.as-brand-logo-img {
59
+ display: block;
60
+ flex-shrink: 0;
61
+ object-fit: contain;
62
+ object-position: left center;
63
+ image-rendering: -webkit-optimize-contrast;
64
+ image-rendering: high-quality;
65
+ }
42
66
  .webless-agent-root button,
43
67
  .webless-agent-root input,
44
68
  .webless-agent-root textarea {
45
69
  font: inherit;
46
70
  }
71
+ .webless-agent-root :is(a[href], button:not(:disabled), summary) {
72
+ cursor: pointer;
73
+ }
74
+ .webless-agent-root :is(a[href], button:not(:disabled), summary) :is(*, svg) {
75
+ cursor: inherit;
76
+ pointer-events: none;
77
+ }
47
78
  @media (prefers-reduced-motion: reduce) {
48
79
  .webless-agent-root *,
49
80
  .webless-agent-root *::before,
@@ -547,6 +578,263 @@ html.webless-agent-page-shift {
547
578
  }
548
579
  }
549
580
 
581
+ /* src/react/components/LearnMore/LearnMore.css */
582
+ .learn-more {
583
+ width: 100%;
584
+ min-width: 0;
585
+ }
586
+ .learn-more__heading {
587
+ margin: 0;
588
+ font-size: 12.5px;
589
+ font-weight: 650;
590
+ line-height: 1.5;
591
+ }
592
+ .learn-more__toggle {
593
+ appearance: none;
594
+ display: inline-flex;
595
+ align-items: center;
596
+ justify-content: flex-start;
597
+ gap: 4px;
598
+ min-height: 44px;
599
+ margin: 0;
600
+ padding: 10px 16px;
601
+ border: 0;
602
+ border-radius: 8px;
603
+ background: transparent;
604
+ color: var(--as-text-muted);
605
+ font: inherit;
606
+ font-size: 12.5px;
607
+ font-weight: 650;
608
+ text-align: left;
609
+ cursor: pointer;
610
+ transition: background 150ms ease, color 150ms ease;
611
+ }
612
+ .learn-more .learn-more__toggle {
613
+ width: auto;
614
+ background: transparent;
615
+ }
616
+ .learn-more .learn-more__toggle:hover {
617
+ color: var(--as-brand);
618
+ background: var(--as-brand-soft);
619
+ }
620
+ .learn-more__toggle:focus-visible {
621
+ outline: 2px solid var(--as-brand);
622
+ outline-offset: 2px;
623
+ }
624
+ .learn-more__chevron {
625
+ width: 14px;
626
+ height: 14px;
627
+ transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
628
+ }
629
+ .learn-more__toggle[aria-expanded=true] .learn-more__chevron {
630
+ transform: rotate(180deg);
631
+ }
632
+ .learn-more__panel {
633
+ display: grid;
634
+ grid-template-rows: 0fr;
635
+ visibility: hidden;
636
+ transition: grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 220ms;
637
+ }
638
+ .learn-more__panel--open {
639
+ grid-template-rows: 1fr;
640
+ visibility: visible;
641
+ transition: grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1);
642
+ }
643
+ .learn-more__panel-inner {
644
+ min-height: 0;
645
+ overflow: hidden;
646
+ }
647
+ .learn-more__questions {
648
+ margin: 0;
649
+ padding: 0 0 4px;
650
+ list-style: none;
651
+ }
652
+ .learn-more__questions li {
653
+ border-bottom: 1px solid var(--as-border);
654
+ }
655
+ .learn-more__questions li:last-child {
656
+ border-bottom: 0;
657
+ }
658
+ .learn-more__questions button {
659
+ appearance: none;
660
+ display: flex;
661
+ align-items: center;
662
+ gap: var(--as-discovery-row-gap);
663
+ width: 100%;
664
+ min-height: var(--as-discovery-row-min-height);
665
+ padding: var(--as-discovery-row-padding);
666
+ border: 0;
667
+ border-radius: 6px;
668
+ background: transparent;
669
+ color: var(--as-text);
670
+ text-align: left;
671
+ font: inherit;
672
+ font-size: var(--as-discovery-row-font-size);
673
+ font-weight: var(--as-discovery-row-font-weight);
674
+ line-height: var(--as-discovery-row-line-height);
675
+ cursor: pointer;
676
+ }
677
+ .learn-more__question-icon {
678
+ display: inline-flex;
679
+ flex: 0 0 18px;
680
+ color: var(--as-text-muted);
681
+ }
682
+ .learn-more__question-text {
683
+ min-width: 0;
684
+ flex: 1;
685
+ overflow-wrap: anywhere;
686
+ }
687
+ .learn-more__question-arrow {
688
+ width: 18px;
689
+ height: 18px;
690
+ flex-shrink: 0;
691
+ color: var(--as-text-muted);
692
+ }
693
+ .learn-more .learn-more__questions button:hover:not(:disabled) {
694
+ background: var(--as-brand-soft);
695
+ color: var(--as-brand);
696
+ }
697
+ .learn-more .learn-more__questions button:hover:not(:disabled) .learn-more__question-arrow {
698
+ color: var(--as-brand);
699
+ }
700
+ .learn-more__questions button:focus-visible {
701
+ outline: none;
702
+ box-shadow: var(--as-focus-inset-ring);
703
+ }
704
+ .learn-more__questions button:disabled {
705
+ opacity: 0.5;
706
+ cursor: default;
707
+ }
708
+ @media (prefers-reduced-motion: reduce) {
709
+ .learn-more__panel {
710
+ transition: none;
711
+ }
712
+ .learn-more__chevron {
713
+ transition: none;
714
+ }
715
+ }
716
+
717
+ /* src/react/components/SearchReferences/SearchReferences.css */
718
+ .search-references {
719
+ display: grid;
720
+ width: 100%;
721
+ min-width: 0;
722
+ gap: 16px;
723
+ margin-top: 12px;
724
+ }
725
+ .search-references__heading {
726
+ width: fit-content;
727
+ min-height: 32px;
728
+ box-sizing: border-box;
729
+ padding: 6px 0;
730
+ margin: 0;
731
+ color: var(--as-text);
732
+ font-size: 12px;
733
+ font-weight: 600;
734
+ line-height: 1.5;
735
+ cursor: pointer;
736
+ }
737
+ .search-references__disclosure[open] > summary {
738
+ margin-bottom: 8px;
739
+ }
740
+ .search-references__list {
741
+ display: grid;
742
+ margin: 0;
743
+ padding: 0;
744
+ list-style: none;
745
+ }
746
+ .search-references__list > li {
747
+ border-bottom: 1px solid var(--as-border);
748
+ }
749
+ .search-references__list > li:last-child {
750
+ border-bottom: 0;
751
+ }
752
+ .search-references__source {
753
+ display: flex;
754
+ min-width: 0;
755
+ min-height: var(--as-discovery-row-min-height);
756
+ box-sizing: border-box;
757
+ align-items: center;
758
+ gap: var(--as-discovery-row-gap);
759
+ padding: var(--as-discovery-row-padding);
760
+ border-radius: 6px;
761
+ background: transparent;
762
+ color: var(--as-text);
763
+ font-size: var(--as-discovery-row-font-size);
764
+ font-weight: var(--as-discovery-row-font-weight);
765
+ line-height: var(--as-discovery-row-line-height);
766
+ text-decoration: none;
767
+ }
768
+ .search-references__icon {
769
+ display: inline-flex;
770
+ flex: 0 0 18px;
771
+ color: var(--as-text-muted);
772
+ }
773
+ .search-references__icon img {
774
+ width: 18px;
775
+ height: 18px;
776
+ border-radius: 4px;
777
+ object-fit: contain;
778
+ }
779
+ .search-references__title {
780
+ min-width: 0;
781
+ flex: 1;
782
+ overflow-wrap: anywhere;
783
+ font: inherit;
784
+ }
785
+ .search-references__actions {
786
+ display: flex;
787
+ flex-wrap: wrap;
788
+ gap: 8px;
789
+ }
790
+ .search-references__cta {
791
+ display: inline-flex;
792
+ max-width: 100%;
793
+ min-height: 44px;
794
+ box-sizing: border-box;
795
+ align-items: center;
796
+ justify-content: center;
797
+ padding: 10px 20px;
798
+ border: 1px solid var(--as-brand);
799
+ border-radius: 999px;
800
+ color: var(--as-text);
801
+ font-size: 13px;
802
+ font-weight: 650;
803
+ line-height: 1.5;
804
+ overflow-wrap: anywhere;
805
+ text-decoration: none;
806
+ }
807
+ .search-references__list .search-references__source[href]:hover,
808
+ .search-references .search-references__cta:hover {
809
+ background: var(--as-brand-soft);
810
+ color: var(--as-brand);
811
+ }
812
+ .search-references__list .search-references__source[href]:hover .search-references__row-arrow {
813
+ color: var(--as-brand);
814
+ }
815
+ .search-references a:focus-visible,
816
+ .search-references summary:focus-visible {
817
+ outline: 2px solid var(--as-brand);
818
+ outline-offset: 2px;
819
+ }
820
+ .search-references__list .search-references__source:focus-visible {
821
+ outline: none;
822
+ box-shadow: var(--as-focus-inset-ring);
823
+ }
824
+ .message-bubble__text:has(.search-references) {
825
+ width: 100%;
826
+ }
827
+ .search-references > details,
828
+ .search-references__list > li {
829
+ min-width: 0;
830
+ }
831
+ .search-references__row-arrow {
832
+ width: 18px;
833
+ height: 18px;
834
+ flex-shrink: 0;
835
+ color: var(--as-text-muted);
836
+ }
837
+
550
838
  /* src/react/components/AnswerReceiptDialog/AnswerReceiptDialog.css */
551
839
  .agent-receipt-dialog {
552
840
  position: absolute;
@@ -668,13 +956,17 @@ html.webless-agent-page-shift {
668
956
  }
669
957
  .composer__field {
670
958
  display: flex;
671
- align-items: center;
959
+ align-items: flex-end;
672
960
  gap: 6px;
673
961
  padding: 5px 5px 5px 14px;
674
962
  border: 1px solid var(--as-control-border, color-mix(in srgb, var(--as-text) 14%, transparent));
675
963
  border-radius: 999px;
676
964
  background: var(--as-surface);
677
965
  box-shadow: 0 1px 2px color-mix(in srgb, var(--as-text) 5%, transparent);
966
+ transition: border-radius 180ms cubic-bezier(0.22, 1, 0.36, 1);
967
+ }
968
+ .composer--multiline .composer__field {
969
+ border-radius: 20px;
678
970
  }
679
971
  .composer__field:focus-within {
680
972
  border-color: color-mix(in srgb, var(--as-brand) 42%, var(--as-border));
@@ -731,7 +1023,7 @@ html.webless-agent-page-shift {
731
1023
  outline-offset: 2px;
732
1024
  }
733
1025
  .composer--dock .composer__field {
734
- align-items: center;
1026
+ align-items: flex-end;
735
1027
  padding: 5px 5px 5px 14px;
736
1028
  background: var(--as-surface);
737
1029
  border: 1px solid var(--as-control-border, color-mix(in srgb, var(--as-text) 14%, transparent));
@@ -742,6 +1034,9 @@ html.webless-agent-page-shift {
742
1034
  border-color: color-mix(in srgb, var(--as-brand) 42%, var(--as-border));
743
1035
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--as-brand) 10%, transparent);
744
1036
  }
1037
+ .composer--dock.composer--multiline .composer__field {
1038
+ border-radius: 24px;
1039
+ }
745
1040
  .composer--dock .composer__input {
746
1041
  padding: 11px 0;
747
1042
  font-size: 15px;
@@ -950,6 +1245,9 @@ html.webless-agent-page-shift {
950
1245
  .composer--form .composer__sheet {
951
1246
  animation: none;
952
1247
  }
1248
+ .composer__field {
1249
+ transition: none;
1250
+ }
953
1251
  .composer__send {
954
1252
  transition: none;
955
1253
  }
@@ -1035,151 +1333,46 @@ html.webless-agent-page-shift {
1035
1333
  color 0.15s ease;
1036
1334
  word-break: break-word;
1037
1335
  }
1038
- .followups__chip:hover:not(:disabled) {
1039
- border-color: color-mix(in srgb, var(--as-brand) 32%, var(--as-border));
1040
- background: var(--as-brand-soft);
1041
- color: var(--as-brand);
1042
- }
1043
- .followups__chip:disabled {
1044
- opacity: 0.5;
1045
- cursor: not-allowed;
1046
- }
1047
- .followups--dock {
1048
- width: 100%;
1049
- gap: 0;
1050
- }
1051
- .followups__scroll {
1052
- display: flex;
1053
- gap: 8px;
1054
- justify-content: flex-start;
1055
- overflow-x: auto;
1056
- padding: 2px;
1057
- scrollbar-width: none;
1058
- -ms-overflow-style: none;
1059
- }
1060
- .followups__scroll::-webkit-scrollbar {
1061
- display: none;
1062
- }
1063
- .followups__chip--dock {
1064
- display: inline-flex;
1065
- align-items: center;
1066
- flex: 0 0 auto;
1336
+ .followups .followups__chip {
1067
1337
  width: auto;
1068
- max-width: none;
1069
- padding: 8px 12px;
1070
- border-radius: 999px;
1071
- font-size: 12px;
1072
- font-weight: 600;
1073
- white-space: nowrap;
1074
- text-align: left;
1075
- }
1076
-
1077
- /* src/react/components/SearchReferences/SearchReferences.css */
1078
- .search-references {
1079
- display: grid;
1080
- width: 100%;
1081
- min-width: 0;
1082
- gap: 16px;
1083
- margin-top: 12px;
1084
- }
1085
- .search-references__heading {
1086
- width: fit-content;
1087
- min-height: 32px;
1088
- box-sizing: border-box;
1089
- padding: 6px 0;
1090
- margin: 0;
1091
- color: var(--as-text);
1092
- font-size: 12px;
1093
- font-weight: 600;
1094
- line-height: 1.5;
1095
- cursor: pointer;
1096
- }
1097
- .search-references__disclosure[open] > summary {
1098
- margin-bottom: 8px;
1099
- }
1100
- .search-references__list {
1101
- display: grid;
1102
- gap: 6px;
1103
- margin: 0;
1104
- padding: 0;
1105
- list-style: none;
1106
1338
  }
1107
- .search-references__source {
1108
- display: flex;
1109
- min-width: 0;
1110
- min-height: 52px;
1111
- box-sizing: border-box;
1112
- align-items: center;
1113
- gap: 10px;
1114
- padding: 8px 10px;
1115
- border-radius: var(--as-radius-sm, 8px);
1116
- background: var(--as-surface-muted);
1117
- color: var(--as-text);
1118
- text-decoration: none;
1119
- }
1120
- .search-references__icon {
1121
- display: inline-flex;
1122
- flex: 0 0 18px;
1123
- color: var(--as-text-muted);
1124
- }
1125
- .search-references__copy {
1126
- display: grid;
1127
- min-width: 0;
1128
- gap: 2px;
1129
- }
1130
- .search-references__title,
1131
- .search-references__domain {
1132
- overflow: hidden;
1133
- text-overflow: ellipsis;
1134
- white-space: nowrap;
1135
- line-height: 1.4;
1339
+ .followups .followups__chip:hover:not(:disabled) {
1340
+ border-color: color-mix(in srgb, var(--as-brand) 32%, var(--as-border));
1341
+ background: var(--as-brand-soft);
1342
+ color: var(--as-brand);
1136
1343
  }
1137
- .search-references__title {
1138
- font-size: 13px;
1139
- font-weight: 500;
1344
+ .followups__chip:disabled {
1345
+ opacity: 0.5;
1346
+ cursor: not-allowed;
1140
1347
  }
1141
- .search-references__domain {
1142
- color: var(--as-text-muted);
1143
- font-size: 11px;
1348
+ .followups--dock {
1349
+ width: 100%;
1350
+ gap: 0;
1144
1351
  }
1145
- .search-references__actions {
1352
+ .followups__scroll {
1146
1353
  display: flex;
1147
- flex-wrap: wrap;
1148
1354
  gap: 8px;
1355
+ justify-content: flex-start;
1356
+ overflow-x: auto;
1357
+ padding: 2px;
1358
+ scrollbar-width: none;
1359
+ -ms-overflow-style: none;
1149
1360
  }
1150
- .search-references__cta {
1361
+ .followups__scroll::-webkit-scrollbar {
1362
+ display: none;
1363
+ }
1364
+ .followups__chip--dock {
1151
1365
  display: inline-flex;
1152
- max-width: 100%;
1153
- min-height: 44px;
1154
- box-sizing: border-box;
1155
1366
  align-items: center;
1156
- justify-content: center;
1157
- padding: 10px 20px;
1158
- border: 1px solid var(--as-brand);
1367
+ flex: 0 0 auto;
1368
+ width: auto;
1369
+ max-width: none;
1370
+ padding: 8px 12px;
1159
1371
  border-radius: 999px;
1160
- color: var(--as-text);
1161
- font-size: 13px;
1162
- font-weight: 650;
1163
- line-height: 1.5;
1164
- overflow-wrap: anywhere;
1165
- text-decoration: none;
1166
- }
1167
- .search-references__source[href]:hover,
1168
- .search-references__cta:hover {
1169
- background: var(--as-brand-soft);
1170
- color: var(--as-brand);
1171
- }
1172
- .search-references a:focus-visible,
1173
- .search-references summary:focus-visible {
1174
- outline: 2px solid var(--as-brand);
1175
- outline-offset: 2px;
1176
- }
1177
- .message-bubble__text:has(.search-references) {
1178
- width: 100%;
1179
- }
1180
- .search-references > details,
1181
- .search-references__list > li {
1182
- min-width: 0;
1372
+ font-size: 12px;
1373
+ font-weight: 600;
1374
+ white-space: nowrap;
1375
+ text-align: left;
1183
1376
  }
1184
1377
 
1185
1378
  /* src/react/components/BookingCard/BookingCard.css */
@@ -1503,26 +1696,25 @@ html.webless-agent-page-shift {
1503
1696
  width: 100%;
1504
1697
  max-width: 100%;
1505
1698
  }
1506
- .message-bubble__agent-row {
1507
- display: grid;
1699
+ .message-bubble__agent-stack {
1700
+ display: flex;
1508
1701
  width: 100%;
1509
- grid-template-columns: 24px minmax(0, 1fr);
1702
+ flex-direction: column;
1510
1703
  align-items: flex-start;
1511
- gap: 10px;
1704
+ gap: 8px;
1512
1705
  }
1513
1706
  .message-bubble__agent-avatar {
1514
1707
  position: relative;
1515
1708
  display: inline-flex;
1516
- width: 24px;
1517
- height: 24px;
1709
+ width: var(--as-brand-mark-size-compact);
1710
+ height: var(--as-brand-mark-size-compact);
1518
1711
  align-items: center;
1519
1712
  justify-content: center;
1520
1713
  overflow: hidden;
1521
- margin-top: 1px;
1522
1714
  border-radius: 8px;
1523
1715
  background: var(--as-surface-muted);
1524
1716
  }
1525
- .message-bubble__agent-avatar img {
1717
+ .message-bubble__agent-avatar:not(.message-bubble__agent-avatar--wide) img {
1526
1718
  position: absolute;
1527
1719
  inset: 0;
1528
1720
  width: 100%;
@@ -1531,6 +1723,28 @@ html.webless-agent-page-shift {
1531
1723
  background: var(--as-surface);
1532
1724
  object-fit: contain;
1533
1725
  }
1726
+ .message-bubble__agent-avatar--wide {
1727
+ width: auto;
1728
+ height: auto;
1729
+ min-width: 0;
1730
+ max-width: var(--as-brand-wordmark-message-max-width);
1731
+ flex-shrink: 1;
1732
+ padding: 0;
1733
+ overflow: hidden;
1734
+ border: 0;
1735
+ background: transparent;
1736
+ }
1737
+ .message-bubble__agent-avatar--wide img {
1738
+ position: static;
1739
+ display: block;
1740
+ width: auto;
1741
+ max-width: var(--as-brand-wordmark-message-max-width);
1742
+ height: var(--as-brand-wordmark-message-height);
1743
+ border-radius: 0;
1744
+ background: transparent;
1745
+ object-fit: contain;
1746
+ object-position: left center;
1747
+ }
1534
1748
  .message-bubble__text {
1535
1749
  margin: 0;
1536
1750
  padding: 10px 12px;
@@ -1559,24 +1773,35 @@ html.webless-agent-page-shift {
1559
1773
  }
1560
1774
  .message-bubble__sources {
1561
1775
  display: grid;
1562
- gap: 6px;
1776
+ gap: 0;
1563
1777
  margin: 10px 0 0;
1564
1778
  padding: 10px 0 0;
1565
1779
  border-top: 1px solid var(--as-border);
1566
1780
  list-style: none;
1567
1781
  }
1782
+ .message-bubble__sources > li {
1783
+ border-bottom: 1px solid var(--as-border);
1784
+ }
1785
+ .message-bubble__sources > li:last-child {
1786
+ border-bottom: 0;
1787
+ }
1568
1788
  .message-bubble__sources a {
1569
1789
  display: flex;
1570
1790
  min-width: 0;
1791
+ min-height: var(--as-discovery-row-min-height);
1571
1792
  align-items: center;
1572
- gap: 8px;
1793
+ gap: var(--as-discovery-row-gap);
1794
+ padding: var(--as-discovery-row-padding);
1795
+ border-radius: 6px;
1573
1796
  color: var(--as-text);
1574
- font-size: 12.5px;
1575
- font-weight: 600;
1797
+ font-size: var(--as-discovery-row-font-size);
1798
+ font-weight: var(--as-discovery-row-font-weight);
1799
+ line-height: var(--as-discovery-row-line-height);
1576
1800
  text-decoration: none;
1577
1801
  }
1578
1802
  .message-bubble__sources a:hover {
1579
1803
  color: var(--as-brand);
1804
+ background: var(--as-brand-soft);
1580
1805
  }
1581
1806
  .message-bubble__source-icon {
1582
1807
  display: grid;
@@ -1642,6 +1867,27 @@ html.webless-agent-page-shift {
1642
1867
  text-decoration: underline;
1643
1868
  text-underline-offset: 2px;
1644
1869
  }
1870
+ .message-bubble__markdown :is(a[href], [data-streamdown=link]):focus-visible {
1871
+ outline: none;
1872
+ border-radius: 4px;
1873
+ box-shadow: var(--as-focus-inset-ring);
1874
+ box-decoration-break: clone;
1875
+ -webkit-box-decoration-break: clone;
1876
+ padding: var(--as-focus-link-padding-block) var(--as-focus-link-padding-inline);
1877
+ margin: 0;
1878
+ }
1879
+ .message-bubble__markdown ul > li > :is(a[href], [data-streamdown=link]):focus-visible {
1880
+ border-radius: 6px;
1881
+ }
1882
+ .message-bubble__sources a:focus-visible {
1883
+ outline: none;
1884
+ border-radius: 6px;
1885
+ box-shadow: var(--as-focus-inset-ring);
1886
+ }
1887
+ .agent-rail .message-bubble__markdown :is(a[href], [data-streamdown=link]):focus-visible,
1888
+ .agent-rail .message-bubble__sources a:focus-visible {
1889
+ outline: none;
1890
+ }
1645
1891
  .message-bubble__markdown code {
1646
1892
  font-family:
1647
1893
  ui-monospace,
@@ -1671,10 +1917,18 @@ html.webless-agent-page-shift {
1671
1917
  color: var(--as-text-muted);
1672
1918
  }
1673
1919
  .message-bubble__speaker {
1674
- display: block;
1675
- margin-bottom: 0.25rem;
1676
- font-size: 0.75rem;
1677
- opacity: 0.75;
1920
+ margin: 0;
1921
+ font-size: 12px;
1922
+ font-weight: 650;
1923
+ letter-spacing: 0.01em;
1924
+ color: var(--as-text-muted);
1925
+ }
1926
+ .message-bubble__agent-header {
1927
+ display: inline-flex;
1928
+ max-width: 100%;
1929
+ min-height: var(--as-brand-mark-size-compact);
1930
+ align-items: center;
1931
+ gap: 4px;
1678
1932
  }
1679
1933
 
1680
1934
  /* src/react/components/MessageActions/MessageActions.css */
@@ -1777,7 +2031,7 @@ html.webless-agent-page-shift {
1777
2031
  line-height: 1.3;
1778
2032
  text-align: left;
1779
2033
  }
1780
- .agent-message-actions__menu-item:hover {
2034
+ .agent-message-actions__menu .agent-message-actions__menu-item:hover {
1781
2035
  background: var(--as-surface-muted);
1782
2036
  }
1783
2037
  .agent-message-actions__menu-item:focus-visible {
@@ -2504,6 +2758,13 @@ html.webless-agent-page-shift {
2504
2758
  .agent-rail :where(p, span, strong, button, label) {
2505
2759
  text-decoration: none;
2506
2760
  }
2761
+ .agent-rail :is(a[href], button:not(:disabled), summary) {
2762
+ cursor: pointer;
2763
+ }
2764
+ .agent-rail :is(a[href], button:not(:disabled), summary) :is(*, svg) {
2765
+ cursor: inherit;
2766
+ pointer-events: none;
2767
+ }
2507
2768
  .agent-rail:focus {
2508
2769
  outline: none;
2509
2770
  }
@@ -2535,7 +2796,7 @@ html.webless-agent-page-shift {
2535
2796
  min-width: 0;
2536
2797
  align-items: center;
2537
2798
  justify-content: center;
2538
- gap: 8px;
2799
+ gap: var(--as-brand-identity-gap);
2539
2800
  }
2540
2801
  .agent-rail__brand-label {
2541
2802
  overflow: hidden;
@@ -2557,10 +2818,10 @@ html.webless-agent-page-shift {
2557
2818
  background: var(--as-surface-muted);
2558
2819
  }
2559
2820
  .agent-rail__brand-mark {
2560
- width: 25px;
2561
- height: 25px;
2562
- flex-basis: 25px;
2563
- border-radius: 8px;
2821
+ width: var(--as-brand-mark-size);
2822
+ height: var(--as-brand-mark-size);
2823
+ flex-basis: var(--as-brand-mark-size);
2824
+ border-radius: var(--as-radius-sm);
2564
2825
  font-size: 11px;
2565
2826
  }
2566
2827
  .agent-rail__brand-logo {
@@ -2572,6 +2833,28 @@ html.webless-agent-page-shift {
2572
2833
  background: var(--as-surface);
2573
2834
  object-fit: contain;
2574
2835
  }
2836
+ .agent-rail__brand-mark--wide {
2837
+ width: auto;
2838
+ min-width: 0;
2839
+ max-width: var(--as-brand-wordmark-header-max-width);
2840
+ flex: 0 1 auto;
2841
+ flex-basis: auto;
2842
+ padding: 0;
2843
+ overflow: hidden;
2844
+ border: 0;
2845
+ background: transparent;
2846
+ }
2847
+ .agent-rail__brand-mark--wide .agent-rail__brand-logo {
2848
+ position: static;
2849
+ display: block;
2850
+ width: auto;
2851
+ max-width: var(--as-brand-wordmark-header-max-width);
2852
+ height: var(--as-brand-wordmark-header-height);
2853
+ border-radius: 0;
2854
+ background: transparent;
2855
+ object-fit: contain;
2856
+ object-position: left center;
2857
+ }
2575
2858
  .agent-rail__brand-spacer {
2576
2859
  width: 36px;
2577
2860
  height: 36px;
@@ -2654,7 +2937,7 @@ html.webless-agent-page-shift {
2654
2937
  flex-direction: column;
2655
2938
  gap: 20px;
2656
2939
  margin: 0 auto;
2657
- padding: 24px 20px 32px;
2940
+ padding: 16px 16px 32px;
2658
2941
  }
2659
2942
  .agent-rail__turn-block {
2660
2943
  display: flex;
@@ -2724,7 +3007,7 @@ html.webless-agent-page-shift {
2724
3007
  position: relative;
2725
3008
  z-index: 1;
2726
3009
  flex-shrink: 0;
2727
- padding: 13px 20px 14px;
3010
+ padding: 13px 16px 14px;
2728
3011
  border-top: 1px solid var(--as-hairline);
2729
3012
  background: var(--as-surface);
2730
3013
  }
@@ -2799,7 +3082,7 @@ html.webless-agent-page-shift {
2799
3082
  }
2800
3083
  .agent-rail__disclaimer {
2801
3084
  flex-shrink: 0;
2802
- padding: 10px 20px 8px;
3085
+ padding: 8px 16px 6px;
2803
3086
  background: var(--as-surface);
2804
3087
  }
2805
3088
  .agent-rail__disclaimer p {
@@ -2849,13 +3132,13 @@ html.webless-agent-page-shift {
2849
3132
  }
2850
3133
  .agent-rail--expanded .agent-rail__thread {
2851
3134
  max-width: 760px;
2852
- padding: 36px 24px 48px;
3135
+ padding: 24px 24px 48px;
2853
3136
  }
2854
3137
  .agent-rail--expanded .agent-rail__welcome {
2855
3138
  width: 100%;
2856
3139
  }
2857
3140
  .agent-rail--expanded .agent-rail__composer-wrap {
2858
- padding: 16px 24px 18px;
3141
+ padding: 16px 24px 16px;
2859
3142
  }
2860
3143
  .agent-rail--expanded .agent-rail__disclaimer,
2861
3144
  .agent-rail--expanded .composer,
@@ -2971,47 +3254,164 @@ html.webless-agent-page-shift {
2971
3254
  animation: none;
2972
3255
  transition: none;
2973
3256
  }
3257
+ .agent-rail__sources-panel {
3258
+ transition: none;
3259
+ }
3260
+ .agent-rail__sources-button-chevron {
3261
+ transition: none;
3262
+ }
2974
3263
  }
2975
3264
  .agent-rail__handoff {
2976
- padding: 0.625rem 1rem;
2977
- border-top: 1px solid var(--as-border);
2978
3265
  display: flex;
2979
- gap: 0.5rem;
2980
3266
  align-items: center;
2981
- justify-content: space-between;
2982
- flex-wrap: wrap;
2983
- font-size: 0.8125rem;
3267
+ gap: 10px;
3268
+ padding: 10px 16px;
3269
+ border-top: 1px solid var(--as-hairline);
3270
+ background: transparent;
3271
+ font-size: 12px;
3272
+ line-height: 1.45;
2984
3273
  color: var(--as-text-muted);
2985
3274
  }
2986
- .agent-rail__handoff p {
3275
+ .agent-rail__handoff-dot {
3276
+ flex: 0 0 auto;
3277
+ width: 6px;
3278
+ height: 6px;
3279
+ border-radius: 999px;
3280
+ background: var(--as-success);
3281
+ }
3282
+ .agent-rail__handoff-status {
2987
3283
  margin: 0;
3284
+ min-width: 0;
3285
+ flex: 1;
2988
3286
  }
2989
- .agent-rail__handoff button {
2990
- border: 0;
2991
- border-radius: 0.375rem;
3287
+ .agent-rail__handoff-status strong {
3288
+ color: var(--as-text);
3289
+ font-weight: 650;
3290
+ }
3291
+ .agent-rail__handoff-cta,
3292
+ .agent-rail__handoff-action {
3293
+ appearance: none;
3294
+ flex: 0 0 auto;
3295
+ min-height: 32px;
3296
+ padding: 6px 12px;
3297
+ border: 1px solid var(--as-border);
3298
+ border-radius: 999px;
2992
3299
  background: transparent;
2993
3300
  color: var(--as-text);
2994
- cursor: pointer;
2995
3301
  font: inherit;
2996
- font-weight: 600;
2997
- padding: 0.5rem;
2998
- min-height: 2.5rem;
3302
+ font-size: 12px;
3303
+ font-weight: 650;
3304
+ cursor: pointer;
3305
+ transition: border-color 150ms ease, background 150ms ease;
2999
3306
  }
3000
- .agent-rail__handoff button:hover {
3307
+ .agent-rail__handoff-cta:hover:not(:disabled),
3308
+ .agent-rail__handoff-action:hover:not(:disabled) {
3309
+ border-color: color-mix(in srgb, var(--as-brand) 40%, var(--as-border));
3001
3310
  background: var(--as-surface-muted);
3002
3311
  }
3003
- .agent-rail__handoff button:focus-visible {
3312
+ .agent-rail__handoff-cta:focus-visible,
3313
+ .agent-rail__handoff-action:focus-visible {
3004
3314
  outline: 2px solid var(--as-brand);
3005
3315
  outline-offset: 2px;
3006
3316
  }
3007
- .agent-rail__handoff button:disabled {
3008
- opacity: 0.5;
3317
+ .agent-rail__handoff-cta:disabled,
3318
+ .agent-rail__handoff-action:disabled {
3319
+ opacity: 0.55;
3009
3320
  cursor: default;
3010
3321
  }
3011
- .agent-rail__handoff [role=alert] {
3012
- width: 100%;
3322
+ .agent-rail__handoff-error {
3323
+ display: flex;
3324
+ flex: 1;
3325
+ align-items: center;
3326
+ justify-content: space-between;
3327
+ gap: 8px;
3013
3328
  color: var(--as-danger);
3014
3329
  }
3330
+ .agent-rail__answer-footer {
3331
+ display: flex;
3332
+ flex-direction: column;
3333
+ width: 100%;
3334
+ }
3335
+ .agent-rail__answer-actions {
3336
+ display: flex;
3337
+ align-items: center;
3338
+ flex-wrap: wrap;
3339
+ gap: 8px;
3340
+ width: 100%;
3341
+ }
3342
+ .agent-rail__answer-actions:empty {
3343
+ display: none;
3344
+ }
3345
+ .agent-rail__sources-button {
3346
+ appearance: none;
3347
+ display: inline-flex;
3348
+ align-items: center;
3349
+ justify-content: flex-start;
3350
+ gap: 3px;
3351
+ margin-left: auto;
3352
+ min-height: 44px;
3353
+ padding: 10px 16px;
3354
+ border: 0;
3355
+ border-radius: 8px;
3356
+ background: transparent;
3357
+ color: var(--as-text-muted);
3358
+ font: inherit;
3359
+ font-size: 12.5px;
3360
+ font-weight: 650;
3361
+ cursor: pointer;
3362
+ transition: background 150ms ease, color 150ms ease;
3363
+ }
3364
+ .agent-rail__answer-actions .agent-rail__sources-button {
3365
+ width: auto;
3366
+ background: transparent;
3367
+ }
3368
+ .agent-rail__answer-actions .agent-rail__sources-button:hover {
3369
+ color: var(--as-brand);
3370
+ background: var(--as-brand-soft);
3371
+ }
3372
+ .agent-rail__sources-button:focus-visible {
3373
+ outline: 2px solid var(--as-brand);
3374
+ outline-offset: 2px;
3375
+ }
3376
+ .agent-rail__sources-button-chevron {
3377
+ display: inline-flex;
3378
+ transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
3379
+ }
3380
+ .agent-rail__sources-button-chevron svg {
3381
+ width: 14px;
3382
+ height: 14px;
3383
+ }
3384
+ .agent-rail__sources-button[aria-expanded=true] .agent-rail__sources-button-chevron {
3385
+ transform: rotate(180deg);
3386
+ }
3387
+ .agent-rail__sources-panel {
3388
+ display: grid;
3389
+ width: 100%;
3390
+ grid-template-rows: 0fr;
3391
+ visibility: hidden;
3392
+ transition: grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 220ms;
3393
+ }
3394
+ .agent-rail__sources-panel--open {
3395
+ grid-template-rows: 1fr;
3396
+ visibility: visible;
3397
+ transition: grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1);
3398
+ }
3399
+ .agent-rail__sources-panel-inner {
3400
+ min-height: 0;
3401
+ overflow: hidden;
3402
+ }
3403
+ .agent-rail__sources-panel-inner > .search-references {
3404
+ margin-top: 2px;
3405
+ }
3406
+ .agent-rail .learn-more .learn-more__toggle {
3407
+ width: auto;
3408
+ background: transparent;
3409
+ padding-left: 0;
3410
+ }
3411
+ .agent-rail .learn-more .learn-more__toggle:hover {
3412
+ color: var(--as-brand);
3413
+ background: var(--as-brand-soft);
3414
+ }
3015
3415
 
3016
3416
  /* src/react/components/AssistEdgeTab/AssistEdgeTab.css */
3017
3417
  .assist-edge-tab {
@@ -3083,10 +3483,6 @@ html.webless-agent-page-shift {
3083
3483
  border-radius: inherit;
3084
3484
  background: var(--pill-orb-from, var(--tab-fill));
3085
3485
  }
3086
- .assist-edge-tab__mark--chip > .assist-edge-tab__logo {
3087
- width: 20px;
3088
- height: 20px;
3089
- }
3090
3486
  .assist-edge-tab__custom-icon {
3091
3487
  width: 18px;
3092
3488
  height: 18px;
@@ -3280,15 +3676,16 @@ html.webless-agent-page-shift {
3280
3676
  --tab-ink: #1f2937;
3281
3677
  --tab-line: transparent;
3282
3678
  --pill-brand: var(--as-brand, #6366f1);
3679
+ --pill-accent: var(--as-border, var(--as-brand, #6366f1));
3283
3680
  --pill-fill: #ffffff;
3284
3681
  --pill-title: #1f2937;
3285
3682
  --pill-subtitle: #9ca3af;
3286
- --pill-glow-strong: color-mix(in srgb, var(--pill-brand) 40%, transparent);
3287
- --pill-glow-soft: color-mix(in srgb, var(--pill-brand) 10%, transparent);
3288
- --pill-glow-shadow: color-mix(in srgb, var(--pill-brand) 15%, transparent);
3683
+ --pill-glow-strong: color-mix(in srgb, var(--pill-accent) 40%, transparent);
3684
+ --pill-glow-soft: color-mix(in srgb, var(--pill-accent) 10%, transparent);
3685
+ --pill-glow-shadow: color-mix(in srgb, var(--pill-accent) 15%, transparent);
3289
3686
  --pill-orb-end: color-mix(in srgb, var(--pill-brand) 45%, #3b82f6);
3290
3687
  gap: 12px;
3291
- border: 1.5px solid var(--pill-brand);
3688
+ border: 1.5px solid var(--pill-accent);
3292
3689
  background-color: #ffffff;
3293
3690
  background-image: none;
3294
3691
  color: var(--pill-title);
@@ -3330,9 +3727,9 @@ html.webless-agent-page-shift {
3330
3727
  }
3331
3728
  .assist-edge-tab__mark--chip {
3332
3729
  overflow: hidden;
3333
- width: 36px;
3334
- height: 36px;
3335
- flex-basis: 36px;
3730
+ width: 48px;
3731
+ height: 48px;
3732
+ flex: 0 0 48px;
3336
3733
  border: none;
3337
3734
  border-radius: 50%;
3338
3735
  background:
@@ -3343,11 +3740,33 @@ html.webless-agent-page-shift {
3343
3740
  color: #ffffff;
3344
3741
  box-shadow: none;
3345
3742
  }
3743
+ .assist-edge-tab__mark--chip:has(> .assist-edge-tab__logo),
3744
+ .assist-edge-tab__mark--chip:has(> .assist-edge-tab__custom-icon) {
3745
+ background: var(--pill-logo-surface, #ffffff);
3746
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--pill-accent, var(--pill-brand)) 24%, transparent);
3747
+ }
3748
+ .assist-edge-tab__mark--chip:has(> .assist-edge-tab__logo--wide) {
3749
+ width: auto;
3750
+ min-width: 48px;
3751
+ max-width: 120px;
3752
+ padding: 0 8px;
3753
+ border-radius: 999px;
3754
+ }
3346
3755
  .assist-edge-tab__mark--chip > svg,
3347
3756
  .assist-edge-tab__mark--chip > .assist-edge-tab__custom-icon,
3348
3757
  .assist-edge-tab__mark--chip > .assist-edge-tab__logo {
3349
3758
  position: relative;
3350
3759
  z-index: 1;
3760
+ flex-shrink: 0;
3761
+ object-fit: contain;
3762
+ object-position: center;
3763
+ }
3764
+ .assist-edge-tab__mark--chip > .assist-edge-tab__logo--chip,
3765
+ .assist-edge-tab__mark--chip > .assist-edge-tab__custom-icon--chip {
3766
+ width: auto;
3767
+ height: auto;
3768
+ max-width: 100%;
3769
+ max-height: 100%;
3351
3770
  }
3352
3771
  .assist-edge-tab__mark--chip > .assist-edge-tab__chat-spark {
3353
3772
  color: #ffffff;