@tailwind base; @tailwind components; @tailwind utilities; /* * Design system : une seule palette sombre pour toute l'application. * * gray-950 fond de page gray-900 surfaces (cartes, header) * gray-800 sous-surfaces gray-700 bordures * white / gray-400 / gray-500 textes principal / secondaire / tertiaire * blue-600 accent */ @layer components { /* --- Structure de page ------------------------------------------------ */ /* Conteneur racine d'une page : pleine largeur, marge laterale fixe. */ .page { @apply flex-1 overflow-auto bg-gray-950 px-6 py-6; } /* Page sans defilement propre (split view type edition). */ .page-fixed { @apply flex-1 flex flex-col overflow-hidden bg-gray-950; } .page-content { @apply space-y-6; } .page-header { @apply flex items-start justify-between gap-4; } .page-title { @apply text-xl font-semibold text-white; } .page-subtitle { @apply text-sm text-gray-400 mt-1; } /* --- Cartes ----------------------------------------------------------- */ .card { @apply bg-gray-900 border border-gray-700 rounded-lg overflow-hidden; } .card-header { @apply px-4 py-3 border-b border-gray-700 flex items-center justify-between gap-3; } .card-title { @apply text-sm font-medium text-gray-300; } .card-body { @apply p-4; } /* Bloc secondaire a l'interieur d'une carte. */ .subcard { @apply bg-gray-800 border border-gray-700 rounded-lg; } /* --- Boutons ---------------------------------------------------------- */ .btn { @apply inline-flex items-center justify-center gap-2 px-3 py-1.5 text-sm rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed; } .btn-primary { @apply bg-blue-600 text-white hover:bg-blue-700; } .btn-secondary { @apply bg-gray-800 text-gray-300 border border-gray-700 hover:bg-gray-700 hover:text-white; } .btn-ghost { @apply text-gray-400 hover:text-white hover:bg-gray-800; } .btn-warning { @apply bg-amber-600 text-white hover:bg-amber-700; } .btn-danger { @apply bg-red-600 text-white hover:bg-red-700; } /* Variante compacte pour les actions dans les listes et tableaux. */ .btn-sm { @apply px-2 py-1 text-xs gap-1.5; } /* --- Formulaires ------------------------------------------------------ */ .form-label { @apply block text-sm font-medium text-gray-300 mb-1; } /* [color-scheme:dark] : les widgets natifs (calendrier, spinners) suivent le theme. */ .input { @apply w-full bg-gray-950 border border-gray-700 rounded-lg px-3 py-2 text-sm text-white placeholder-gray-500 focus:outline-none focus:border-blue-500 transition-colors [color-scheme:dark]; } select.input { @apply cursor-pointer; } .form-hint { @apply text-xs text-gray-500 mt-1; } /* --- Tableaux --------------------------------------------------------- */ /* Enveloppe a poser autour d'un