.safe-top{padding-top:env(safe-area-inset-top)}.safe-bottom{padding-bottom:env(safe-area-inset-bottom)}.safe-left{padding-left:env(safe-area-inset-left)}.safe-right{padding-right:env(safe-area-inset-right)}.touch-manipulation{touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.overscroll-contain{overscroll-behavior:contain}@media (max-width:768px){@media (prefers-reduced-motion:no-preference){.animate-in{animation-duration:.2s}.slide-in-from-bottom-2{--tw-enter-translate-y:0.5rem}}.scroll-area-mobile{-webkit-overflow-scrolling:touch;scroll-behavior:smooth}.message-bubble-mobile{word-break:break-word;-webkit-hyphens:auto;hyphens:auto}.input-mobile{font-size:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-mobile:active{transform:scale(.95);transition:transform .1s}}@media (max-width:375px){.chat-header-compact{padding:.75rem}.message-bubble-compact{max-width:90%;padding:.5rem .75rem}.conversation-item-compact{padding:.75rem;min-height:60px}}@media (max-height:500px) and (orientation:landscape){.chat-drawer-landscape{max-height:100vh;height:100vh}.chat-header-landscape{padding:.5rem 1rem}.message-area-landscape{max-height:calc(100vh - 120px)}}@media (prefers-color-scheme:dark){.chat-drawer-dark{background-color:rgb(15 15 15)}.message-bubble-dark{background-color:rgb(30 30 30)}.input-dark{background-color:rgb(20 20 20);border-color:rgb(40 40 40)}}@media (prefers-contrast:high){.chat-drawer-high-contrast{border:2px solid}.message-bubble-high-contrast{border:1px solid}.button-high-contrast:focus{outline:3px solid currentColor;outline-offset:2px}}.keyboard-open{height:calc(100vh - env(keyboard-inset-height, 0))}.pull-to-refresh{position:relative;overflow-y:auto}.pull-to-refresh:before{content:"";position:absolute;top:-50px;left:50%;transform:translateX(-50%);width:30px;height:30px;border-radius:50%;border:2px solid #ccc;border-top-color:transparent;opacity:0;transition:opacity .2s}.pull-to-refresh.refreshing:before{opacity:1;animation:spin 1s linear infinite}@keyframes spin{to{transform:translateX(-50%) rotate(1turn)}}.haptic-light{animation:haptic-light 25ms ease-out}.haptic-medium{animation:haptic-medium 50ms ease-out}.haptic-heavy{animation:haptic-heavy .1s ease-out}@keyframes haptic-light{0%,to{transform:scale(1)}50%{transform:scale(.98)}}@keyframes haptic-medium{0%,to{transform:scale(1)}50%{transform:scale(.96)}}@keyframes haptic-heavy{0%,to{transform:scale(1)}25%{transform:scale(.94)}50%{transform:scale(.96)}75%{transform:scale(.94)}}.message-status{display:inline-flex;align-items:center;gap:2px;font-size:.625rem;opacity:.7}.message-status-sending{color:#888}.message-status-sent{color:#666}.message-status-delivered{color:#444}.message-status-read{color:#0084ff}.typing-indicator{display:inline-flex;align-items:center;gap:4px;padding:8px 12px;background:rgba(0,0,0,.05);border-radius:18px}.typing-indicator span{width:8px;height:8px;border-radius:50%;background:#888;animation:typing-bounce 1.4s ease-in-out infinite}.typing-indicator span:first-child{animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes typing-bounce{0%,80%,to{transform:scale(1);opacity:.5}40%{transform:scale(1.3);opacity:1}}.chat-transition{transition:transform .2s cubic-bezier(.4,0,.2,1),opacity .2s cubic-bezier(.4,0,.2,1)}.connection-status{display:flex;align-items:center;gap:8px;padding:8px 16px;font-size:.875rem;animation:slide-down .2s ease-out}.connection-status-disconnected{background-color:rgb(254 226 226);color:rgb(153 27 27)}.connection-status-connecting{background-color:rgb(254 243 199);color:rgb(146 64 14)}.connection-status-connected{background-color:rgb(220 252 231);color:rgb(22 101 52)}@keyframes slide-down{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.focus-visible:focus{outline:2px solid #0084ff;outline-offset:2px}.focus-visible:focus:not(:focus-visible){outline:none}.skeleton-loading{background:linear-gradient(90deg,rgba(0,0,0,.05) 25%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 75%);background-size:200% 100%;animation:skeleton-wave 1.5s infinite}@keyframes skeleton-wave{0%{background-position:200% 0}to{background-position:-200% 0}}