/* Global Styles */ :root { --primary-color: #c9a96e; --secondary-color: #8b6f47; --accent-color: #e8d5b7; --text-color: #333; --light-text: #666; --background-color: #f9f5f0; --white: #ffffff; --success-color: #28a745; --warning-color: #ffc107; --danger-color: #dc3545; --info-color: #17a2b8; --border-radius: 8px; --box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Kanit', sans-serif; color: var(--text-color); background-color: var(--background-color); line-height: 1.6; } .container { max-width: 1200px; margin: 0 auto; padding: 0 20px; } a { text-decoration: none; color: var(--text-color); transition: var(--transition); } a:hover { color: var(--primary-color); } ul { list-style: none; } img { max-width: 100%; height: auto; } /* Buttons */ .btn { display: inline-block; padding: 10px 20px; border-radius: var(--border-radius); font-weight: 500; text-align: center; cursor: pointer; transition: var(--transition); border: none; font-family: 'Kanit', sans-serif; } .btn-primary { background-color: var(--primary-color); color: var(--white); } .btn-primary:hover { background-color: var(--secondary-color); } .btn-outline { background-color: transparent; color: var(--primary-color); border: 1px solid var(--primary-color); } .btn-outline:hover { background-color: var(--primary-color); color: var(--white); } .btn-small { padding: 5px 10px; font-size: 0.9rem; } /* Header */ .header { background-color: var(--white); box-shadow: var(--box-shadow); position: sticky; top: 0; z-index: 100; } .header-content { display: flex; justify-content: space-between; align-items: center; padding: 15px 0; } .logo { display: flex; align-items: center; font-size: 1.5rem; font-weight: 700; color: var(--primary-color); } .logo i { margin-right: 10px; font-size: 1.8rem; } .main-nav ul { display: flex; } .main-nav li { margin-right: 30px; } .main-nav a { font-weight: 500; position: relative; } .main-nav a.active, .main-nav a:hover { color: var(--primary-color); } .main-nav a.active::after { content: ''; position: absolute; bottom: -5px; left: 0; width: 100%; height: 2px; background-color: var(--primary-color); } .header-actions { display: flex; align-items: center; gap: 10px; } .search-box { display: flex; margin-right: 20px; } .search-box input { padding: 8px 15px; border: 1px solid #ddd; border-radius: var(--border-radius) 0 0 var(--border-radius); outline: none; } .search-box button { background-color: var(--primary-color); color: var(--white); border: none; padding: 8px 15px; border-radius: 0 var(--border-radius) var(--border-radius) 0; cursor: pointer; } .cart-icon { position: relative; margin-left: 20px; cursor: pointer; } .cart-icon i { font-size: 1.5rem; color: var(--primary-color); } .cart-count { position: absolute; top: -8px; right: -8px; background-color: var(--danger-color); color: var(--white); font-size: 0.7rem; width: 20px; height: 20px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .mobile-menu-toggle { display: none; font-size: 1.5rem; cursor: pointer; } /* Hero Section */ .hero { background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('../images/hero-banner.webp'); background-size: cover; background-position: center; color: var(--white); padding: 100px 0; text-align: center; } .hero-content h1 { font-size: 3rem; margin-bottom: 20px; font-family: 'Mitr', sans-serif; } .hero-content p { font-size: 1.2rem; margin-bottom: 30px; } /* Section Styles */ .section-title { text-align: center; font-size: 2rem; margin-bottom: 40px; color: var(--secondary-color); font-family: 'Mitr', sans-serif; } /* Categories */ .categories { padding: 60px 0; } .category-list { display: flex; justify-content: center; flex-wrap: wrap; gap: 20px; } .category-item { display: flex; flex-direction: column; align-items: center; padding: 20px; background-color: var(--white); border-radius: var(--border-radius); box-shadow: var(--box-shadow); cursor: pointer; transition: var(--transition); min-width: 120px; } .category-item:hover, .category-item.active { background-color: var(--primary-color); color: var(--white); } .category-item i { font-size: 2rem; margin-bottom: 10px; } /* Products */ .products { padding: 60px 0; } .product-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 30px; } .product-grid > p { text-align: center; grid-column: 1 / -1; color: var(--light-text); } .product-card { background-color: var(--white); border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; transition: var(--transition); } .product-card:hover { transform: translateY(-5px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); } .product-image { height: 200px; overflow: hidden; } .product-image img { width: 100%; height: 100%; object-fit: cover; transition: var(--transition); } .product-card:hover .product-image img { transform: scale(1.05); } .product-info { padding: 20px; } .product-category { font-size: 0.9rem; color: var(--light-text); margin-bottom: 5px; } .product-name { font-size: 1.2rem; font-weight: 600; margin-bottom: 10px; } .product-price { font-size: 1.1rem; font-weight: 700; color: var(--primary-color); margin-bottom: 15px; } .product-description { font-size: 0.9rem; color: var(--light-text); margin-bottom: 15px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .product-actions { display: flex; justify-content: space-between; } .quantity-control { display: flex; align-items: center; } .quantity-control button { width: 30px; height: 30px; border: 1px solid var(--primary-color); background-color: transparent; color: var(--primary-color); border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; } .quantity-control input { width: 40px; text-align: center; border: none; font-weight: 500; } .add-to-cart { background-color: var(--primary-color); color: var(--white); border: none; padding: 8px 15px; border-radius: var(--border-radius); cursor: pointer; font-weight: 500; transition: var(--transition); } .add-to-cart:hover { background-color: var(--secondary-color); } /* Best Sellers */ .best-sellers { padding: 60px 0; background-color: var(--accent-color); } .best-seller-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 20px; } .best-seller-card { background-color: var(--white); border-radius: var(--border-radius); padding: 15px; text-align: center; box-shadow: var(--box-shadow); } .best-seller-image { height: 150px; margin-bottom: 15px; overflow: hidden; border-radius: var(--border-radius); } .best-seller-image img { width: 100%; height: 100%; object-fit: cover; } .best-seller-name { font-weight: 600; margin-bottom: 5px; } .best-seller-price { color: var(--primary-color); font-weight: 700; } /* About Section */ .about { padding: 60px 0; } .about-content { display: flex; gap: 50px; align-items: center; } .about-text { flex: 1; } .about-text h2 { font-size: 2rem; margin-bottom: 20px; color: var(--secondary-color); font-family: 'Mitr', sans-serif; } .about-text p { margin-bottom: 20px; color: var(--light-text); } .about-features { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 30px; } .feature { display: flex; align-items: center; gap: 10px; } .feature i { font-size: 1.5rem; color: var(--primary-color); } .about-image { flex: 1; border-radius: var(--border-radius); box-shadow: var(--box-shadow); background-image: url('../images/about.webp'); background-size: cover; background-position: center; height: 290px; } /* Contact Section */ .contact { padding: 60px 0; background-color: var(--accent-color); } .contact-content { display: flex; gap: 50px; } .contact-info { flex: 1; } .contact-item { display: flex; gap: 20px; margin-bottom: 30px; } .contact-item i { font-size: 1.5rem; color: var(--primary-color); margin-top: 5px; } .contact-form { flex: 1; background-color: var(--white); padding: 30px; border-radius: var(--border-radius); box-shadow: var(--box-shadow); } .contact-form h3 { margin-bottom: 20px; color: var(--secondary-color); } .form-group { margin-bottom: 20px; } .form-group input, .form-group textarea { width: 100%; padding: 12px 15px; border: 1px solid #ddd; border-radius: var(--border-radius); font-family: 'Kanit', sans-serif; outline: none; } .form-group input:focus, .form-group textarea:focus { border-color: var(--primary-color); } .form-row { display: flex; gap: 20px; } .form-row .form-group { flex: 1; } /* Footer */ .footer { background-color: var(--secondary-color); color: var(--white); padding: 40px 0 20px; } .footer-content { display: flex; justify-content: space-between; margin-bottom: 30px; } .footer-logo { display: flex; align-items: center; font-size: 1.5rem; font-weight: 700; } .footer-logo i { margin-right: 10px; } .footer-links ul { display: flex; gap: 20px; } .footer a { color: var(--white); } .footer-social { display: flex; gap: 15px; } .footer-social a { font-size: 1.2rem; } .footer-bottom { text-align: center; padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, 0.2); } /* Modal */ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 1000; overflow-y: auto; } .modal-content { background-color: var(--white); margin: 50px auto; padding: 0; border-radius: var(--border-radius); width: 90%; max-width: 600px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); animation: modalFadeIn 0.3s; } @keyframes modalFadeIn { from { opacity: 0; transform: translateY(-50px); } to { opacity: 1; transform: translateY(0); } } .modal-header { display: flex; justify-content: space-between; align-items: center; padding: 20px; border-bottom: 1px solid #eee; } .modal-header h2 { color: var(--secondary-color); } .close-modal { font-size: 1.5rem; cursor: pointer; color: var(--light-text); } .modal-body { padding: 20px; } .modal-footer { display: flex; justify-content: flex-end; gap: 10px; padding: 20px; border-top: 1px solid #eee; } /* Cart Modal */ .cart-items { max-height: 360px; overflow-y: auto; margin-bottom: 20px; padding-right: 4px; /* space for scrollbar */ display: flex; flex-direction: column; gap: 10px; } .cart-items p { color: var(--light-text); padding: 12px; text-align: center; } .cart-item { display: flex; gap: 12px; padding: 12px; border-radius: calc(var(--border-radius) - 2px); align-items: center; background-color: var(--white); border: 1px solid #f3f2f1; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.03); } .cart-item-image { width: 72px; height: 72px; border-radius: 8px; overflow: hidden; flex-shrink: 0; } .cart-item-image img { width: 100%; height: 100%; object-fit: cover; display: block; } .cart-item-info { flex: 1; min-width: 0; /* allow ellipsis */ display: flex; flex-direction: column; } .cart-item-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; } .cart-item-name { font-weight: 700; margin-bottom: 0; font-size: 1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .cart-item-price { color: var(--primary-color); font-weight: 700; white-space: nowrap; } .cart-item-bottom { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; gap: 10px; } .cart-item-quantity { display: flex; align-items: center; gap: 8px; background: var(--background-color); padding: 4px 8px; border-radius: 20px; } .cart-item-quantity button { width: 30px; height: 30px; border: none; background: transparent; color: var(--primary-color); cursor: pointer; display: flex; align-items: center; justify-content: center; border-radius: 50%; } .cart-item-quantity input { width: 42px; text-align: center; border: none; background: transparent; font-weight: 600; } .cart-item-remove { color: var(--danger-color); cursor: pointer; font-size: 1.05rem; } .cart-summary { padding: 15px 0; } .summary-row { display: flex; justify-content: space-between; margin-bottom: 10px; } .summary-row.total { font-weight: 700; font-size: 1.1rem; padding-top: 10px; border-top: 1px solid #eee; } /* Checkout Modal */ .form-section { margin-bottom: 30px; } .form-section h3 { margin-bottom: 15px; color: var(--secondary-color); } .radio-group { display: flex; flex-direction: column; gap: 10px; } .radio-item { display: flex; align-items: center; gap: 10px; cursor: pointer; } .payment-details { margin-top: 20px; padding: 20px; background-color: var(--background-color); border-radius: var(--border-radius); text-align: center; } .qr-code img { margin-bottom: 10px; } .bank-info p { margin-bottom: 5px; } /* Order Confirmation Modal */ .confirmation-message { text-align: center; margin-bottom: 30px; } .confirmation-message i { font-size: 3rem; color: var(--success-color); margin-bottom: 15px; } .confirmation-message h3 { margin-bottom: 10px; color: var(--secondary-color); } .order-summary { margin-bottom: 30px; } .order-summary h4, .order-details h4 { margin-bottom: 15px; color: var(--secondary-color); } .order-summary-item { display: flex; justify-content: space-between; margin-bottom: 10px; } .order-details p { margin-bottom: 5px; } /* Toast Notification */ .toast { position: fixed; bottom: 20px; right: 20px; background-color: var(--success-color); color: var(--white); padding: 15px 20px; border-radius: var(--border-radius); box-shadow: var(--box-shadow); display: none; z-index: 1001; animation: toastSlideIn 0.3s; } @keyframes toastSlideIn { from { transform: translateX(100%); } to { transform: translateX(0); } } .toast-content { display: flex; align-items: center; gap: 10px; } /* POS System Styles */ .pos-body { background-color: var(--white); } .pos-header { background-color: var(--secondary-color); color: var(--white); padding: 0 20px; } .pos-main { padding: 20px 0; } .pos-container { display: flex; gap: 20px; min-height: calc(100vh - 120px); padding: 0 20px; } .pos-products { flex: 2; display: flex; flex-direction: column; } .pos-search { display: flex; margin-bottom: 20px; } .pos-search input { flex: 1; padding: 10px 15px; border: 1px solid #ddd; border-radius: var(--border-radius) 0 0 var(--border-radius); outline: none; } .pos-search button { background-color: var(--primary-color); color: var(--white); border: none; padding: 10px 15px; border-radius: 0 var(--border-radius) var(--border-radius) 0; cursor: pointer; } .pos-categories { display: flex; gap: 10px; margin-bottom: 20px; flex-wrap: wrap; } .pos-category { padding: 8px 15px; background-color: var(--accent-color); border-radius: var(--border-radius); cursor: pointer; transition: var(--transition); } .pos-category:hover, .pos-category.active { background-color: var(--primary-color); color: var(--white); } .pos-product-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 15px; overflow-y: auto; } .pos-product-card { background-color: var(--white); border: 1px solid #ddd; border-radius: var(--border-radius); padding: 15px; text-align: center; cursor: pointer; transition: var(--transition); } .pos-product-card:hover { border-color: var(--primary-color); box-shadow: var(--box-shadow); } .pos-product-image { height: 100px; margin-bottom: 10px; overflow: hidden; border-radius: var(--border-radius); } .pos-product-image img { width: 100%; height: 100%; object-fit: cover; } .pos-product-name { font-weight: 600; margin-bottom: 5px; font-size: 0.9rem; } .pos-product-price { color: var(--primary-color); font-weight: 700; } .pos-cart { flex: 1; display: flex; flex-direction: column; background-color: var(--background-color); border-radius: var(--border-radius); padding: 20px; } .pos-cart-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .pos-cart-items { flex: 1; overflow-y: auto; margin-bottom: 20px; } .pos-cart-item { display: flex; gap: 12px; padding: 12px; background-color: var(--white); border-radius: 8px; margin-bottom: 10px; align-items: center; border: 1px solid #f3f2f1; } .pos-cart-item-image { width: 60px; height: 60px; border-radius: 6px; overflow: hidden; flex-shrink: 0; } .pos-cart-item-image img { width: 100%; height: 100%; object-fit: cover; } .pos-cart-item-info { flex: 1; min-width: 0; } .pos-cart-item-top { display: flex; justify-content: space-between; align-items: center; } .pos-cart-item-name { font-weight: 700; margin-bottom: 0; font-size: 0.95rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .pos-cart-item-price { color: var(--primary-color); font-weight: 700; } .pos-cart-item-bottom { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; gap: 8px; } .pos-cart-item-quantity { display: flex; align-items: center; gap: 8px; padding: 4px 8px; border-radius: 20px; background: var(--background-color); } .pos-cart-item-quantity button { width: 28px; height: 28px; border: none; background: transparent; color: var(--primary-color); border-radius: 50%; cursor: pointer; } .pos-cart-item-quantity input { width: 44px; text-align: center; border: none; background: transparent; font-weight: 600; } .pos-cart-item-remove { color: var(--danger-color); cursor: pointer; margin-left: 8px; } .pos-cart-summary { padding: 15px 0; border-top: 1px solid #ddd; margin-bottom: 20px; } .pos-payment { border-top: 1px solid #ddd; padding-top: 20px; } .payment-methods { display: flex; gap: 10px; margin-bottom: 20px; } .payment-method { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 15px; background-color: var(--white); border: 1px solid #ddd; border-radius: var(--border-radius); cursor: pointer; transition: var(--transition); } .payment-method:hover, .payment-method.active { border-color: var(--primary-color); background-color: var(--accent-color); } .payment-method i { font-size: 1.5rem; margin-bottom: 5px; } .payment-details { margin-bottom: 20px; } .payment-details label { display: block; margin-bottom: 5px; font-weight: 500; } .payment-details input { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: var(--border-radius); outline: none; } /* Delivery Methods */ .pos-delivery { padding: 15px 0; border-top: 1px solid #ddd; margin-bottom: 20px; } .pos-delivery label { display: block; margin-bottom: 10px; font-weight: 500; } .delivery-methods { display: flex; gap: 10px; } .delivery-method { flex: 1; padding: 12px; background-color: var(--white); border: 1px solid #ddd; border-radius: var(--border-radius); cursor: pointer; transition: var(--transition); text-align: center; font-weight: 500; } .delivery-method:hover, .delivery-method.active { border-color: var(--primary-color); background-color: var(--accent-color); } /* Customer Details */ .customer-details { padding: 15px 0; border-top: 1px solid #ddd; margin-bottom: 20px; } .customer-details .form-group { margin-bottom: 15px; } .customer-details label { display: block; margin-bottom: 5px; font-weight: 500; } .customer-details input, .customer-details textarea { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: var(--border-radius); outline: none; } .customer-details textarea { resize: vertical; min-height: 60px; } /* Receipt Modal */ .receipt-modal { max-width: 400px; } .receipt { padding: 20px; background-color: var(--white); font-family: 'Mitr', sans-serif; } .receipt-header { text-align: center; margin-bottom: 20px; } .receipt-header h2 { margin-bottom: 5px; color: var(--secondary-color); } .receipt-info { margin-bottom: 20px; } .receipt-info p { margin-bottom: 5px; font-size: 0.9rem; } .receipt-items { margin-bottom: 20px; } .receipt-item { display: flex; justify-content: space-between; margin-bottom: 10px; font-size: 0.9rem; } .receipt-summary { padding-top: 10px; border-top: 1px solid #ddd; } .receipt-summary-row { display: flex; justify-content: space-between; margin-bottom: 5px; } .receipt-summary-row.total { font-weight: 700; font-size: 1.1rem; } .receipt-footer { text-align: center; margin-top: 20px; font-size: 0.9rem; } /* Orders Management Styles */ .orders-main { padding: 20px 0; } .orders-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; } .orders-header h1 { color: var(--secondary-color); } .orders-controls { display: flex; align-items: center; gap: 20px; } .filter-tabs { display: flex; gap: 10px; } .filter-tab { padding: 8px 15px; background-color: var(--white); border: 1px solid #ddd; border-radius: var(--border-radius); cursor: pointer; transition: var(--transition); } .filter-tab:hover, .filter-tab.active { background-color: var(--primary-color); color: var(--white); border-color: var(--primary-color); } .refresh-btn { display: flex; align-items: center; gap: 5px; padding: 8px 15px; background-color: var(--white); border: 1px solid #ddd; border-radius: var(--border-radius); cursor: pointer; transition: var(--transition); } .refresh-btn:hover { background-color: var(--accent-color); } .orders-container { background-color: var(--white); border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; } .orders-list { display: flex; flex-direction: column; } .order-card { display: flex; justify-content: space-between; align-items: center; padding: 20px; gap: 10px; border-bottom: 1px solid #eee; } .order-card:last-child { border-bottom: none; } .order-info { flex: 1; } .order-number { font-weight: 600; margin-bottom: 5px; } .order-customer { color: var(--light-text); margin-bottom: 5px; } .order-date { color: var(--light-text); font-size: 0.9rem; } .order-total { font-weight: 700; color: var(--primary-color); margin: 0 20px; } .order-status { padding: 5px 10px; border-radius: var(--border-radius); font-size: 0.9rem; font-weight: 500; display: flex; flex-direction: column; align-items: center; } .status-pending { background-color: #fff3cd; color: #856404; } .status-preparing { background-color: #cce5ff; color: #004085; } .status-ready { background-color: #d4edda; color: #155724; } .status-completed { background-color: #e2e3e5; color: #383d41; } .status-canceled { background-color: #f8d7da; color: #721c24; } .order-actions { display: flex; gap: 10px; } .order-actions button { padding: 5px 10px; border: none; border-radius: var(--border-radius); cursor: pointer; transition: var(--transition); } .view-order-btn { background-color: var(--info-color); color: var(--white); } .view-order-btn:hover { background-color: #138496; } .update-status-btn { background-color: var(--warning-color); color: var(--white); } .update-status-btn:hover { background-color: #e0a800; } /* Order Details Modal */ .order-details-content { display: flex; flex-direction: column; gap: 20px; } .order-details-header { display: flex; justify-content: space-between; padding-bottom: 15px; border-bottom: 1px solid #eee; } .order-details-info { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; } .order-details-info-item { display: flex; flex-direction: column; } .order-details-info-item span:first-child { font-weight: 600; margin-bottom: 5px; } .order-details-items { margin-top: 15px; } .order-details-item { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid #eee; } .order-details-item:last-child { border-bottom: none; } .order-details-item-info { flex: 1; } .order-details-item-name { font-weight: 600; margin-bottom: 5px; } .order-details-item-price { color: var(--light-text); } .order-details-item-quantity { margin-right: 20px; } .order-details-item-total { font-weight: 600; color: var(--primary-color); } .order-details-summary { padding: 15px 0; border-top: 1px solid #eee; } .order-details-summary-row { display: flex; justify-content: space-between; margin-bottom: 10px; } .order-details-summary-row.total { font-weight: 700; font-size: 1.1rem; } /* Update Status Modal */ .status-options { display: flex; flex-direction: column; gap: 10px; } .status-option { display: flex; align-items: center; gap: 10px; padding: 15px; background-color: var(--background-color); border-radius: var(--border-radius); cursor: pointer; transition: var(--transition); } .status-option:hover, .status-option.selected { background-color: var(--accent-color); } .status-option i { font-size: 1.2rem; } /* Admin Panel Styles */ .admin-header { padding: 0 20px; } .admin-main { display: flex; min-height: calc(100vh - 80px); } .admin-container { display: flex; flex: 1; } .admin-sidebar { width: 250px; background-color: var(--secondary-color); color: var(--white); padding: 20px 0; } .sidebar-menu { display: flex; flex-direction: column; } .menu-item { display: flex; align-items: center; gap: 10px; padding: 15px 20px; cursor: pointer; transition: var(--transition); } .menu-item:hover, .menu-item.active { background-color: var(--primary-color); } .menu-item i { font-size: 1.2rem; } .admin-content { flex: 1; padding: 30px; overflow-y: auto; } .admin-page { display: none; } .admin-page.active { display: block; } .page-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; } .page-header h1 { color: var(--secondary-color); } .dashboard-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-bottom: 30px; } .stat-card { display: flex; align-items: center; gap: 20px; padding: 20px; background-color: var(--white); border-radius: var(--border-radius); box-shadow: var(--box-shadow); } .stat-icon { width: 60px; height: 60px; border-radius: 50%; background-color: var(--accent-color); display: flex; align-items: center; justify-content: center; } .stat-icon i { font-size: 1.5rem; color: var(--primary-color); } .stat-info h3 { font-size: 1.8rem; margin-bottom: 5px; color: var(--secondary-color); } .stat-info p { color: var(--light-text); } .dashboard-charts { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 30px; } .chart-container { background-color: var(--white); padding: 20px; border-radius: var(--border-radius); box-shadow: var(--box-shadow); } .chart-container h3 { margin-bottom: 20px; color: var(--secondary-color); } .dashboard-recent-orders { background-color: var(--white); padding: 20px; border-radius: var(--border-radius); box-shadow: var(--box-shadow); } .dashboard-recent-orders h3 { margin-bottom: 20px; color: var(--secondary-color); } .recent-orders-table { overflow-x: auto; } .recent-orders-table table { width: 100%; border-collapse: collapse; } .recent-orders-table th, .recent-orders-table td { padding: 10px; text-align: left; border-bottom: 1px solid #eee; } .recent-orders-table th { font-weight: 600; color: var(--secondary-color); } .products-table, .orders-table { background-color: var(--white); border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; } .products-table table, .orders-table table { width: 100%; border-collapse: collapse; } .products-table th, .products-table td, .orders-table th, .orders-table td { padding: 15px; text-align: left; border-bottom: 1px solid #eee; } .products-table th, .orders-table th { font-weight: 600; color: var(--secondary-color); background-color: var(--background-color); } .product-image-cell, .order-image-cell { width: 60px; height: 60px; border-radius: var(--border-radius); overflow: hidden; } .product-image-cell img, .order-image-cell img { width: 100%; height: 100%; object-fit: cover; } .product-actions, .order-actions { display: flex; gap: 10px; } .edit-btn, .delete-btn { padding: 5px 10px; border: none; border-radius: var(--border-radius); cursor: pointer; transition: var(--transition); } .edit-btn { background-color: var(--info-color); color: var(--white); } .edit-btn:hover { background-color: #138496; } .delete-btn { background-color: var(--danger-color); color: var(--white); } .delete-btn:hover { background-color: #c82333; } .settings-form { background-color: var(--white); padding: 30px; border-radius: var(--border-radius); box-shadow: var(--box-shadow); } .form-section { margin-bottom: 30px; } .form-section h3 { margin-bottom: 20px; color: var(--secondary-color); } .form-group label { display: block; margin-bottom: 5px; font-weight: 500; } .form-group input, .form-group select, .form-group textarea { width: 100%; padding: 10px 15px; border: 1px solid #ddd; border-radius: var(--border-radius); font-family: 'Kanit', sans-serif; outline: none; } .form-group input:focus, .form-group select:focus, .form-group textarea:focus { border-color: var(--primary-color); } .form-hint { display: block; margin-top: 6px; font-size: 0.85rem; color: #6c757d; } .icon-input { display: flex; align-items: center; gap: 10px; } .icon-input input { flex: 1; } .icon-preview { width: 44px; height: 44px; border-radius: var(--border-radius); display: flex; align-items: center; justify-content: center; background-color: var(--background-color); border: 1px solid #ddd; font-size: 1.4rem; color: var(--primary-color); } .icon-preview .bi { line-height: 1; } .icon-suggestions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; } .icon-suggestion { padding: 6px 12px; border-radius: var(--border-radius); background-color: var(--background-color); border: 1px solid transparent; cursor: pointer; font-size: 0.9rem; transition: var(--transition); } .icon-suggestion:hover, .icon-suggestion.active { border-color: var(--primary-color); color: var(--primary-color); } .checkbox-group { display: flex; flex-direction: column; gap: 10px; } .checkbox-item { display: flex; align-items: center; gap: 10px; cursor: pointer; } .checkbox-item input[type="checkbox"] { width: auto; } .text-muted { color: #6c757d; } /* Hidden Class */ .hidden { display: none !important; } /* Responsive Styles */ @media (max-width: 992px) { .contact-content { flex-direction: column; } .dashboard-charts { grid-template-columns: 1fr; } .pos-container { flex-direction: column; height: auto; } .pos-products { margin-bottom: 20px; } .pos-product-grid { max-height: 400px; } } @media (max-width: 768px) { .main-nav, .header-actions .search-box, .header-actions .btn { display: none; } .mobile-menu-toggle { display: block; } .hero-content h1 { font-size: 2rem; } .category-list { flex-wrap: wrap; justify-content: center; } .order-card { flex-direction: column; align-items: flex-start; gap: 10px; } .order-info { width: 100%; } .order-actions { width: 100%; justify-content: flex-end; } .admin-main { flex-direction: column; } .dashboard-stats { grid-template-columns: 1fr; } .form-row { flex-direction: column; } .payment-methods { flex-direction: column; } .form-section { margin-bottom: 20px; } .about-content { flex-direction: column; } .about-image { width: 100%; flex: none; } /* Mobile nav: show when .active is toggled by JS */ .main-nav.active { display: block; position: absolute; top: 64px; /* below header */ left: 0; right: 0; background-color: var(--white); padding: 12px 20px; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12); z-index: 999; } .main-nav.active ul { display: flex; flex-direction: column; gap: 10px; } .main-nav.active li { margin-right: 0; } .main-nav.active a { display: block; padding: 8px 6px; font-weight: 600; } /* Admin content adjustments */ .admin-content { padding: 16px; } /* Page header: stack title and actions */ .page-header { flex-direction: column; align-items: stretch; gap: 12px; } .page-header h1 { margin: 0; } .page-header .btn { width: 100%; max-width: none; justify-self: end; } /* Make tables horizontally scrollable and buttons smaller */ .table-responsive { overflow-x: auto; } .table-responsive table { width: 100%; min-width: 480px; } .page-header .btn.btn-primary { padding: 10px 12px; } } @media (max-width: 576px) { .container { padding: 0 15px; } .product-grid { grid-template-columns: 1fr; } .best-seller-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); } .modal-content { width: 95%; margin: 20px auto; } .pos-product-grid { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); } .order-details-info { grid-template-columns: 1fr; } .products-table, .orders-table { overflow-x: auto; } .products-table table, .orders-table table { min-width: 600px; } .footer-content { flex-direction: column; align-items: center; text-align: center; gap: 20px; } .admin-sidebar { width: auto; } } @media (max-width: 420px) { .modal-content { width: 98%; margin: 12px auto; } .icon-input .icon-preview { width: 36px; height: 36px; font-size: 1.1rem; } } #salesChart { width: 100%; height: 300px; } #topProductsChart { width: 300px; height: 300px; margin: 0 auto; display: flex; }