@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { transform: translateY(10px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } /* Toast personalizado */ #toast { top: 2rem; right: 2rem; min-width: 220px; max-width: 320px; background: #22c55e; /* verde por defecto */ color: #fff; box-shadow: 0 4px 24px 0 rgba(0,0,0,0.18); border-radius: 0.75rem; z-index: 9999; transition: transform 0.3s, background 0.2s; animation: fadeIn 0.3s; position: fixed; display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1.5rem; } #toast.bg-green-500 { background: #22c55e; } #toast.bg-red-500 { background: #ef4444; } #toast.bg-blue-500 { background: #3b82f6; } #toast.translate-x-full { transform: translateX(120%); } /* Tooltip personalizado */ .custom-tooltip { position: absolute; z-index: 50; background: #222; color: #fff; padding: 0.25rem 0.75rem; border-radius: 0.375rem; font-size: 0.875rem; white-space: pre-line; box-shadow: 0 2px 8px rgba(0,0,0,0.18); opacity: 0; pointer-events: none; transition: opacity 0.15s; } .custom-tooltip.visible { opacity: 1; } /* Mejoras para dark mode */ .dark .text-gray-900 { color: #f3f4f6 !important; } .dark .text-gray-700 { color: #d1d5db !important; } .dark .text-gray-600 { color: #9ca3af !important; } .dark .text-gray-500 { color: #6b7280 !important; } .dark .bg-white { background-color: #1f2937 !important; } .dark .border-gray-200 { border-color: #374151 !important; } .dark .border-gray-300 { border-color: #4b5563 !important; } .dark .bg-gray-50 { background-color: #111827 !important; } .dark .bg-blue-100 { background-color: #1e40af !important; } .dark .bg-red-100 { background-color: #7f1d1d !important; } .dark .bg-blue-900\/20 { background-color: rgba(30,64,175,0.2) !important; } .dark .bg-blue-900\/30 { background-color: rgba(30,64,175,0.3) !important; } .dark .bg-blue-900\/50 { background-color: rgba(30,64,175,0.5) !important; } .dark .bg-red-900\/30 { background-color: rgba(127,29,29,0.3) !important; } .dark .bg-red-900\/50 { background-color: rgba(127,29,29,0.5) !important; } /* Truncado de texto */ .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 180px; display: inline-block; vertical-align: bottom; }