.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); color: #FFFFFF; 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); 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; } }