body { background-color: #f5f5f5; font-family: 'Roboto', sans-serif; }
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.scrollbar-hide::-webkit-scrollbar { display: none; }
.pb-safe { padding-bottom: 70px; } 
.snap-x { scroll-snap-type: x mandatory; scroll-behavior: smooth; }
.snap-center { scroll-snap-align: center; }
.chat-bubble { max-width: 75%; padding: 8px 12px; border-radius: 12px; font-size: 13px; margin-bottom: 4px; word-wrap: break-word; }
.chat-me { background-color: #7c3aed; color: white; align-self: flex-end; border-bottom-right-radius: 2px; }
.chat-other { background-color: #e5e7eb; color: #374151; align-self: flex-start; border-bottom-left-radius: 2px; }
@keyframes ping { 75%, 100% { transform: scale(2); opacity: 0; } }
.animate-ping { animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; }
.animate-slide-up { animation: slideUp 0.3s ease-out; }
@keyframes slideUp { from { transform: translateY(100%); } to { transform: translateY(0); } }
.transition-opacity { transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 300ms; }
.scale-up { transform: scale(1); opacity: 1; }
.scale-down { transform: scale(0.95); opacity: 0; }
.radio-courier:checked + div { border-color: #7c3aed; background-color: #f3e8ff; }