/* Styles de base */
.min-h-screen { min-height: 100vh; }
.container { width: 100%; max-width: 1280px; margin: 0 auto; padding: 0 1rem; }
.bg-gray-50 { background-color: #F9FAFB; }
.bg-white { background-color: #FFFFFF; }
.bg-blue-600 { background-color: #2563EB; }
.text-white { color: #FFFFFF; }
.rounded-lg { border-radius: 0.5rem; }
.shadow-lg { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); }
.p-6 { padding: 1.5rem; }
.mb-4 { margin-bottom: 1rem; }
.space-y-4 > * + * { margin-top: 1rem; }
.flex { display: flex; }
.items-center { align-items: center; }
.justify-between { justify-content: space-between; }
.gap-2 { gap: 0.5rem; }
.w-full { width: 100%; }
.text-xl { font-size: 1.25rem; }
.font-semibold { font-weight: 600; }
.text-gray-700 { color: #374151; }

/* Animation de chargement */
@keyframes spin {
    to { transform: rotate(360deg); }
}
.loading {
    animation: spin 1s linear infinite;
    border: 2px solid #E5E7EB;
    border-top-color: #2563EB;
    border-radius: 50%;
    width: 1rem;
    height: 1rem;
}

/* Transitions */
.transition-colors { transition-property: background-color, border-color, color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
.hover\:bg-blue-700:hover { background-color: #1d4ed8; }
.hover\:bg-gray-100:hover { background-color: #F3F4F6; }
.disabled\:bg-blue-400:disabled { background-color: #60a5fa; }

/* Utilitaires */
.hidden { display: none; }
.opacity-0 { opacity: 0; }
.group-hover\:opacity-100 { opacity: 1; }