/* Styles personnalisés pour l'application */ /* Focus visible amélioré pour l'accessibilité */ *:focus { outline: 2px solid #3b82f6; outline-offset: 2px; } /* Amélioration du contraste pour les textes */ .text-gray-600 { color: #4b5563; } .text-gray-700 { color: #374151; } /* Transitions fluides */ .transition-colors { transition-property: color, background-color, border-color; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } /* Skip link pour l'accessibilité */ .skip-link { position: absolute; top: -40px; left: 6px; background: #000; color: #fff; padding: 8px; text-decoration: none; z-index: 1000; } .skip-link:focus { top: 6px; } /* Améliorations pour les formulaires */ input:invalid, select:invalid, textarea:invalid { border-color: #ef4444; box-shadow: 0 0 0 1px #ef4444; } input:valid, select:valid, textarea:valid { border-color: #10b981; } /* Amélioration des messages d'erreur */ .error-message { display: flex; align-items: center; margin-top: 0.25rem; font-size: 0.875rem; color: #dc2626; } .error-message::before { content: "⚠"; margin-right: 0.25rem; } /* Styles pour les boutons avec meilleur contraste */ .btn-primary { background-color: #2563eb; color: white; padding: 0.5rem 1rem; border-radius: 0.375rem; border: 2px solid #2563eb; transition: all 0.15s ease-in-out; } .btn-primary:hover { background-color: #1d4ed8; border-color: #1d4ed8; } .btn-primary:focus { outline: 2px solid #3b82f6; outline-offset: 2px; } .btn-secondary { background-color: #f9fafb; color: #374151; padding: 0.5rem 1rem; border-radius: 0.375rem; border: 2px solid #d1d5db; transition: all 0.15s ease-in-out; } .btn-secondary:hover { background-color: #f3f4f6; border-color: #9ca3af; } /* Tables responsive */ .table-responsive { overflow-x: auto; } @media (max-width: 768px) { .table-responsive table { font-size: 0.875rem; } } /* Animation pour les messages flash */ @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .flash-message { animation: fadeIn 0.3s ease-out; } /* Améliorations pour mobile */ @media (max-width: 640px) { .mobile-menu-button { display: block; } .desktop-menu { display: none; } } /* High contrast mode support */ @media (prefers-contrast: high) { .bg-gray-100 { background-color: #ffffff; } .text-gray-600 { color: #000000; } .border-gray-300 { border-color: #000000; } }