/* Custom animations and styles */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } .fade-in { animation: fadeIn 0.5s ease-out; } .slide-in { animation: slideIn 0.3s ease-out; } /* Card hover effects */ .inventory-card { transition: all 0.3s ease; background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); border: 1px solid #e2e8f0; } .inventory-card:hover { transform: translateY(-5px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); border-color: #cbd5e1; } /* Stock level indicators */ .stock-low { background-color: #fef2f2; color: #991b1b; border: 1px solid #fecaca; } .stock-medium { background-color: #fffbeb; color: #92400e; border: 1px solid #fed7aa; } .stock-high { background-color: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; } /* Button animations */ .btn-primary { transition: all 0.2s ease; background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); } .btn-primary:hover { background: linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%); transform: translateY(-1px); } .btn-danger { transition: all 0.2s ease; background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); } .btn-danger:hover { background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%); transform: translateY(-1px); } /* Form focus states */ .form-input:focus { box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } /* Modal animations */ .modal-overlay { backdrop-filter: blur(4px); transition: opacity 0.3s ease; } .modal-content { transition: transform 0.3s ease; } /* Loading spinner */ .loading-spinner { border-top-color: #3b82f6; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Price formatting */ .price-display { font-feature-settings: 'tnum'; font-variant-numeric: tabular-nums; } /* Responsive design improvements */ @media (max-width: 768px) { .inventory-card { margin-bottom: 1rem; } .form-grid { grid-template-columns: 1fr; } } /* Status badges */ .status-badge { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.025em; } /* Quantity controls */ .qty-controls { display: flex; align-items: center; gap: 0.5rem; } .qty-btn { width: 2rem; height: 2rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: bold; transition: all 0.2s ease; } .qty-btn:hover { transform: scale(1.1); } /* Success and error messages */ .alert { border-radius: 0.5rem; padding: 1rem; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.5rem; } .alert-success { background-color: #ecfdf5; border-color: #a7f3d0; color: #047857; } .alert-error { background-color: #fef2f2; border-color: #fecaca; color: #dc2626; } /* Card content spacing */ .card-content { padding: 1.5rem; } .card-header { border-bottom: 1px solid #e5e7eb; padding-bottom: 0.75rem; margin-bottom: 1rem; } .card-footer { border-top: 1px solid #e5e7eb; padding-top: 0.75rem; margin-top: 1rem; }