.ui-bubble { padding:var(--spacing-1) var(--spacing-page-x); } .ui-bubble__time { text-align:center; margin:var(--spacing-3) 0; font-size:var(--font-size-xs); color:var(--color-text-tertiary); } .ui-bubble__system { text-align:center; font-size:var(--font-size-sm); color:var(--color-text-tertiary); background:var(--color-bg-disabled); padding:var(--spacing-1) var(--spacing-3); border-radius:var(--radius-sm); display:inline-block; margin:0 auto; } .ui-bubble__row { display:flex; align-items:flex-end; } .ui-bubble--other .ui-bubble__row { justify-content:flex-start; } .ui-bubble--self .ui-bubble__row { justify-content:flex-end; } .ui-bubble__content-wrap { display:flex; flex-direction:column; max-width:70%; margin:0 var(--spacing-2); } .ui-bubble--self .ui-bubble__content-wrap { align-items:flex-end; } .ui-bubble__content { padding:var(--spacing-2) var(--spacing-3); border-radius:var(--radius-lg); font-size:var(--font-size-base); line-height:var(--line-height-normal); word-break:break-all; } .ui-bubble--other .ui-bubble__content { background:var(--color-bg-card); color:var(--color-text-primary); border-top-left-radius:var(--radius-sm); } .ui-bubble--self .ui-bubble__content { background:var(--color-primary-solid); color:var(--color-text-inverse); border-top-right-radius:var(--radius-sm); } .ui-bubble__retry { margin-top:var(--spacing-1); font-size:var(--font-size-xs); color:var(--color-danger-strong); align-self:flex-end; } .ui-bubble__sending { margin-top:var(--spacing-1); display:flex; align-items:center; justify-content:flex-end; } .ui-bubble__sending-dot { width:16rpx; height:16rpx; border-radius:50%; background:var(--color-text-disabled); animation:ui-bubble-pulse 1s ease-in-out infinite; } @keyframes ui-bubble-pulse { 0%, 100% { opacity:0.3; } 50% { opacity:1; } }