diff --git "a/templates/menu.html" "b/templates/menu.html" --- "a/templates/menu.html" +++ "b/templates/menu.html" @@ -8,7 +8,7 @@ - + {% for section, items in ordered_menu.items() %} {% for item in items[:1] %} @@ -35,37 +35,49 @@ margin: auto; display: flex; flex-direction: column; - transition: opacity 0.3s ease-in-out; box-shadow: 0 4px 8px rgba(0,0,0,0.1); } - .menu-card.visible { - opacity: 1; - } .menu-card.highlighted { border: 3px solid #0FAA39; box-shadow: 0 0 10px rgba(15, 170, 57, 0.5); } - .menu-video { - height: 200px; + .media-wrapper { + position: relative; width: 100%; - object-fit: contain; + height: 200px; + overflow: hidden; border-radius: 15px 15px 0 0; - opacity: 0; - transition: opacity 0.5s ease-in-out; background-color: #000; + transition: transform 0.3s ease; } - .menu-video.loaded { - opacity: 1; + .media-wrapper:hover, .media-wrapper.touched { + transform: scale(1.02); } - .menu-card img { + .menu-video { + position: absolute; + top: 0; + left: 0; width: 100%; - height: 200px; + height: 100%; object-fit: cover; - object-position: center; + opacity: 0; + transition: opacity 0.3s ease; + } + .menu-video.active { + opacity: 1; } - .menu-card:hover .menu-video { + .menu-image { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; opacity: 1; - transform: scale(1.05); + transition: opacity 0.3s ease; + } + .menu-image.hidden { + opacity: 0; } .menu-card .card-body .card-title { font-size: 1.2rem; @@ -120,19 +132,17 @@ align-items: center; justify-content: center; padding: 0; - transition: background-color 0.3s ease, transform 0.1s ease; + transition: background-color 0.3s ease; } .btn-primary:hover { background-color: #0D9232; border-color: #0D9232; - transform: scale(1.05); } .btn-primary:active, .btn-primary:focus { background-color: #0B7A29; border-color: #0B7A29; box-shadow: none; - transform: scale(0.98); } .avatar-dropdown-container { position: absolute; @@ -210,7 +220,7 @@ } .search-bar-container input { width: 100%; - padding: 8px 100px 8px 40px; + padding: 8px 40px 8px 40px; font-size: 16px; border-radius: 25px; border: none; @@ -229,7 +239,6 @@ left: 15px; font-size: 18px; color: #888; - cursor: pointer; } .mic-icon { position: absolute; @@ -242,21 +251,6 @@ .mic-icon.active { color: #007bff; } - #searchButton { - background-color: #0FAA39; - border-color: #0FAA39; - border-radius: 20px; - height: 30px; - line-height: 1; - position: absolute; - right: 40px; - padding: 5px 10px; - font-size: 14px; - } - #searchButton:hover { - background-color: #0D9232; - border-color: #0D9232; - } /* Addon Section */ .addon-section { background-color: #fff; @@ -264,10 +258,6 @@ margin-bottom: 15px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); overflow: hidden; - transition: transform 0.2s ease; - } - .addon-section:hover { - transform: translateY(-2px); } .addon-section h6 { margin: 0; @@ -325,7 +315,6 @@ animation: checkmark 0.2s ease-in-out; } .addon-section .form-check-input:hover { - transform: scale(1.1); border-color: #0FAA39; } .addon-section .form-check-input:focus { @@ -352,13 +341,11 @@ } .addon-options { max-height: 500px; - opacity: 1; overflow: hidden; - transition: max-height 0.3s ease, opacity 0.3s ease; + transition: max-height 0.3s ease; } .addon-options.collapsed { max-height: 0; - opacity: 0; } .addon-loading { display: flex; @@ -447,14 +434,10 @@ background-color: #e9ecef; border: none; color: #333; - transition: background-color 0.2s ease, transform 0.1s ease; + transition: background-color 0.2s ease; } #softDrinkModal .quantity-controls .btn:hover { background-color: #d1d4d7; - transform: scale(1.1); - } - #softDrinkModal .quantity-controls .btn:active { - transform: scale(0.95); } #softDrinkModal .quantity-controls input { width: 50px; @@ -480,16 +463,11 @@ font-size: 1.1rem; font-weight: 600; border-radius: 8px; - transition: background-color 0.2s ease, transform 0.1s ease; + transition: background-color 0.2s ease; width: auto; } #softDrinkModal .modal-footer .btn-primary:hover { background-color: #0D9232; - transform: scale(1.05); - } - #softDrinkModal .modal-footer .btn-primary:active { - background-color: #0B7A29; - transform: scale(0.98); } #softDrinkModal .modal-footer .quantity-controls-footer { display: flex; @@ -506,14 +484,10 @@ background-color: #e9ecef; border: none; color: #333; - transition: background-color 0.2s ease, transform 0.1s ease; + transition: background-color 0.2s ease; } #softDrinkModal .modal-footer .quantity-controls-footer .btn:hover { background-color: #d1d4d7; - transform: scale(1.1); - } - #softDrinkModal .modal-footer .quantity-controls-footer .btn:active { - transform: scale(0.95); } /* Filter Form Styling */ #filter-form { @@ -569,6 +543,75 @@ color: #333; cursor: pointer; } + /* Microphone Modal Styling */ + #micModal .modal-dialog { + max-width: 300px; + margin: 1.75rem auto; + } + #micModal .modal-content { + border-radius: 12px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + background-color: #fff; + text-align: center; + } + #micModal .modal-header { + background: linear-gradient(45deg, #FFA07A, #FFB347); + border-top-left-radius: 12px; + border-top-right-radius: 12px; + padding: 12px 15px; + border-bottom: none; + } + #micModal .modal-title { + font-size: 1.3rem; + font-weight: 600; + color: #fff; + margin: 0 auto; + } + #micModal .modal-body { + padding: 20px; + display: flex; + flex-direction: column; + align-items: center; + gap: 15px; + min-height: 200px; + } + #micModal .modal-body i#mic-icon-animation { + font-size: 2.5rem; + color: #007bff; + animation: pulse 2s infinite; + } + #micModal .modal-body p#mic-status { + font-size: 1.1rem; + color: #333; + margin: 0; + } + #micModal .modal-body #mic-item-image { + max-height: 150px; + width: 100%; + object-fit: cover; + border-radius: 8px; + margin-bottom: 10px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); + } + #micModal .modal-body #mic-item-details.show { + animation: fadeIn 0.3s ease; + } + #micModal .modal-footer { + padding: 15px; + border-top: none; + justify-content: center; + } + #micModal .modal-footer .btn-secondary { + background-color: #6c757d; + border-color: #6c757d; + padding: 10px 20px; + font-size: 1rem; + border-radius: 8px; + } + #micModal .modal-footer .btn-secondary:hover { + background-color: #5a6268; + border-color: #5a6268; + } @keyframes checkmark { from { transform: scale(0); } to { transform: scale(1); } @@ -585,6 +628,11 @@ from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } + @keyframes pulse { + 0% { transform: scale(1); } + 50% { transform: scale(1.2); } + 100% { transform: scale(1); } + } .modal-header { padding: 10px 15px; } @@ -845,7 +893,7 @@ transform: translateY(-50%); } .search-bar-container input { - padding: 6px 90px 6px 35px; + padding: 6px 35px 6px 35px; font-size: 14px; border-radius: 20px; } @@ -857,11 +905,6 @@ right: 12px; font-size: 16px; } - #searchButton { - padding: 4px 8px; - font-size: 12px; - right: 35px; - } .avatar-dropdown-container { right: 10px; } @@ -1097,426 +1140,28 @@ .toggle-container label { font-size: 0.9rem; } - } - .chat-container { - box-sizing: border-box; - margin: 0; - padding: 0; - } - body { - font-family: 'Segoe UI', Arial, sans-serif; - background-color: #f4f7fa; - overflow-x: hidden; - line-height: 1.5; - } - .chat-container { - width: 100%; - max-width: 800px; - height: 100vh; - margin: 0 auto; - background-color: #ffffff; - border-radius: 12px; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); - display: flex; - flex-direction: column; - overflow: hidden; - } - .chat-header { - background-color: #0078d4; - color: #ffffff; - padding: 12px; - text-align: center; - font-size: 18px; - font-weight: 600; - flex-shrink: 0; - } - .chat-messages { - flex: 1; - overflow-y: auto; - padding: 15px; - scroll-behavior: smooth; - } - .bot-message, .user-message { - padding: 10px 15px; - margin: 8px 0; - border-radius: 12px; - max-width: 80%; - font-size: 14px; - line-height: 1.4; - } - .bot-message { - background-color: #e8f0fe; - color: #333; - } - .user-message { - background-color: #0078d4; - color: #ffffff; - margin-left: auto; - } - .chat-input { - display: flex; - padding: 10px; - border-top: 1px solid #e0e0e0; - background-color: #f9f9f9; - flex-shrink: 0; - } - .chat-input input { - flex: 1; - padding: 10px; - border: 1px solid #ccc; - border-radius: 8px; - font-size: 14px; - outline: none; - } - .chat-input button { - padding: 10px 20px; - margin-left: 10px; - background-color: #0078d4; - color: #ffffff; - border: none; - border-radius: 8px; - cursor: pointer; - font-size: 14px; - transition: background-color 0.2s; - } - .chat-input button:hover { - background-color: #005ea2; - } - .ingredients-list, .menu-items-list, .customization-ingredients-list { - display: flex; - flex-wrap: nowrap; - overflow-x: auto; - padding: 10px; - margin: 10px 0; - background-color: #f5f7fa; - border-radius: 10px; - gap: 15px; - scroll-behavior: smooth; - } - .ingredient-item, .menu-item { - flex: 0 0 auto; - width: 200px; - background-color: #ffffff; - border: 1px solid #e0e0e0; - border-radius: 10px; - padding: 10px; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); - transition: transform 0.2s; - text-align: center; - } - .ingredient-item:hover, .menu-item:hover { - transform: translateY(-2px); - } - .ingredient-item img, .menu-item img { - width: 100%; - height: 120px; - object-fit: cover; - border-radius: 8px; - margin-bottom: 8px; - } - .ingredient-item div, .menu-item div { - font-size: 14px; - font-weight: 600; - color: #333; - margin-bottom: 5px; - } - .ingredient-item button, .menu-item button { - padding: 8px; - background-color: #28a745; - color: #ffffff; - border: none; - border-radius: 6px; - cursor: pointer; - font-size: 12px; - width: 100%; - } - .ingredient-item button:hover, .menu-item button:hover { - background-color: #218838; - } - .selected-ingredients, .selected-customization-ingredients { - background-color: #f1f8ff; - padding: 15px; - border: 1px solid #b3d7ff; - border-radius: 10px; - margin: 10px 0; - font-size: 14px; - display: flex; - flex-wrap: wrap; - gap: 10px; - } - .selected-ingredients div, .selected-customization-ingredients div { - background-color: #d6e9ff; - padding: 5px 10px; - border-radius: 6px; - font-size: 13px; - } - .customization-input { - margin: 10px 0; - } - .customization-input textarea, .selected-customization-ingredients textarea { - width: 100%; - padding: 8px; - border: 1px solid #b3d7ff; - border-radius: 6px; - font-size: 14px; - outline: none; - margin-bottom: 10px; - } - .customization-input button, .submit-button, .submit-customization-button, .submit-cart-button { - padding: 10px 20px; - background-color: #0078d4; - color: #ffffff; - border: none; - border-radius: 8px; - cursor: pointer; - font-size: 14px; - transition: background-color 0.2s; - } - .customization-input button:hover, .submit-button:hover, .submit-customization-button:hover, .submit-cart-button:hover { - background-color: #005ea2; - } - .option-button { - padding: 10px 20px; - color: #ffffff; - border: none; - border-radius: 8px; - cursor: pointer; - font-size: 14px; - margin: 5px; - transition: background-color 0.2s; - } - .option-button.green { - background-color: #28a745; - } - .option-button.green:hover { - background-color: #218838; - } - .option-button.red { - background-color: #dc3545; - } - .option-button.red:hover { - background-color: #c82333; - } - .cart-items { - background-color: #f1f8ff; - padding: 15px; - border: 1px solid #b3d7ff; - border-radius: 10px; - margin: 10px 0; - font-size: 14px; - } - .cart-item { - display: flex; - align-items: center; - background-color: #d6e9ff; - padding: 5px 10px; - border-radius: 6px; - font-size: 13px; - margin: 5px 0; - } - .cart-item img { - width: 30px; - height: 30px; - object-fit: cover; - border-radius: 6px; - margin-right: 8px; - } - .cart-item .remove-button { - padding: 5px 10px; - margin-left: 8px; - background-color: #dc3545; - color: #ffffff; - border: none; - border-radius: 6px; - cursor: pointer; - font-size: 12px; - } - .cart-item .remove-button:hover { - background-color: #c82333; - } - /* Mic Modal Styling */ - #micModal .modal-dialog { - max-width: 300px; - margin: 1.75rem auto; - } - #micModal .modal-content { - border-radius: 12px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); - background-color: #fff; - text-align: center; - } - #micModal .modal-header { - background: linear-gradient(45deg, #FFA07A, #FFB347); - border-top-left-radius: 12px; - border-top-right-radius: 12px; - padding: 12px 15px; - border-bottom: none; - } - #micModal .modal-title { - font-size: 1.3rem; - font-weight: 600; - color: #fff; - margin: 0 auto; - } - #micModal .modal-body { - padding: 20px; - display: flex; - flex-direction: column; - align-items: center; - gap: 15px; - min-height: 200px; - } - #micModal .modal-body i#mic-icon-animation { - font-size: 2.5rem; - color: #007bff; - animation: pulse 2s infinite; - } - #micModal .modal-body p#mic-status { - font-size: 1.1rem; - color: #333; - margin: 0; - transition: opacity 0.3s ease; - } - #micModal .modal-body #mic-item-image { - max-height: 100px; - width: 100%; - object-fit: cover; - border-radius: 8px; - margin-bottom: 10px; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); - transition: opacity 0.3s ease; - } - #micModal .modal-body #mic-item-name { - font-size: 1.2rem; - font-weight: 600; - color: #333333; - margin-bottom: 10px; - transition: opacity 0.3s ease; - } - #micModal .modal-body #mic-item-details.show { - animation: fadeIn 0.3s ease; - } - #micModal .modal-footer { - padding: 15px; - border-top: none; - justify-content: center; - } - #micModal .modal-footer .btn-secondary { - background-color: #6c757d; - border-color: #6c757d; - padding: 10px 20px; - font-size: 1rem; - border-radius: 8px; - } - #micModal .modal-footer .btn-secondary:hover { - background-color: #5a6268; - border-color: #5a6268; - } - @keyframes pulse { - 0% { transform: scale(1); } - 50% { transform: scale(1.2); } - 100% { transform: scale(1); } - } - @media (max-width: 576px) { - #micModal .modal-dialog { - max-width: 90%; - } - #micModal .modal-body i { - font-size: 2rem; - } - #micModal .modal-body p { - font-size: 1rem; - } - #micModal .modal-body img { - max-height: 80px; - margin-bottom: 8px; - } - #micModal .modal-body h5 { - font-size: 1rem; - margin-bottom: 8px; - } - #micModal .modal-footer .btn-secondary { - padding: 8px 15px; - font-size: 0.9rem; - } - } - /* Responsive Design */ - @media (max-width: 480px) { - .chat-container { - border-radius: 0; - box-shadow: none; - } - .chat-header { - font-size: 16px; - padding: 10px; - } - .chat-messages { - padding: 10px; - } - .bot-message, .user-message { - font-size: 13px; - padding: 8px 12px; - margin: 5px 0; - } - .chat-input input { - font-size: 13px; - padding: 8px; - } - .chat-input button { - font-size: 13px; - padding: 8px 15px; - } - .ingredients-list, .menu-items-list, .customization-ingredients-list { - flex-direction: row; - gap: 10px; - } - .ingredient-item, .menu-item { - flex: 0 0 150px; - } - .ingredient-item img, .menu-item img { - height: 100px; - } - .ingredient-item div, .menu-item div { - font-size: 13px; - } - .ingredient-item button, .menu-item button { - font-size: 11px; - padding: 6px; - } - .option-button { - font-size: 13px; - padding: 8px 15px; - } - .selected-ingredients, .selected-customization-ingredients, .cart-items { - padding: 10px; - gap: 8px; - } - .cart-item { - font-size: 12px; - padding: 4px 8px; - } - .cart-item img { - width: 25px; - height: 25px; - } - } - @media (min-width: 481px) and (max-width: 768px) { - .chat-container { - max-width: 600px; - } - .chat-header { - font-size: 17px; - padding: 11px; - } - .chat-messages { - padding: 12px; - } - .ingredient-item, .menu-item { - flex: 0 0 180px; - } - .ingredient-item img, .menu-item img { - height: 110px; - } + /* Mobile-Specific Microphone Modal Styles */ + #micModal .modal-dialog { + max-width: 90%; + } + #micModal .modal-body i { + font-size: 2rem; + } + #micModal .modal-body p { + font-size: 1rem; + } + #micModal .modal-body #mic-item-image { + max-height: 120px; + margin-bottom: 8px; + } + #micModal .modal-body #mic-item-name { + font-size: 1rem; + margin-bottom: 8px; + } + #micModal .modal-footer .btn-secondary { + padding: 8px 15px; + font-size: 0.9rem; + } } @@ -1535,15 +1180,15 @@