.product-management { padding: 1.5rem; max-width: 1200px; margin: 0 auto; font-family: 'Inter', sans-serif; margin-left: 300px; .product-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; h2 { margin: 0; font-size: 1.875rem; font-weight: 600; color: #1a2035; } .add-product-btn { display: flex; align-items: center; background-color: #4c6fff; color: white; border: none; border-radius: 8px; padding: 0.75rem 1.25rem; font-weight: 500; font-size: 0.95rem; cursor: pointer; transition: background-color 0.2s; .icon { margin-right: 0.5rem; font-size: 1.25rem; font-weight: 600; } &:hover { background-color: #3451db; } } .header-actions { display: flex; gap: 1rem; .filter-toggle-btn { display: flex; align-items: center; background-color: #f7fafc; color: #4a5568; border: 1px solid #e2e8f0; border-radius: 8px; padding: 0.75rem 1.25rem; font-weight: 500; font-size: 0.95rem; cursor: pointer; transition: all 0.2s; &:hover { background-color: #edf2f7; } .icon { margin-right: 0.5rem; } } } } .filter-panel { background-color: #f7fafc; border-radius: 10px; padding: 1.25rem; margin-bottom: 1.5rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); border: 1px solid #e2e8f0; .filter-panel-header { display: flex; justify-content: space-between; margin-bottom: 1rem; h3 { margin: 0; font-size: 1.1rem; font-weight: 600; color: #2d3748; } .clear-filters { background: none; border: none; color: #4c6fff; font-size: 0.9rem; font-weight: 500; cursor: pointer; padding: 0; &:hover { text-decoration: underline; } } } .filter-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; .filter-group { display: flex; flex-direction: column; label { font-size: 0.85rem; font-weight: 500; color: #4a5568; margin-bottom: 0.5rem; } select, input { padding: 0.6rem 0.75rem; border: 1px solid #e2e8f0; border-radius: 6px; font-size: 0.95rem; &:focus { outline: none; border-color: #4c6fff; box-shadow: 0 0 0 3px rgba(76, 111, 255, 0.1); } } .price-range { display: flex; align-items: center; gap: 0.5rem; input { flex: 1; min-width: 0; } span { color: #718096; font-size: 0.85rem; } } } } } .product-controls { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; .search-box { flex: 1; max-width: 400px; position: relative; .search-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: #718096; } input { width: 100%; padding: 0.75rem 0.75rem 0.75rem 2.5rem; border: 1px solid #e2e8f0; border-radius: 8px; font-size: 0.95rem; transition: all 0.2s; &:focus { outline: none; border-color: #4c6fff; box-shadow: 0 0 0 3px rgba(76, 111, 255, 0.1); } } } .product-count { font-size: 0.95rem; color: #718096; } } .products-list { background-color: #fff; border-radius: 10px; box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05); overflow: hidden; .loading { padding: 3rem 0; text-align: center; .spinner { display: inline-block; width: 40px; height: 40px; border: 3px solid rgba(76, 111, 255, 0.1); border-radius: 50%; border-top-color: #4c6fff; animation: spin 1s ease-in-out infinite; margin-bottom: 1rem; } p { color: #718096; font-size: 1rem; margin: 0; } } .table-responsive { overflow-x: auto; table { width: 100%; border-collapse: collapse; th, td { padding: 1rem; text-align: left; border-bottom: 1px solid #edf2f7; } th { font-weight: 600; background-color: #f9fafc; color: #4a5568; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.05em; } td { color: #2d3748; font-size: 0.95rem; &.product-name { font-weight: 500; color: #1a202c; } } tbody tr { transition: all 0.2s; &:hover { background-color: #f7fafc; } } .stock-badge { padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.85rem; font-weight: 500; &.in-stock { background-color: #def7ec; color: #047857; } &.out-of-stock { background-color: #fee2e2; color: #b91c1c; } } .action-buttons { display: flex; gap: 0.5rem; button { padding: 0.4rem 0.75rem; border-radius: 6px; font-size: 0.85rem; font-weight: 500; cursor: pointer; border: none; transition: all 0.2s; &.edit-btn { background-color: #ebf5ff; color: #3182ce; &:hover { background-color: #bee3f8; } } &.delete-btn { background-color: #fff5f5; color: #e53e3e; &:hover { background-color: #fed7d7; } } } } .no-products { text-align: center; padding: 3rem; color: #718096; font-size: 1rem; } } } } .loading { text-align: center; padding: 20px; font-size: 16px; color: #777; } .product-form-container { background-color: #fff; border-radius: 8px; padding: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); form { display: flex; flex-direction: column; gap: 20px; } .form-section { border: 1px solid #eee; border-radius: 8px; padding: 20px; h3 { margin-top: 0; margin-bottom: 15px; font-size: 1.3rem; color: #333; } .form-hint { color: #666; margin-bottom: 1rem; font-size: 0.9rem; } .payment-methods-options { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0.75rem 1.5rem; margin: 1rem 0; .payment-method-option { display: flex; align-items: center; input[type="checkbox"] { margin-right: 10px; } label { display: flex; align-items: center; cursor: pointer; .method-icon { margin-right: 8px; font-size: 1.1rem; } } } } .payment-method-help { font-size: 0.85rem; color: #666; margin-top: 0.75rem; font-style: italic; } .loading-methods { padding: 1rem; text-align: center; color: #666; } .no-methods-warning { color: #e74c3c; font-weight: 500; .add-methods-link { color: #3498db; text-decoration: none; font-weight: 600; &:hover { text-decoration: underline; } } } } .form-group { margin-bottom: 15px; label { display: block; margin-bottom: 5px; font-weight: 500; } input, textarea, select { width: 100%; padding: 8px 12px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; &:focus { outline: none; border-color: #3498db; box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2); } } textarea { resize: vertical; min-height: 100px; } &.checkbox { display: flex; align-items: center; input { width: auto; margin-right: 10px; } label { margin-bottom: 0; } } .form-text { display: block; margin-top: 0.25rem; font-size: 0.75rem; color: #718096; } } .form-row { display: flex; gap: 20px; .form-group { flex: 1; } } .form-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; button { padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; font-weight: 500; &:first-child { background-color: #3498db; color: white; &:hover:not(:disabled) { background-color: #2980b9; } &:disabled { background-color: #95a5a6; cursor: not-allowed; } } &:last-child { background-color: #ecf0f1; color: #34495e; &:hover { background-color: #bdc3c7; } } } } .image-limit-info { margin-bottom: 15px; font-size: 14px; color: #777; .limit-reached { color: #e74c3c; font-weight: 500; } } .image-upload-container { display: flex; gap: 20px; margin-bottom: 20px; .primary-image, .additional-images { flex: 1; h4 { margin-top: 0; margin-bottom: 10px; font-size: 1rem; } } } .upload-box { border: 2px dashed #ddd; border-radius: 4px; padding: 20px; text-align: center; cursor: pointer; position: relative; &:hover { border-color: #3498db; } input[type="file"] { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; &:disabled { cursor: not-allowed; } } p { margin: 0; color: #777; font-size: 14px; } .upload-spinner { margin-top: 10px; color: #3498db; } } .upload-error { color: #e74c3c; margin-top: 10px; font-size: 14px; } .media-gallery { margin-top: 20px; h4 { margin-top: 0; margin-bottom: 10px; font-size: 1rem; } .media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 15px; } .media-item { border: 1px solid #ddd; border-radius: 4px; padding: 10px; text-align: center; position: relative; height: 100px; display: flex; align-items: center; justify-content: center; background-color: #f9f9f9; &.primary { border-color: #3498db; background-color: #f0f8ff; } .primary-badge { position: absolute; top: 5px; left: 5px; background-color: #3498db; color: white; font-size: 10px; padding: 2px 5px; border-radius: 3px; } .media-actions { position: absolute; top: 5px; right: 5px; .delete-media { background-color: #e74c3c; color: white; border: none; border-radius: 50%; width: 20px; height: 20px; font-size: 14px; line-height: 1; cursor: pointer; padding: 0; &:hover { background-color: #c0392b; } } } .media-type { font-size: 12px; color: #777; } .media-image { max-width: 100%; max-height: 80px; object-fit: contain; margin-bottom: 5px; } } } } @keyframes spin { to { transform: rotate(360deg); } } }