.input-area { width: 100%; max-width: 100%; margin: 2px 0 0; } .input-form { display: flex; gap: 10px; align-items: center; background: rgba(255, 255, 255, 0.97); padding: 15px; border-radius: 14px; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.14); backdrop-filter: blur(4px); } .text-input { flex: 1; min-width: 0; padding: 12px 15px; border: 2px solid #e0e0e0; border-radius: 8px; font-size: 14px; font-family: inherit; transition: border-color 0.3s ease; min-height: 88px; resize: vertical; line-height: 1.45; } .input-actions { display: flex; align-items: center; gap: 10px; flex-wrap: nowrap; } .text-input:focus { outline: none; border-color: #4CAF50; } .text-input:disabled { background-color: #f5f5f5; cursor: not-allowed; } .mic-button { padding: 10px 15px; background: linear-gradient(135deg, #F6B36A 0%, #E78F3C 100%); color: white; border: 2px solid #C9782F; border-radius: 999px; cursor: pointer; font-size: 18px; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; gap: 8px; box-shadow: 0 4px 10px rgba(199, 120, 47, 0.28); } .mic-button:hover:not(:disabled) { background: linear-gradient(135deg, #F9BF7F 0%, #EE9A49 100%); transform: translateY(-1px) scale(1.04); } .mic-button:disabled { opacity: 0.5; cursor: not-allowed; } .mic-button.listening { background: linear-gradient(135deg, #E37C63 0%, #D95D39 100%); border-color: #B5482A; animation: pulse 1s ease-in-out infinite; } .mic-icon { display: inline-block; font-size: 28px; line-height: 1; } .send-icon-img { width: 32px; height: 32px; display: block; } .send-button { padding: 10px 20px; background: linear-gradient(135deg, #8CC9E6 0%, #5EAED8 100%); color: white; border: 2px solid #4F98BE; border-radius: 999px; cursor: pointer; font-size: 18px; transition: all 0.3s ease; font-weight: bold; box-shadow: 0 4px 10px rgba(79, 152, 190, 0.28); display: flex; align-items: center; justify-content: center; gap: 8px; } .send-button:hover:not(:disabled) { background: linear-gradient(135deg, #9ED3EC 0%, #6CB9DF 100%); transform: translateY(-1px) scale(1.04); } .send-button:disabled { background: #cccccc; cursor: not-allowed; } .photo-input { display: none; position: absolute; width: 0; height: 0; opacity: 0; } .photo-button { padding: 10px 14px; background: linear-gradient(135deg, #7EB8A5 0%, #4F9E82 100%); color: white; border: 2px solid #3E886E; border-radius: 999px; cursor: pointer; font-size: 18px; transition: all 0.3s ease; box-shadow: 0 4px 10px rgba(62, 136, 110, 0.26); display: flex; align-items: center; justify-content: center; gap: 8px; user-select: none; -webkit-user-select: none; } .photo-button:hover:not(.disabled) { background: linear-gradient(135deg, #8CC2B1 0%, #5AA78C 100%); transform: translateY(-1px) scale(1.04); } .photo-button.disabled { opacity: 0.55; cursor: not-allowed; pointer-events: none; } .camera-button { padding: 10px 14px; background: linear-gradient(135deg, #5f9be6 0%, #437fcb 100%); color: white; border: 2px solid #3468ac; border-radius: 999px; cursor: pointer; font-size: 18px; transition: all 0.3s ease; box-shadow: 0 4px 10px rgba(52, 104, 172, 0.28); display: flex; align-items: center; justify-content: center; gap: 8px; user-select: none; -webkit-user-select: none; } .action-icon { flex: 0 0 auto; } .action-label { font-size: 13px; font-weight: 700; line-height: 1; white-space: nowrap; } .camera-button:hover:not(.disabled) { background: linear-gradient(135deg, #73aae9 0%, #518cd3 100%); transform: translateY(-1px) scale(1.04); } .camera-button.disabled { opacity: 0.55; cursor: not-allowed; pointer-events: none; } .input-actions .mic-button, .input-actions .send-button, .input-actions .photo-button, .input-actions .camera-button { flex: 0 0 auto; } @media (min-width: 821px) { .input-form { flex-direction: column; align-items: stretch; gap: 12px; } .text-input { width: 100%; } .input-actions { width: 100%; justify-content: flex-start; flex-wrap: wrap; } } .photo-preview-wrap { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px; } .photo-preview { position: relative; width: 72px; height: 72px; border-radius: 10px; overflow: hidden; border: 2px solid #d9e7f2; background: #fff; } .photo-preview img { width: 100%; height: 100%; object-fit: cover; display: block; } .photo-remove { position: absolute; top: 2px; right: 2px; width: 22px; height: 22px; border: none; border-radius: 999px; background: rgba(0, 0, 0, 0.72); color: #fff; font-size: 15px; line-height: 1; cursor: pointer; } .mic-button.mic-unsupported { opacity: 0.4; cursor: not-allowed; } .mic-error { margin-top: 8px; padding: 10px 14px; background: #FFF3CD; border-left: 4px solid #FFC107; border-radius: 4px; font-size: 13px; color: #856404; } .listening-indicator { display: flex; align-items: center; gap: 10px; margin-top: 10px; padding: 10px; background: #FFF3E0; border-left: 4px solid #FF9800; border-radius: 4px; font-size: 14px; color: #E65100; } .pulse { width: 12px; height: 12px; background: #FF9800; border-radius: 50%; animation: pulse 1.5s ease-in-out infinite; } @keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 152, 0, 0.7); transform: scale(1); } 50% { box-shadow: 0 0 0 10px rgba(255, 152, 0, 0); transform: scale(1.1); } } @media (max-width: 480px) { .input-area { width: 100%; } .input-form { flex-wrap: wrap; gap: 8px; padding: 10px; } .text-input { width: 100%; flex: 1 1 100%; min-height: 72px; margin-bottom: 4px; font-size: 16px; padding: 10px 12px; } .input-actions { width: 100%; flex-wrap: wrap; gap: 8px; } .input-actions .mic-button, .input-actions .send-button, .input-actions .photo-button, .input-actions .camera-button { flex: 1 1 calc(50% - 4px); min-height: 44px; padding: 8px 10px; } .action-label { font-size: 12px; } .photo-preview { width: 64px; height: 64px; } } @media (max-width: 820px) { .input-form { flex-wrap: wrap; align-items: stretch; } .text-input { width: 100%; flex: 1 1 100%; } .input-actions { width: 100%; flex-wrap: wrap; justify-content: flex-start; } .input-actions .mic-button, .input-actions .send-button, .input-actions .photo-button, .input-actions .camera-button { min-width: 56px; } }