JezK
Edit File: tiffin-menu-admin.css
/* Tiffin Menu Admin Styles */ .tiffin-menu-container { max-width: 1200px; margin: 20px 0; } .week-selector { background: #fff; padding: 20px; border: 1px solid #ddd; border-radius: 5px; margin-bottom: 20px; } .week-selector h2 { margin-top: 0; color: #23282d; } .menu-items-section { background: #fff; padding: 20px; border: 1px solid #ddd; border-radius: 5px; } .menu-items-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin-top: 20px; } .menu-type-section { background: #f9f9f9; padding: 15px; border-radius: 5px; border: 1px solid #e5e5e5; } .menu-type-section h4 { margin-top: 0; margin-bottom: 15px; color: #0073aa; border-bottom: 2px solid #0073aa; padding-bottom: 5px; } .items-list { margin-bottom: 15px; min-height: 60px; } .menu-item { display: flex; justify-content: space-between; align-items: center; background: #fff; padding: 8px 12px; margin-bottom: 5px; border-radius: 3px; border: 1px solid #ddd; } .menu-item:hover { background: #f5f5f5; } .item-name { font-weight: 500; color: #333; } .delete-item { background: #dc3232 !important; border-color: #dc3232 !important; color: #fff !important; padding: 2px 8px !important; font-size: 11px !important; } .delete-item:hover { background: #a00 !important; border-color: #a00 !important; } .add-item-form { display: flex; flex-direction: column; gap: 8px; } .item-name-input, .item-description-input { padding: 8px; border: 1px solid #ddd; border-radius: 3px; font-size: 14px; } .add-item-btn { background: #0073aa !important; border-color: #0073aa !important; color: #fff !important; padding: 8px 12px !important; align-self: flex-start; } .add-item-btn:hover { background: #005a87 !important; border-color: #005a87 !important; } /* Product Assignments Page */ .current-week-info { background: #fff; padding: 20px; border: 1px solid #ddd; border-radius: 5px; margin-bottom: 20px; } .current-week-info h2 { margin-top: 0; color: #0073aa; } .product-assignments-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 20px; } .product-assignment-card { background: #fff; padding: 20px; border: 1px solid #ddd; border-radius: 5px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .product-assignment-card h3 { margin-top: 0; margin-bottom: 20px; color: #23282d; border-bottom: 2px solid #0073aa; padding-bottom: 10px; } .assignments-grid { display: grid; gap: 15px; } .assignment-section { background: #f9f9f9; padding: 15px; border-radius: 5px; border: 1px solid #e5e5e5; } .assignment-section h4 { margin-top: 0; margin-bottom: 10px; color: #555; font-size: 14px; } .assignment-controls { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; } .item-select { flex: 1; min-width: 150px; padding: 6px; border: 1px solid #ddd; border-radius: 3px; } .quantity-input { width: 60px; padding: 6px; border: 1px solid #ddd; border-radius: 3px; text-align: center; } .save-assignment { background: #46b450 !important; border-color: #46b450 !important; color: #fff !important; padding: 6px 12px !important; font-size: 12px !important; } .save-assignment:hover { background: #389b47 !important; border-color: #389b47 !important; } /* Modal Styles */ .tiffin-modal { position: fixed; z-index: 100000; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.4); } .modal-content { background-color: #fefefe; margin: 5% auto; padding: 20px; border: 1px solid #888; border-radius: 5px; width: 90%; max-width: 600px; position: relative; } .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; line-height: 1; position: absolute; top: 15px; right: 20px; cursor: pointer; } .close:hover, .close:focus { color: #000; text-decoration: none; } .modal-content h3 { margin-top: 0; color: #23282d; } .modal-content .form-table { margin-top: 20px; } /* Product Page Menu Display */ .tiffin-menu-display { background: #f8f8f8; padding: 20px; border-radius: 5px; margin: 20px 0; border: 1px solid #ddd; } .tiffin-menu-display h4 { margin-top: 0; margin-bottom: 15px; color: #0073aa; font-size: 18px; } .menu-list { list-style: none; padding: 0; margin: 0; } .menu-list li { padding: 8px 0; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: center; } .menu-list li:last-child { border-bottom: none; } .menu-list li strong { color: #333; font-weight: 600; } .menu-list li .description { color: #666; font-style: italic; font-size: 14px; } .menu-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; } .menu-item-card { background: #fff; padding: 15px; border-radius: 5px; border: 1px solid #ddd; text-align: center; } .menu-item-card h5 { margin: 0 0 5px 0; color: #333; } .menu-item-card .quantity { background: #0073aa; color: #fff; padding: 2px 8px; border-radius: 12px; font-size: 12px; font-weight: bold; } .menu-item-card .description { margin-top: 10px; color: #666; font-size: 13px; } .menu-inline { font-size: 16px; color: #333; line-height: 1.6; } /* Responsive Design */ @media (max-width: 782px) { .menu-items-grid { grid-template-columns: 1fr; } .product-assignments-container { grid-template-columns: 1fr; } .assignment-controls { flex-direction: column; align-items: stretch; } .assignment-controls .item-select, .assignment-controls .quantity-input, .assignment-controls .save-assignment { width: 100%; margin-bottom: 5px; } .menu-grid { grid-template-columns: 1fr; } .modal-content { margin: 10% auto; width: 95%; padding: 15px; } } /* Success/Error Messages */ .tiffin-notice { padding: 10px 15px; margin: 10px 0; border-radius: 3px; font-weight: 500; } .tiffin-notice.success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; } .tiffin-notice.error { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; } /* Loading States */ .loading { opacity: 0.6; pointer-events: none; } .button.loading::after { content: ""; display: inline-block; width: 12px; height: 12px; margin-left: 5px; border: 2px solid transparent; border-top: 2px solid currentColor; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Hover Effects */ .menu-type-section:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.1); transition: box-shadow 0.3s ease; } .product-assignment-card:hover { box-shadow: 0 3px 12px rgba(0,0,0,0.1); transition: box-shadow 0.3s ease; } /* Utility Classes */ .text-center { text-align: center; } .mb-20 { margin-bottom: 20px; } .mt-20 { margin-top: 20px; } .hidden { display: none; } .flex { display: flex; } .flex-between { justify-content: space-between; } .flex-center { align-items: center; } /* Daily Menu Structure */ .daily-menu-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 25px; margin-top: 20px; } .daily-menu-section { background: #fff; padding: 20px; border-radius: 8px; border: 2px solid #e5e5e5; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .day-header { margin-top: 0; margin-bottom: 20px; color: #2271b1; font-size: 18px; font-weight: 600; border-bottom: 3px solid #2271b1; padding-bottom: 8px; text-transform: uppercase; letter-spacing: 1px; } .day-items-grid { display: grid; gap: 15px; } .menu-type-section { background: #f9f9f9; padding: 15px; border-radius: 5px; border: 1px solid #e5e5e5; } .menu-type-section h4 { margin-top: 0; margin-bottom: 15px; color: #0073aa; border-bottom: 2px solid #0073aa; padding-bottom: 5px; font-size: 14px; } /* Product Assignments Daily Structure */ .assignments-daily-grid { display: grid; gap: 25px; } .daily-assignment-section { background: #f8f9fa; padding: 20px; border-radius: 8px; border: 2px solid #dee2e6; } .day-assignment-header { margin-top: 0; margin-bottom: 15px; color: #2271b1; font-size: 16px; font-weight: 600; border-bottom: 2px solid #2271b1; padding-bottom: 5px; text-transform: capitalize; } .day-assignment-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px; } .assignment-section { background: #ffffff; padding: 15px; border-radius: 5px; border: 1px solid #e5e5e5; } .assignment-section h5 { margin-top: 0; margin-bottom: 10px; color: #555; font-size: 13px; font-weight: 600; text-transform: uppercase; } /* Product Page Menu Display - Daily Structure */ .menu-daily-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; } .daily-menu-card { background: #fff; padding: 20px; border-radius: 8px; border: 2px solid #ddd; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .day-title { margin: 0 0 15px 0; color: #2271b1; font-size: 16px; font-weight: 600; text-align: center; border-bottom: 2px solid #2271b1; padding-bottom: 8px; text-transform: uppercase; } .day-items { display: flex; flex-direction: column; gap: 10px; } .menu-daily-list { display: grid; gap: 20px; } .daily-menu-section { background: #f8f9fa; padding: 20px; border-radius: 8px; border-left: 4px solid #2271b1; } .day-header { margin-top: 0; margin-bottom: 15px; color: #2271b1; font-size: 16px; font-weight: 600; text-transform: uppercase; } .day-menu-list { list-style: none; padding: 0; margin: 0; } .day-menu-list li { padding: 8px 0; border-bottom: 1px solid #dee2e6; display: flex; justify-content: space-between; align-items: center; } .day-menu-list li:last-child { border-bottom: none; } .item-description { font-size: 12px; color: #666; font-style: italic; display: block; margin-top: 5px; } /* Enhanced Menu Item Cards */ .menu-item { display: flex; justify-content: space-between; align-items: flex-start; background: #fff; padding: 12px; margin-bottom: 8px; border-radius: 5px; border: 1px solid #ddd; box-shadow: 0 1px 3px rgba(0,0,0,0.05); } .menu-item:hover { background: #f5f5f5; box-shadow: 0 2px 6px rgba(0,0,0,0.1); transition: all 0.3s ease; } .menu-item .item-name { font-weight: 600; color: #333; flex: 1; } .menu-item .item-description { font-size: 11px; color: #777; margin-top: 3px; } /* Inline Menu Display */ .menu-inline { font-size: 16px; color: #333; line-height: 1.8; background: #f8f9fa; padding: 15px; border-radius: 8px; border-left: 4px solid #2271b1; } /* Responsive Design for Daily Structure */ @media (max-width: 782px) { .daily-menu-grid { grid-template-columns: 1fr; } .daily-assignment-section { padding: 15px; } .day-assignment-grid { grid-template-columns: 1fr; } .day-items-grid { gap: 10px; } .menu-daily-grid { grid-template-columns: 1fr; } .daily-menu-card { padding: 15px; } .assignment-controls { flex-direction: column; align-items: stretch; } .assignment-controls .item-select, .assignment-controls .quantity-input, .assignment-controls .save-assignment { width: 100%; margin-bottom: 8px; } } /* Day Color Coding */ .daily-menu-section[data-day="monday"] .day-header, .daily-assignment-section[data-day="monday"] .day-assignment-header { color: #e74c3c; border-color: #e74c3c; } .daily-menu-section[data-day="tuesday"] .day-header, .daily-assignment-section[data-day="tuesday"] .day-assignment-header { color: #f39c12; border-color: #f39c12; } .daily-menu-section[data-day="wednesday"] .day-header, .daily-assignment-section[data-day="wednesday"] .day-assignment-header { color: #27ae60; border-color: #27ae60; } .daily-menu-section[data-day="thursday"] .day-header, .daily-assignment-section[data-day="thursday"] .day-assignment-header { color: #3498db; border-color: #3498db; } .daily-menu-section[data-day="friday"] .day-header, .daily-assignment-section[data-day="friday"] .day-assignment-header { color: #9b59b6; border-color: #9b59b6; } .daily-menu-section[data-day="saturday"] .day-header, .daily-assignment-section[data-day="saturday"] .day-assignment-header { color: #1abc9c; border-color: #1abc9c; } .daily-menu-section[data-day="sunday"] .day-header, .daily-assignment-section[data-day="sunday"] .day-assignment-header { color: #34495e; border-color: #34495e; } /* Product Configuration Styles */ .configuration-description { background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 5px; padding: 20px; margin-bottom: 25px; } .configuration-description p { margin: 0 0 10px 0; color: #495057; } .configuration-description p:last-child { margin-bottom: 0; } .product-configuration-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(500px, 1fr)); gap: 25px; } .product-configuration-card { background: #fff; padding: 25px; border-radius: 10px; border: 2px solid #e9ecef; box-shadow: 0 4px 6px rgba(0,0,0,0.1); } .product-configuration-card h3 { margin-top: 0; margin-bottom: 20px; color: #2c3e50; font-size: 20px; border-bottom: 3px solid #3498db; padding-bottom: 10px; } .configuration-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; margin-bottom: 25px; } .config-section { background: #f8f9fa; padding: 20px; border-radius: 8px; border: 1px solid #dee2e6; transition: all 0.3s ease; } .config-section:hover { border-color: #3498db; box-shadow: 0 2px 8px rgba(52,152,219,0.2); } .config-section h4 { margin-top: 0; margin-bottom: 15px; color: #2c3e50; font-size: 16px; font-weight: 600; text-align: center; padding-bottom: 8px; border-bottom: 2px solid #ecf0f1; } .config-controls { display: flex; flex-direction: column; gap: 12px; } .config-controls label { display: flex; align-items: center; gap: 8px; font-weight: 500; color: #495057; } .config-active { width: 18px !important; height: 18px !important; } .quantity-control { display: flex; align-items: center; gap: 10px; } .quantity-control label { min-width: 70px; margin: 0; font-size: 13px; } .config-quantity { width: 80px !important; padding: 8px !important; border: 2px solid #dee2e6 !important; border-radius: 4px !important; text-align: center; font-weight: 600; } .config-quantity:focus { border-color: #3498db !important; box-shadow: 0 0 0 3px rgba(52,152,219,0.1) !important; } .config-quantity:disabled { background-color: #f8f9fa !important; color: #6c757d !important; border-color: #e9ecef !important; } .save-config { background: #27ae60 !important; border-color: #27ae60 !important; color: #fff !important; padding: 10px 20px !important; border-radius: 5px !important; font-weight: 600 !important; transition: all 0.3s ease !important; } .save-config:hover { background: #219a52 !important; border-color: #219a52 !important; transform: translateY(-1px); } .config-preview { text-align: center; margin-top: 10px; } .preview-text { color: #27ae60; font-weight: 600; font-style: italic; background: #d5eddb; padding: 4px 8px; border-radius: 4px; display: inline-block; } .product-summary { background: #f1f3f4; padding: 20px; border-radius: 8px; border-left: 4px solid #3498db; } .product-summary h4 { margin-top: 0; margin-bottom: 15px; color: #2c3e50; font-size: 16px; } .summary-content { color: #495057; } .summary-list { list-style: none; padding: 0; margin: 0; } .summary-list li { background: #fff; padding: 8px 15px; margin-bottom: 5px; border-radius: 4px; border-left: 3px solid #3498db; font-weight: 500; } .summary-list li:last-child { margin-bottom: 0; } /* Enhanced checkbox styling */ .config-controls input[type="checkbox"] { appearance: none; width: 18px; height: 18px; border: 2px solid #dee2e6; border-radius: 3px; background: #fff; cursor: pointer; position: relative; transition: all 0.3s ease; } .config-controls input[type="checkbox"]:checked { background: #3498db; border-color: #3498db; } .config-controls input[type="checkbox"]:checked::before { content: "✓"; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 12px; font-weight: bold; } .config-controls input[type="checkbox"]:hover { border-color: #3498db; box-shadow: 0 0 0 3px rgba(52,152,219,0.1); } /* Responsive design for configuration */ @media (max-width: 782px) { .product-configuration-container { grid-template-columns: 1fr; } .configuration-grid { grid-template-columns: 1fr; } .config-section { padding: 15px; } .product-configuration-card { padding: 20px; } .quantity-control { flex-direction: column; align-items: flex-start; gap: 5px; } .quantity-control label { min-width: auto; } } /* Loading states for configuration */ .save-config.loading { opacity: 0.7; pointer-events: none; } .save-config.loading::after { content: ""; display: inline-block; width: 12px; height: 12px; margin-left: 8px; border: 2px solid transparent; border-top: 2px solid currentColor; border-radius: 50%; animation: spin 1s linear infinite; } /* Success state for save button */ .save-config.saved { background: #27ae60 !important; border-color: #27ae60 !important; }