/* Estilos generales */ :root { --primary-color: #0078d7; --primary-light: #e3f2fd; --primary-dark: #00569e; --secondary-color: #0096c7; --text-color: #333; --text-light: #6c757d; --background-color: #f8f9fa; --chat-bg: #fff; --user-message: #e3f2fd; --bot-message: #f8f9fa; --border-radius: 16px; --shadow: 0 4px 12px rgba(0, 0, 0, 0.08); --transition: all 0.2s ease-in-out; } body { font-family: 'Poppins', sans-serif; background-color: var(--background-color); color: var(--text-color); margin: 0; padding: 0; min-height: 100vh; } .main-container { height: 100vh; max-height: 100vh; padding: 0; overflow: hidden; } /* Estilos del sidebar */ .sidebar { background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); color: white; height: 100vh; overflow-y: auto; box-shadow: 2px 0 10px rgba(0, 0, 0, 0.1); z-index: 1000; } .sidebar-content { padding: 2rem 1.5rem; } .logo-container { display: flex; justify-content: center; margin-bottom: 1.5rem; } .sidebar-logo { width: 120px; height: auto; background-color: white; padding: 10px; border-radius: 12px; box-shadow: var(--shadow); } .sidebar h3 { text-align: center; font-weight: 700; margin-bottom: 0.5rem; } .sidebar-description { text-align: center; color: rgba(255, 255, 255, 0.8); font-size: 0.9rem; margin-bottom: 2rem; } .info-section { margin-top: 1.5rem; } .info-item { display: flex; align-items: flex-start; margin-bottom: 1.5rem; background-color: rgba(255, 255, 255, 0.15); border-radius: 10px; padding: 1rem; } .info-item i { margin-right: 1rem; font-size: 1.25rem; color: white; } .info-item div { flex: 1; } .info-item h5 { margin: 0 0 0.25rem 0; font-weight: 600; font-size: 0.9rem; } .info-item p { margin: 0; font-size: 0.85rem; color: rgba(255, 255, 255, 0.9); } .quick-links { margin-top: 2rem; } .quick-links h5 { font-size: 0.9rem; margin-bottom: 1rem; font-weight: 600; } .quick-link { display: flex; align-items: center; color: white; text-decoration: none; background-color: rgba(255, 255, 255, 0.15); margin-bottom: 0.75rem; padding: 0.75rem 1rem; border-radius: 8px; transition: var(--transition); } .quick-link:hover { background-color: rgba(255, 255, 255, 0.25); color: white; } .quick-link i { margin-right: 0.5rem; } /* Estilos del área de chat */ .chat-area { height: 100vh; display: flex; flex-direction: column; background-color: var(--background-color); padding: 0; } .chat-box { display: flex; flex-direction: column; height: 100%; background-color: var(--chat-bg); border-radius: 20px; overflow: hidden; box-shadow: var(--shadow); } .chat-header { background-color: white; padding: 1rem 1.5rem; border-bottom: 1px solid rgba(0, 0, 0, 0.05); display: flex; align-items: center; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.03); z-index: 10; } .mobile-header { display: flex; align-items: center; } .mobile-logo { width: 50px; height: auto; margin-right: 1rem; background-color: white; padding: 5px; border-radius: 8px; box-shadow: var(--shadow); } .mobile-header h2 { margin: 0; font-size: 1.2rem; font-weight: 600; } .mobile-header small { color: var(--text-light); font-size: 0.8rem; } .desktop-header { display: flex; align-items: center; justify-content: space-between; width: 100%; } .desktop-header h2 { margin: 0; font-weight: 600; color: var(--primary-color); } .status-indicator { display: flex; align-items: center; font-size: 0.85rem; color: var(--text-light); } .status-indicator i { font-size: 0.7rem; color: #4caf50; margin-right: 0.5rem; } .chat-body { flex: 1; padding: 1.5rem; overflow-y: auto; display: flex; flex-direction: column; gap: 1rem; background-color: var(--background-color); } .timestamp { text-align: center; margin: 1rem 0; font-size: 0.8rem; color: var(--text-light); background-color: rgba(0, 0, 0, 0.05); padding: 0.4rem 1rem; border-radius: 15px; align-self: center; } .message { display: flex; margin-bottom: 1rem; max-width: 85%; } .message.bot { align-self: flex-start; } .message.user { align-self: flex-end; flex-direction: row-reverse; } .message-avatar { width: 36px; height: 36px; border-radius: 50%; background-color: var(--primary-color); display: flex; align-items: center; justify-content: center; color: white; margin-right: 0.75rem; flex-shrink: 0; } .message.user .message-avatar { display: none; } .message-content { background-color: var(--bot-message); padding: 1rem; border-radius: var(--border-radius); box-shadow: var(--shadow); position: relative; } .message.bot .message-content { border-top-left-radius: 0; } .message.user .message-content { background-color: var(--primary-color); color: white; border-top-right-radius: 0; } .message-text { line-height: 1.5; } .message-text p { margin: 0 0 0.75rem 0; } .message-text p:last-child { margin-bottom: 0; } .quick-questions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.75rem; } .quick-questions button { background-color: white; color: var(--primary-color); border: 1px solid var(--primary-color); border-radius: 20px; padding: 0.4rem 1rem; font-size: 0.85rem; cursor: pointer; transition: var(--transition); outline: none; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); } .quick-questions button:hover { background-color: var(--primary-light); } .payment-button { display: inline-flex; align-items: center; background-color: var(--primary-color); color: white; text-decoration: none; padding: 0.5rem 1.25rem; border-radius: 20px; font-size: 0.9rem; transition: var(--transition); margin-top: 0.5rem; } .payment-button:hover { background-color: var(--primary-dark); color: white; } .payment-button i { margin-right: 0.5rem; } .reference-code { background-color: white; color: var(--primary-dark); font-weight: bold; padding: 0.75rem; border-radius: 8px; margin: 1rem 0; text-align: center; font-size: 1.1rem; letter-spacing: 1px; border: 2px dashed var(--primary-color); } .map-container { margin-top: 0.75rem; width: 100%; border-radius: 10px; overflow: hidden; box-shadow: var(--shadow); } .chat-input-container { padding: 1rem 1.5rem; background-color: white; border-top: 1px solid rgba(0, 0, 0, 0.05); position: relative; } .typing-indicator { position: absolute; top: -40px; left: 60px; background-color: rgba(0, 0, 0, 0.05); border-radius: 20px; padding: 0.5rem 1rem; display: none; align-items: center; } .typing-indicator .dot { width: 6px; height: 6px; background-color: var(--text-light); border-radius: 50%; margin: 0 2px; animation: typing 1.5s infinite ease-in-out; } .typing-indicator .dot:nth-child(2) { animation-delay: 0.5s; } .typing-indicator .dot:nth-child(3) { animation-delay: 1s; } @keyframes typing { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } } .chat-input { display: flex; align-items: center; background-color: #e6f2ff; /* Azul muy clarito */ border: 1px solid #c0d8f0; /* Borde azul clarito */ border-radius: 25px; padding: 0.25rem 0.25rem 0.25rem 1.25rem; box-shadow: 0 3px 10px rgba(0, 120, 215, 0.08); /* Sombra azulada */ } .chat-input input { flex: 1; border: none; background: transparent; padding: 0.75rem 0; outline: none; font-size: 0.95rem; color: #333333; /* Color más oscuro para mejor contraste */ font-weight: 500; /* Texto ligeramente más grueso */ } .chat-input input::placeholder { color: #777777; /* Color del placeholder más oscuro */ opacity: 1; /* Asegura visibilidad en todos los navegadores */ } /* Mejora del contenedor de entrada para destacarlo */ .chat-input-container { padding: 1rem 1.5rem; background-color: #ffffff; border-top: 1px solid rgba(0, 0, 0, 0.1); /* Borde superior más oscuro */ position: relative; box-shadow: 0 -4px 10px rgba(0, 0, 0, 0.03); /* Sombra sutil hacia arriba */ } /* Efecto de enfoque para mejorar la interactividad */ .chat-input:focus-within { background-color: #f0f8ff; /* Azul muy claro cuando está enfocado */ border-color: var(--primary-color); /* Borde del color primario */ box-shadow: 0 0 0 2px rgba(0, 120, 215, 0.15); /* Resplandor sutil azulado */ } .chat-input button { width: 45px; height: 45px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background-color: var(--primary-color); color: white; border: none; outline: none; cursor: pointer; transition: var(--transition); } .chat-input button:hover { background-color: var(--primary-dark); } .chat-input button i { font-size: 1rem; } /* Floating Action Button para móviles */ .fab { position: fixed; bottom: 1.5rem; right: 1.5rem; width: 60px; height: 60px; border-radius: 50%; background-color: var(--primary-color); color: white; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); border: none; outline: none; cursor: pointer; z-index: 1000; transition: var(--transition); } .fab:hover { background-color: var(--primary-dark); transform: scale(1.05); } .fab i { font-size: 1.5rem; } /* Estilos para el modal de información */ .modal-content { border-radius: 15px; overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); } .modal-header { background-color: var(--primary-color); color: white; border: none; padding: 1rem 1.5rem; } .modal-title { font-weight: 600; } .modal-logo { width: 80px; height: auto; margin-bottom: 1rem; padding: 8px; background-color: white; border-radius: 10px; box-shadow: var(--shadow); } .modal-body { padding: 1.5rem; } .modal-body h4 { font-size: 1.1rem; font-weight: 600; } .modal-links-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } /* Media queries para dispositivos más pequeños */ @media (max-width: 768px) { .chat-box { border-radius: 0; height: 100vh; } .chat-body { padding: 1rem; } .message { max-width: 90%; } .modal-links-grid { grid-template-columns: 1fr; } } @media (max-width: 576px) { .mobile-header h2 { font-size: 1rem; } .mobile-logo { width: 40px; } .chat-input { padding-left: 1rem; } .reference-code { font-size: 0.9rem; } } /* Animaciones y transiciones */ .message { animation: message-appear 0.3s ease-out; } @keyframes message-appear { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } /* Tema oscuro - Para futuras implementaciones */ /* [data-theme="dark"] { --primary-color: #2196f3; --primary-light: #1a3c5e; --primary-dark: #0d47a1; --secondary-color: #0096c7; --text-color: #e0e0e0; --text-light: #9e9e9e; --background-color: #1a1a1a; --chat-bg: #1e1e1e; --user-message: #1a3c5e; --bot-message: #2a2a2a; } */ /* Estilos para consejos de ahorro de agua */ .water-tip { display: flex; align-items: flex-start; background-color: #e1f5fe; border-radius: 12px; padding: 1rem; margin: 1rem 0; box-shadow: 0 2px 8px rgba(0, 120, 215, 0.1); border-left: 4px solid var(--primary-color); max-width: 80%; align-self: center; animation: tip-appear 0.5s ease-out; } .tip-icon { background-color: var(--primary-color); color: white; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-right: 1rem; flex-shrink: 0; } .tip-content h5 { margin: 0 0 0.5rem 0; font-size: 0.9rem; color: var(--primary-dark); font-weight: 600; } .tip-content p { margin: 0; font-size: 0.85rem; color: var(--text-color); } @keyframes tip-appear { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } } /* Estilos para información educativa */ .education-card { background-color: #fff8e1; border-radius: 10px; padding: 1.2rem; margin: 0.5rem 0 1rem; border-left: 4px solid #ffc107; position: relative; } .education-icon { position: absolute; top: -12px; right: -12px; background-color: #ffc107; color: white; width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); } .education-card h5 { margin: 0 0 0.75rem 0; font-size: 1rem; color: #f57c00; } .education-card p { margin: 0; font-size: 0.9rem; line-height: 1.5; } /* Estilos para FAQ expandido */ .faq-categories { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; margin-top: 1rem; } .faq-category { background-color: white; border-radius: 10px; padding: 1rem; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } .faq-category h6 { margin: 0 0 0.75rem 0; font-weight: 600; color: var(--primary-color); padding-bottom: 0.5rem; border-bottom: 1px solid rgba(0, 0, 0, 0.05); } .faq-category ul { list-style: none; padding: 0; margin: 0; } .faq-category li { margin-bottom: 0.5rem; } .faq-category a { color: var(--text-color); text-decoration: none; font-size: 0.85rem; display: block; padding: 0.4rem 0; transition: var(--transition); } .faq-category a:hover { color: var(--primary-color); padding-left: 0.25rem; } /* Ajustes responsivos para FAQ */ @media (max-width: 768px) { .faq-categories { grid-template-columns: 1fr; } .water-tip { max-width: 90%; } } /* Añadir al final de tu archivo style.css */ /* Botón de calculadora */ .calculator-button { display: inline-flex; align-items: center; background-color: var(--secondary-color); color: white; text-decoration: none; padding: 0.6rem 1.25rem; border-radius: 20px; font-size: 0.9rem; transition: var(--transition); margin-top: 0.5rem; box-shadow: 0 3px 8px rgba(0, 150, 199, 0.3); } .calculator-button:hover { background-color: #007ba3; color: white; transform: translateY(-2px); box-shadow: 0 5px 12px rgba(0, 150, 199, 0.4); } .calculator-button i { margin-right: 0.5rem; font-size: 1.1rem; } /* Estilos mejorados para el contenedor de botones y el botón de refresh */ .button-container { display: flex; align-items: center; margin-left: 8px; } #refresh-button { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background-color: #cc4593; /* Fondo amarillo dorado */ color: #ffffff; /* Color del icono cambiado al rosa solicitado */ border: none; outline: none; cursor: pointer; transition: all 0.2s ease; margin-left: 8px; } #refresh-button:hover { background-color: #FFB6C1; /* Color rosa claro al pasar el cursor */ box-shadow: 0 2px 5px rgba(204, 69, 147, 0.4); /* Sombra rosada */ } #refresh-button i { font-size: 0.9rem; } /* Estilos completos para el modal de información */ #infoModal .modal-content { border-radius: 15px; overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15); border: none; } #infoModal .modal-header { background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); color: white; padding: 1rem 1.5rem; border-bottom: none; } #infoModal .modal-title { font-weight: 600; display: flex; align-items: center; color: white; } #infoModal .modal-title i { margin-right: 0.5rem; } #infoModal .btn-close { color: white; opacity: 0.8; } #infoModal .btn-close:hover { opacity: 1; } #infoModal .modal-body { background-color: #f8f9fa; padding: 1.5rem; border-radius: 0 0 15px 15px; color: var(--text-color); } #infoModal .text-center { margin-bottom: 1.5rem; } #infoModal .modal-logo { width: 80px; height: auto; margin-bottom: 1rem; padding: 8px; background-color: white; border-radius: 10px; box-shadow: var(--shadow); } #infoModal h4 { color: var(--text-color); font-size: 1.1rem; font-weight: 600; margin-bottom: 1rem; } #infoModal .info-item { display: flex; align-items: flex-start; background-color: white; margin-bottom: 1rem; border-radius: 10px; padding: 1rem; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } #infoModal .info-item i { margin-right: 1rem; font-size: 1.25rem; color: var(--primary-color); } #infoModal .info-item div { flex: 1; } #infoModal .info-item div h5 { margin: 0 0 0.25rem 0; font-weight: 600; font-size: 0.9rem; color: var(--text-color); } #infoModal .info-item div p { margin: 0; font-size: 0.85rem; color: var(--text-color); } #infoModal .quick-links { margin-top: 1.5rem; } #infoModal .quick-links h5 { font-size: 0.9rem; font-weight: 600; color: var(--text-color); margin-bottom: 0.75rem; } #infoModal .modal-links-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; } #infoModal .quick-link { display: flex; align-items: center; background-color: white; color: var(--text-color); text-decoration: none; padding: 0.75rem 1rem; border-radius: 8px; transition: var(--transition); border: 1px solid rgba(0, 0, 0, 0.1); } #infoModal .quick-link:hover { background-color: var(--primary-light); color: var(--primary-color); transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05); } #infoModal .quick-link i { margin-right: 0.5rem; color: var(--primary-color); } @media (max-width: 576px) { #infoModal .modal-links-grid { grid-template-columns: 1fr; } #infoModal .modal-body { padding: 1.25rem; } #infoModal .info-item { padding: 0.75rem; } } /* Estilos mejorados para el botón de información en el header */ .header-info-btn { background-color: var(--primary-color); color: white; border: none; width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-left: auto; margin-right: 8px; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); position: absolute; right: 15px; top: 50%; transform: translateY(-50%); } .header-info-btn:hover { background-color: var(--primary-dark); transform: translateY(-50%) scale(1.05); } .header-info-btn:active { transform: translateY(-50%) scale(0.95); } .header-info-btn i { font-size: 1.2rem; } /* Asegura que el header tenga position relative para el posicionamiento absoluto del botón */ .mobile-header { position: relative; width: 100%; padding-right: 50px; /* Espacio para el botón */ } .chat-input button i { font-size: 1rem; } /* Estilos para validación del input */ .chat-input.input-error { border: 2px solid #e74c3c !important; background-color: #ffeaea !important; animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both; box-shadow: 0 0 8px rgba(231, 76, 60, 0.3) !important; } .input-error-message { background-color: #e74c3c; color: white; text-align: center; padding: 6px 15px; border-radius: 15px; font-size: 0.85rem; margin-bottom: 10px; box-shadow: 0 2px 8px rgba(231, 76, 60, 0.3); animation: slideDown 0.3s ease-out forwards; transition: all 0.3s ease; width: fit-content; margin: 0 auto 10px auto; } @keyframes shake { 10%, 90% { transform: translate3d(-1px, 0, 0); } 20%, 80% { transform: translate3d(2px, 0, 0); } 30%, 50%, 70% { transform: translate3d(-3px, 0, 0); } 40%, 60% { transform: translate3d(3px, 0, 0); } } @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* */ .social-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-top: 15px; margin-bottom: 15px; } @media (max-width: 400px) { .social-grid { grid-template-columns: 1fr; } } .social-btn { display: flex; align-items: center; padding: 10px 12px; border-radius: 10px; text-decoration: none; color: white; font-weight: bold; transition: all 0.3s ease; border: none; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .social-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0,0,0,0.2); } .social-btn i { font-size: 20px; margin-right: 8px; } .facebook { background: linear-gradient(45deg, #3b5998, #4c70ba); } .twitter { background: linear-gradient(45deg, #1DA1F2, #4db5f5); } .instagram { background: linear-gradient(45deg, #833AB4, #FD1D1D, #FCAF45); } .youtube { background: linear-gradient(45deg, #FF0000, #FF5050); } .tiktok { background: linear-gradient(45deg, #000000, #25F4EE, #FE2C55); } .whatsapp { background: linear-gradient(45deg, #25D366, #4CD080); } .info-card { background-color: #f7f9fc; border-left: 4px solid #4D96FF; padding: 12px 15px; border-radius: 8px; margin-top: 15px; } .info-card h5 { margin-top: 0; margin-bottom: 8px; color: #333; } .info-card ul { margin: 0; padding-left: 20px; } .info-card li { margin-bottom: 5px; } /* Estilos para la sección de redes sociales en el sidebar */ .social-media { margin-top: 20px; padding-top: 15px; border-top: 1px solid rgba(0, 0, 0, 0.1); } .social-media h5 { margin-bottom: 12px; font-size: 16px; color: #ffffff; /* Título en color blanco */ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); /* Opcional: sombra suave para mejor legibilidad */ } .social-icons { display: flex; flex-wrap: wrap; gap: 10px; } .social-icon { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; color: white; transition: all 0.3s ease; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } .social-icon:hover { transform: translateY(-3px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } .social-icon i { font-size: 20px; } .social-icon.facebook { background: #3b5998; } .social-icon.twitter { background: #1DA1F2; } .social-icon.instagram { background: linear-gradient(45deg, #405DE6, #5851DB, #833AB4, #C13584, #E1306C, #FD1D1D); } .social-icon.youtube { background: #FF0000; } .social-icon.tiktok { background: #000000; position: relative; overflow: hidden; } .social-icon.tiktok::before { content: ""; position: absolute; top: -10px; left: -10px; right: -10px; bottom: -10px; background: linear-gradient(90deg, #25F4EE, #FE2C55, #000000); z-index: -1; animation: tiktok-glitch 2s linear infinite; } .social-icon.whatsapp { background: #25D366; } @keyframes tiktok-glitch { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } #voice-button { width: 45px; height: 45px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background-color: #0096c7; color: white; border: none; outline: none; cursor: pointer; transition: all 0.2s ease-in-out; margin-right: 8px; } #voice-button:hover { background-color: #0077b6; } #voice-button.recording { background-color: #e63946; animation: pulse 1.5s infinite; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } .voice-indicator { background-color: rgba(0, 0, 0, 0.7); color: white; padding: 8px 15px; border-radius: 20px; position: absolute; top: -50px; left: 50%; transform: translateX(-50%); font-size: 14px; display: flex; align-items: center; gap: 8px; z-index: 100; box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2); } .voice-indicator .pulse { width: 10px; height: 10px; background-color: #e63946; border-radius: 50%; animation: pulseDot 1s infinite; } @keyframes pulseDot { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.5); opacity: 0.7; } 100% { transform: scale(1); opacity: 1; } } /* Contenedor de botones para mejor posicionamiento */ .chat-buttons { display: flex; align-items: center; } /* Estilos base para botones principales */ #voice-button, #send-button { width: 45px; height: 45px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: none; outline: none; cursor: pointer; transition: all 0.2s ease-in-out; margin-left: 8px; } /* Estilo específico para el botón refresh (más pequeño) */ #refresh-button { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: none; outline: none; cursor: pointer; transition: all 0.2s ease-in-out; margin-left: 6px; background-color: #cc4593; color: #ffffff; font-size: 0.85rem; } #voice-button { background-color: #0096c7; color: white; } #send-button { background-color: var(--primary-color); color: white; } #voice-button:hover { background-color: #0077b6; } #send-button:hover { background-color: var(--primary-dark); } #refresh-button:hover { background-color: #FFB6C1; } /* Estilos responsivos para dispositivos móviles */ @media (max-width: 576px) { #voice-button, #send-button { width: 38px; height: 38px; margin-left: 5px; } #refresh-button { width: 30px; height: 30px; margin-left: 4px; } #voice-button i, #send-button i { font-size: 0.9rem; } #refresh-button i { font-size: 0.8rem; } .chat-input { padding: 0.2rem 0.2rem 0.2rem 1rem; } .chat-input input { padding: 0.6rem 0; font-size: 0.9rem; } } /* Para pantallas muy pequeñas */ @media (max-width: 360px) { #voice-button, #send-button { width: 34px; height: 34px; margin-left: 4px; } #refresh-button { width: 28px; height: 28px; margin-left: 3px; } #voice-button i, #send-button i { font-size: 0.8rem; } #refresh-button i { font-size: 0.7rem; } .chat-input { padding: 0.15rem 0.15rem 0.15rem 0.8rem; } } /* Animación y estilos para estado de grabación */ #voice-button.recording { background-color: #e63946; animation: pulse 1.5s infinite; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } .voice-indicator { background-color: rgba(0, 0, 0, 0.7); color: white; padding: 6px 12px; border-radius: 20px; position: absolute; top: -40px; left: 50%; transform: translateX(-50%); font-size: 13px; display: flex; align-items: center; gap: 6px; z-index: 100; box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2); } .voice-indicator .pulse { width: 8px; height: 8px; background-color: #e63946; border-radius: 50%; animation: pulseDot 1s infinite; } @keyframes pulseDot { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.5); opacity: 0.7; } 100% { transform: scale(1); opacity: 1; } } /* Ajustes de tamaño de texto para dispositivos móviles - Versión significativamente más grande */ /* Tablets y pantallas medianas */ @media (max-width: 768px) { /* Ajustes generales */ body { font-size: 17px; } /* Mensajes del chat */ .message-text { font-size: 17px; line-height: 1.4; } /* Encabezado */ .mobile-header h2 { font-size: 1.25rem; } .mobile-header small { font-size: 0.85rem; } /* Botones de preguntas rápidas */ .quick-questions button { font-size: 0.95rem; padding: 0.4rem 1rem; } /* Botones de acciones */ .payment-button, .calculator-button { font-size: 1rem; padding: 0.45rem 1.2rem; } /* Contenido de mensajes */ .message-content { padding: 1rem; } /* Tarjetas de información */ .info-card h5 { font-size: 1.05rem; } .info-card ul li { font-size: 0.95rem; } /* Tarjetas educativas */ .education-card h5 { font-size: 1.1rem; } .education-card p { font-size: 0.95rem; } /* Categorías FAQ */ .faq-category h6 { font-size: 1.05rem; } .faq-category a { font-size: 0.95rem; } /* Consejos de agua */ .tip-content h5 { font-size: 1.05rem; } .tip-content p { font-size: 0.95rem; } /* Input de texto */ .chat-input input { font-size: 1rem; } } /* Teléfonos móviles */ @media (max-width: 576px) { body { font-size: 16.5px; } .message-text { font-size: 16.5px; line-height: 1.4; } .mobile-header h2 { font-size: 1.2rem; } .mobile-header small { font-size: 0.8rem; } .quick-questions button { font-size: 0.9rem; padding: 0.38rem 1rem; } .message-content { padding: 0.9rem; } /* Asegurar que los botones de acciones sean proporcionalmente más pequeños */ .payment-button, .calculator-button { font-size: 0.95rem; padding: 0.42rem 1.1rem; } } /* Pantallas pequeñas */ @media (max-width: 480px) { body { font-size: 16px; } .message-text { font-size: 16px; line-height: 1.35; } .mobile-header h2 { font-size: 1.15rem; } .mobile-header small { font-size: 0.78rem; } .quick-questions button { font-size: 0.88rem; padding: 0.35rem 0.95rem; } /* Reducir más el padding para dar más espacio al texto */ .message-content { padding: 0.85rem; } .payment-button, .calculator-button { font-size: 0.9rem; padding: 0.4rem 1rem; } } /* Pantallas muy pequeñas */ @media (max-width: 375px) { body { font-size: 15px; } .message-text { font-size: 15px; line-height: 1.3; } .mobile-header h2 { font-size: 1.1rem; } .mobile-header small { font-size: 0.75rem; } .quick-questions button { font-size: 0.85rem; padding: 0.35rem 0.9rem; } .message-content { padding: 0.8rem; } /* Ajustar otros elementos para pantallas muy pequeñas */ .info-card h5 { font-size: 1rem; } .info-card ul li { font-size: 0.9rem; } .education-card h5 { font-size: 1rem; } .education-card p { font-size: 0.9rem; } .payment-button, .calculator-button { font-size: 0.9rem; padding: 0.38rem 0.95rem; } /* Reducir el margen y el relleno para optimizar el espacio */ .quick-questions { gap: 0.45rem; margin-top: 0.7rem; } } /* Mejoras para el área de entrada de mensajes en móviles */ /* Reducir el padding del contenedor de entrada para dar más espacio */ .chat-input-container { padding: 0.75rem 1rem; } /* Ajustar el input para que use menos espacio */ .chat-input { padding: 0.15rem 0.15rem 0.15rem 0.7rem; } .chat-input input { padding: 0.5rem 0; min-width: 0; /* Permite que el input se comprima si es necesario */ } /* Hacer los botones más pequeños y compactos en móviles */ @media (max-width: 576px) { #voice-button, #send-button { width: 36px; height: 36px; margin-left: 4px; } #refresh-button { width: 30px; height: 30px; margin-left: 3px; } .chat-buttons { flex-shrink: 0; /* Evita que los botones se compriman */ } /* Reducir el tamaño de los íconos */ #voice-button i, #send-button i, #refresh-button i { font-size: 0.85rem; } } /* Ajustes adicionales para pantallas muy pequeñas */ @media (max-width: 375px) { .chat-input-container { padding: 0.5rem 0.75rem; } .chat-input { padding: 0.1rem 0.1rem 0.1rem 0.5rem; } #voice-button, #send-button { width: 32px; height: 32px; margin-left: 3px; } #refresh-button { width: 28px; height: 28px; margin-left: 2px; } #voice-button i, #send-button i, #refresh-button i { font-size: 0.8rem; } .chat-input input { padding: 0.4rem 0; font-size: 0.9rem; } } /* Asegurar que el contenedor de botones preserve su tamaño */ .chat-buttons { display: flex; align-items: center; white-space: nowrap; } /* Mejorar la distribución del espacio */ .chat-input { display: flex; align-items: center; } .chat-input input { width: 100%; min-width: 0; /* Importante para que el texto pueda comprimirse */ } /* Fijar el área de entrada de mensajes en la parte inferior de la pantalla */ /* Asegurar que el área de chat tiene la estructura correcta para el posicionamiento fijo */ .chat-area { display: flex; flex-direction: column; height: 100vh; position: relative; /* Para posicionamiento relativo de elementos internos */ } .chat-box { display: flex; flex-direction: column; height: 100%; } /* Fijar el contenedor de entrada en la parte inferior */ .chat-input-container { position: sticky; bottom: 0; left: 0; right: 0; background-color: white; z-index: 100; /* Asegurar que esté encima de otros elementos */ padding: 0.75rem 1rem; border-top: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05); } /* Garantizar que el área de mensajes pueda scrollear correctamente */ .chat-body { flex: 1; overflow-y: auto; padding-bottom: 70px; /* Espacio adicional para evitar que los mensajes queden detrás del input */ } /* Ajustes móviles adicionales */ @media (max-width: 768px) { .chat-input-container { position: fixed; /* Fijado absolutamente en móviles */ bottom: 0; left: 0; right: 0; width: 100%; padding: 0.75rem 1rem; background-color: white; z-index: 1000; } /* Asegurar espacio suficiente para el área fija */ .chat-body { padding-bottom: 80px; } /* Estilos para el input y botones en móviles (más compactos) */ .chat-input { padding: 0.15rem 0.15rem 0.15rem 0.7rem; } #voice-button, #send-button { width: 36px; height: 36px; margin-left: 4px; } #refresh-button { width: 30px; height: 30px; margin-left: 3px; } } /* Ajustes para pantallas muy pequeñas */ @media (max-width: 375px) { .chat-input-container { padding: 0.5rem 0.75rem; } .chat-input { padding: 0.1rem 0.1rem 0.1rem 0.5rem; } #voice-button, #send-button { width: 32px; height: 32px; margin-left: 3px; } #refresh-button { width: 28px; height: 28px; margin-left: 2px; } #voice-button i, #send-button i, #refresh-button i { font-size: 0.8rem; } .chat-input input { padding: 0.4rem 0; font-size: 0.9rem; } } /* Asegurar que el chat-body no quede detrás de otros elementos */ .chat-body { z-index: 1; } /* Estilos para mensajes de error y advertencia */ .voice-error-message { background-color: rgba(220, 53, 69, 0.9); color: white; padding: 8px 15px; border-radius: 10px; font-size: 14px; margin: 10px auto; text-align: center; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); max-width: 80%; animation: fadeInOut 3s forwards; align-self: center; } @keyframes fadeInOut { 0% { opacity: 0; transform: translateY(-10px); } 10% { opacity: 1; transform: translateY(0); } 90% { opacity: 1; } 100% { opacity: 0; } } /* Estilos mejorados para sección FAQ */ .faq-container { background-color: #f8f9fa; border-radius: 12px; padding: 15px; border-left: 4px solid var(--primary-color); margin-bottom: 5px; } .faq-header { display: flex; align-items: center; margin-bottom: 10px; } .faq-header i { color: var(--primary-color); font-size: 22px; margin-right: 10px; } .faq-header h4 { color: var(--primary-color); margin: 0; font-size: 18px; font-weight: 600; } .faq-container p { margin: 0; font-size: 14px; color: #505050; } /* Botón destacado con estilo moderno */ .feature-button { display: flex !important; align-items: center !important; justify-content: center !important; width: 100% !important; background-color: var(--primary-color) !important; color: white !important; border: none !important; border-radius: 10px !important; padding: 12px !important; margin-bottom: 10px !important; font-weight: 500 !important; box-shadow: 0 3px 10px rgba(0, 120, 215, 0.2) !important; transition: all 0.2s ease !important; } .feature-button:hover { background-color: var(--primary-dark) !important; transform: translateY(-2px) !important; box-shadow: 0 5px 15px rgba(0, 120, 215, 0.3) !important; } .btn-icon { margin-right: 8px !important; font-size: 16px !important; } .action-buttons { display: flex; gap: 8px; } .action-buttons button { flex: 1; font-size: 0.9rem !important; }