@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; } /* Custom styles for the Flask Temporary File Upload application */ /* Dark mode compatibility */ .dark .bg-white { background-color: #1f2937; } .dark .text-gray-900 { color: #f9fafb; } .dark .text-gray-600 { color: #d1d5db; } .dark .border-gray-300 { border-color: #4b5563; } /* Fancybox Dark Theme Customization */ .fancybox__backdrop { background: rgba(0, 0, 0, 0.9) !important; backdrop-filter: blur(10px) !important; } .fancybox__container { --fancybox-bg: transparent; --fancybox-color: #ffffff; } .fancybox__content { background: transparent !important; border-radius: 12px !important; overflow: hidden !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.8) !important; } .fancybox__image { border-radius: 8px !important; box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.6) !important; } .fancybox__toolbar { background: rgba(0, 0, 0, 0.8) !important; backdrop-filter: blur(10px) !important; border-radius: 8px !important; margin: 10px !important; border: 1px solid rgba(255, 255, 255, 0.1) !important; } .fancybox__button { background: rgba(255, 255, 255, 0.1) !important; border: 1px solid rgba(255, 255, 255, 0.2) !important; color: white !important; border-radius: 6px !important; transition: all 0.2s ease !important; margin: 2px !important; } .fancybox__button:hover { background: rgba(255, 255, 255, 0.2) !important; border-color: rgba(255, 255, 255, 0.4) !important; transform: translateY(-1px) !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important; } .fancybox__button svg { color: white !important; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5)) !important; } .fancybox__infobar { background: rgba(0, 0, 0, 0.8) !important; color: white !important; border-radius: 6px !important; padding: 8px 12px !important; margin: 10px !important; backdrop-filter: blur(10px) !important; border: 1px solid rgba(255, 255, 255, 0.1) !important; } .fancybox__caption { background: rgba(0, 0, 0, 0.8) !important; color: white !important; border-radius: 0 0 12px 12px !important; backdrop-filter: blur(10px) !important; border-top: 1px solid rgba(255, 255, 255, 0.1) !important; text-align: center !important; font-size: 14px !important; font-weight: 500 !important; line-height: 1.4 !important; } .fancybox__nav .fancybox__button { background: rgba(255, 255, 255, 0.1) !important; border-radius: 50% !important; width: 48px !important; height: 48px !important; backdrop-filter: blur(10px) !important; } .fancybox__nav .fancybox__button:hover { background: rgba(255, 255, 255, 0.2) !important; transform: scale(1.1) !important; } /* Dark mode specific adjustments */ .dark .fancybox__backdrop { background: rgba(0, 0, 0, 0.95) !important; } .dark .fancybox__toolbar { background: rgba(17, 24, 39, 0.9) !important; border-color: rgba(75, 85, 99, 0.3) !important; } .dark .fancybox__infobar { background: rgba(17, 24, 39, 0.9) !important; border-color: rgba(75, 85, 99, 0.3) !important; } .dark .fancybox__caption { background: rgba(17, 24, 39, 0.9) !important; border-top-color: rgba(75, 85, 99, 0.3) !important; } /* Responsive adjustments */ @media (max-width: 768px) { .fancybox__nav .fancybox__button { width: 44px !important; height: 44px !important; } .fancybox__toolbar { margin: 5px !important; padding: 5px !important; } .fancybox__button { padding: 6px !important; margin: 1px !important; } } /* Image hover effects */ .image-preview-container { position: relative; overflow: hidden; border-radius: 0.5rem; } .image-preview-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(45deg, rgba(79, 70, 229, 0.1), rgba(6, 182, 212, 0.1)); opacity: 0; transition: opacity 0.3s ease; display: flex; align-items: center; justify-content: center; border-radius: 0.5rem; } .image-preview-container:hover .image-preview-overlay { opacity: 1; } .zoom-icon { background: rgba(255, 255, 255, 0.9); border-radius: 50%; padding: 0.5rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); transform: scale(0.8); transition: transform 0.2s ease; } .image-preview-container:hover .zoom-icon { transform: scale(1); }