body { font-family: 'Arial', sans-serif; margin: 0; padding: 0; background-color: #f0f2f5; overflow-x: hidden; } .chat-container { width: 100%; max-width: 1200px; height: 100vh; margin: 0 auto; border: 1px solid #ccc; border-radius: 8px; background-color: white; display: flex; flex-direction: column; box-sizing: border-box; } .chat-header { background: linear-gradient(45deg, #0288d1, #03a9f4); color: white; padding: 12px; text-align: center; font-size: 1.25rem; flex-shrink: 0; } .chat-messages { flex: 1; overflow-y: auto; padding: 10px; box-sizing: border-box; scroll-behavior: smooth; } .bot-message, .user-message { padding: 10px; margin: 8px 0; border-radius: 8px; max-width: 80%; word-wrap: break-word; font-size: 0.875rem; animation: slideIn 0.3s ease; } .bot-message { background-color: #e3f2fd; } .user-message { background-color: #ffebee; margin-left: auto; text-align: right; } @keyframes slideIn { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .chat-input { display: flex; padding: 10px; border-top: 1px solid #ccc; flex-shrink: 0; background-color: white; box-sizing: border-box; position: sticky; bottom: env(safe-area-inset-bottom); } .chat-input input { flex: 1; padding: 8px; border: 1px solid #ccc; border-radius: 8px; font-size: 0.875rem; min-height: 48px; box-sizing: border-box; } .chat-input button { padding: 8px 12px; margin-left: 8px; background-color: #ff8f00; color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 0.875rem; min-height: 48px; min-width: 80px; transition: background-color 0.2s ease; } .chat-input button:hover { background-color: #f57c00; } .items-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; padding: 12px; margin: 8px 0; background-color: #f9f9f9; border-radius: 8px; } .item-card { background-color: white; border: 1px solid #ddd; border-radius: 8px; padding: 12px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); transition: transform 0.2s ease, box-shadow 0.2s ease; } .item-card:hover { transform: scale(1.05); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } .item-image { width: 100%; height: 120px; object-fit: cover; border-radius: 8px; margin-bottom: 8px; loading: lazy; } .item-content { width: 100%; } .item-name { font-size: 0.875rem; font-weight: bold; color: #333; margin-bottom: 5px; } .item-field { font-size: 0.75rem; margin: 3px 0; color: #555; } .item-field strong { color: #0288d1; } .item-description { font-size: 0.75rem; margin: 5px 0; color: #555; } .button-container { display: flex; gap: 8px; margin-top: 8px; } .show-button, .add-button { padding: 6px; border: none; border-radius: 8px; cursor: pointer; font-size: 0.75rem; flex: 1; min-width: 50px; min-height: 36px; transition: background-color 0.2s ease; } .show-button { background-color: #0288d1; color: white; } .show-button:hover { background-color: #0277bd; } .add-button { background-color: #4caf50; color: white; } .add-button:hover { background-color: #45a049; } .options-container { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0; } .option-button { padding: 8px 12px; background-color: #7b1fa2; color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 0.875rem; min-width: 80px; min-height: 48px; transition: opacity 0.2s ease; } .option-button.green { background-color: #4caf50; } .option-button.red { background-color: #d32f2f; } .option-button.gray { background-color: #616161; } .option-button:hover { opacity: 0.9; } .selection-box { background-color: #e1f5fe; padding: 12px; border: 1px solid #0288d1; border-radius: 8px; margin: 8px 0; font-size: 0.875rem; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; position: relative; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .selection-box::before { content: "Selected Items"; position: sticky; top: 0; background: #0288d1; color: white; padding: 8px; border-radius: 8px 8px 0 0; font-size: 0.875rem; font-weight: bold; width: 100%; box-sizing: border-box; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .selection-box span { background-color: #bbdefb; padding: 4px 10px; border-radius: 8px; font-size: 0.875rem; } .selected-item { display: flex; align-items: center; background-color: #bbdefb; padding: 4px 10px; border-radius: 8px; font-size: 0.75rem; } .selected-item-image { width: 30px; height: 30px; object-fit: cover; border-radius: 8px; margin-right: 8px; loading: lazy; } .submit-button { padding: 8px 12px; background-color: #0288d1; color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 0.875rem; min-width: 80px; min-height: 48px; transition: background-color 0.2s ease; } .submit-button:hover { background-color: #0277bd; } .remove-button { padding: 4px 8px; margin-left: 8px; background-color: #d32f2f; color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 0.75rem; min-height: 36px; transition: background-color 0.2s ease; } .remove-button:hover { background-color: #b71c1c; } .manual-input, .order-name-input { padding: 6px; border: 1px solid #0288d1; border-radius: 8px; font-size: 0.875rem; width: 120px; min-height: 48px; } .quantity-input { padding: 6px; border: 1px solid #0288d1; border-radius: 8px; font-size: 0.875rem; width: 60px; min-height: 48px; } .quantity-button { padding: 4px 8px; background-color: #0288d1; color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 0.75rem; min-height: 36px; transition: background-color 0.2s ease; } .quantity-button:hover { background-color: #0277bd; } .spinner { border: 4px solid #0288d1; border-top: 4px solid transparent; border-radius: 50%; width: 24px; height: 24px; animation: spin 1s linear infinite; margin: 10px auto; } @keyframes spin { to { transform: rotate(360deg); } } .toast { position: fixed; bottom: 20px; right: 20px; background: #4caf50; color: white; padding: 10px; border-radius: 8px; font-size: 0.875rem; animation: fadeInOut 3s ease forwards; z-index: 1000; } @keyframes fadeInOut { 0% { opacity: 0; transform: translateY(20px); } 10%, 90% { opacity: 1; transform: translateY(0); } 100% { opacity: 0; transform: translateY(20px); } } @media (max-width: 480px) { .chat-container { border-radius: 0; height: calc(100vh - env(safe-area-inset-bottom)); } .chat-header { font-size: 1rem; padding: 8px; } .chat-messages { padding: 6px; } .bot-message, .user-message { font-size: 0.75rem; padding: 8px; margin: 6px 0; } .chat-input input { font-size: 0.75rem; min-height: 48px; padding: 6px; } .chat-input button { font-size: 0.75rem; min-height: 48px; padding: 6px 10px; min-width: 80px; } .items-grid { grid-template-columns: 1fr; gap: 8px; padding: 8px; } .item-card { max-width: 100%; } .item-image { height: 100px; } .item-name { font-size: 0.75rem; } .item-field, .item-description { font-size: 0.75rem; } .show-button, .add-button, .quantity-button { font-size: 0.75rem; padding: 4px; min-width: 40px; min-height: 36px; } .options-container { flex-direction: column; align-items: stretch; gap: 6px; } .option-button { font-size: 0.75rem; padding: 6px 10px; min-width: 100%; min-height: 48px; } .selection-box { padding: 8px; gap: 6px; } .selection-box::before { font-size: 0.75rem; padding: 6px; } .selection-box span { font-size: 0.75rem; padding: 3px 8px; } .selected-item { font-size: 0.75rem; padding: 3px 8px; } .selected-item-image { width: 24px; height: 24px; } .submit-button { font-size: 0.75rem; padding: 6px 10px; min-width: 80px; min-height: 48px; } .remove-button { font-size: 0.75rem; padding: 3px 6px; min-height: 36px; } .manual-input, .order-name-input { width: 100px; font-size: 0.75rem; padding: 4px; min-height: 48px; } .quantity-input { width: 50px; font-size: 0.75rem; padding: 4px; min-height: 48px; } } @media (min-width: 481px) and (max-width: 768px) { .chat-container { max-width: 100%; } .chat-header { font-size: 1.125rem; } .chat-messages { padding: 8px; } .bot-message, .user-message { font-size: 0.875rem; padding: 9px; } .chat-input input { font-size: 0.875rem; min-height: 48px; } .chat-input button { font-size: 0.875rem; min-height: 48px; padding: 7px 11px; } .items-grid { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; } .item-image { height: 110px; } .item-name { font-size: 0.875rem; } .item-field, .item-description { font-size: 0.75rem; } .show-button, .add-button, .quantity-button { font-size: 0.75rem; padding: 5px; min-width: 45px; min-height: 36px; } .option-button { font-size: 0.875rem; padding: 7px 11px; min-height: 48px; } .selection-box { padding: 10px; gap: 7px; } .selection-box span { font-size: 0.875rem; } .selected-item { font-size: 0.75rem; } .selected-item-image { width: 28px; height: 28px; } .submit-button { font-size: 0.875rem; padding: 7px 11px; min-height: 48px; } .remove-button { font-size: 0.75rem; padding: 4px 7px; min-height: 36px; } .manual-input, .order-name-input { width: 110px; font-size: 0.875rem; min-height: 48px; } .quantity-input { width: 55px; font-size: 0.875rem; min-height: 48px; } } @media (min-width: 769px) { .chat-container { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .chat-messages, .chat-input { grid-column: 1 / 2; } .suggestions-list, .ingredients-list { grid-column: 2 / 3; } .selection-box { grid-column: 2 / 3; grid-row: 1 / 3; } }