/* Floating Launcher Button */ .timebot-launcher { position: fixed; bottom: 24px; right: 24px; width: 64px; height: 64px; border-radius: 50%; background: linear-gradient(135deg, #ffffff 0%, #f1f3f9 100%); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2); cursor: pointer; z-index: 10000; display: flex; align-items: center; justify-content: center; transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); border: 2px solid #0EA5E9; } .timebot-launcher:hover { transform: scale(1.1) translateY(-4px); box-shadow: 0 12px 28px rgba(14, 165, 233, 0.4); border-color: #0284C7; } .timebot-launcher img { width: 48px; height: 48px; object-fit: contain; } .timebot-launcher.open { transform: scale(0.9) rotate(90deg); opacity: 0.8; } .timebot-badge { position: absolute; top: -4px; right: -4px; background-color: #ff3b30; color: white; font-size: 11px; font-weight: bold; padding: 3px 7px; border-radius: 10px; border: 2px solid white; } /* Chat Window */ .timebot-chat-window { position: fixed; bottom: 100px; right: 24px; width: 360px; height: 520px; max-height: 80vh; border-radius: 20px; background: rgba(32, 33, 36, 0.95); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5); display: flex; flex-direction: column; overflow: hidden; z-index: 9999; animation: slideUp 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards; color: #f1f3f9; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } @keyframes slideUp { from { opacity: 0; transform: translateY(30px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } /* Header */ .timebot-header { background: #0F172A; padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(255, 255, 255, 0.08); } .timebot-header-info { display: flex; align-items: center; gap: 12px; } .timebot-header-avatar { width: 36px; height: 36px; background: rgba(255, 255, 255, 0.15); border-radius: 50%; padding: 2px; object-fit: contain; } .timebot-header-text { display: flex; flex-direction: column; } .timebot-header-title { font-weight: 700; font-size: 15px; color: white; letter-spacing: 0.3px; } .timebot-header-status { font-size: 11px; color: rgba(255, 255, 255, 0.75); display: flex; align-items: center; gap: 4px; } .status-dot { width: 6px; height: 6px; background-color: #4cd964; border-radius: 50%; display: inline-block; box-shadow: 0 0 8px #4cd964; animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(76, 217, 100, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 6px rgba(76, 217, 100, 0); } 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(76, 217, 100, 0); } } .timebot-close-btn { background: transparent; border: none; cursor: pointer; opacity: 0.8; transition: opacity 0.2s; padding: 4px; display: flex; align-items: center; justify-content: center; } .timebot-close-btn:hover { opacity: 1; } /* Chat Body */ .timebot-body { flex: 1; padding: 16px; overflow-y: auto; display: flex; flex-direction: column; gap: 12px; background: rgba(24, 25, 28, 0.4); } .timebot-msg-row { display: flex; gap: 8px; max-width: 85%; } .timebot-msg-row.bot-row { align-self: flex-start; } .timebot-msg-row.user-row { align-self: flex-end; flex-direction: row-reverse; } .timebot-msg-avatar { width: 28px; height: 28px; background: rgba(255, 255, 255, 0.1); border-radius: 50%; padding: 2px; align-self: flex-end; object-fit: contain; } .timebot-msg-bubble { padding: 10px 14px; border-radius: 16px; font-size: 13.5px; line-height: 1.45; white-space: pre-wrap; word-break: break-word; } .bot-bubble { background: rgba(255, 255, 255, 0.08); color: #e3e3e7; border-bottom-left-radius: 4px; border: 1px solid rgba(255, 255, 255, 0.04); } .user-bubble { background: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%); color: white; border-bottom-right-radius: 4px; box-shadow: 0 4px 12px rgba(14, 165, 233, 0.2); } /* Typing Indicator */ .typing-indicator { display: flex; align-items: center; gap: 4px; padding: 4px 0; } .typing-indicator span { width: 6px; height: 6px; background-color: #a8b2c1; border-radius: 50%; display: inline-block; animation: bounce 1.4s infinite both; } .typing-indicator span:nth-child(1) { animation-delay: -0.32s; } .typing-indicator span:nth-child(2) { animation-delay: -0.16s; } @keyframes bounce { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1.0); } } /* Suggestions */ .timebot-suggestions { display: flex; gap: 6px; padding: 8px 12px; background: rgba(18, 18, 20, 0.6); border-top: 1px solid rgba(255, 255, 255, 0.06); overflow-x: auto; scrollbar-width: none; /* Scrollbar hidden for visual aesthetics */ } .timebot-suggestions::-webkit-scrollbar { display: none; } .timebot-suggestions button { flex-shrink: 0; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.08); color: #cbd5e1; padding: 6px 12px; border-radius: 14px; font-size: 12px; cursor: pointer; transition: all 0.2s; font-weight: 500; } .timebot-suggestions button:hover { background: rgba(14, 165, 233, 0.15); border-color: #0EA5E9; color: white; transform: translateY(-1px); } /* Footer */ .timebot-footer { padding: 12px; display: flex; align-items: center; gap: 8px; background: rgba(32, 33, 36, 0.98); border-top: 1px solid rgba(255, 255, 255, 0.06); } .timebot-input { flex: 1; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.08); color: white; padding: 10px 14px; border-radius: 12px; font-size: 13px; outline: none; transition: all 0.2s; } .timebot-input:focus { border-color: #0EA5E9; background: rgba(255, 255, 255, 0.1); box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.2); } .timebot-send-btn { background: white; border: none; border-radius: 10px; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s; } .timebot-send-btn:hover { background: #e0f2fe; transform: scale(1.05); } .timebot-send-btn:disabled { background: rgba(255, 255, 255, 0.04); cursor: not-allowed; transform: none; } .timebot-send-btn:disabled ::deep .mud-icon-root { color: rgba(255, 255, 255, 0.2) !important; }