        @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
        body { 
            font-family: 'Inter', sans-serif; 
            background-color: #f3f4f6; 
            overflow-y: scroll; 
            -webkit-tap-highlight-color: transparent; /* Elimina el destello al hacer tap en móviles */
            overscroll-behavior-y: none; /* Evita el pull-to-refresh del navegador */
        }
        .hide-scroll::-webkit-scrollbar { display: none; }
        .hide-scroll { -ms-overflow-style: none; scrollbar-width: none; }
        
        /* Utilidad para evitar seleccionar texto en elementos de UI (botones, menús) */
        .app-element { user-select: none; -webkit-user-select: none; }
        
        /* Toast Animation */
        @keyframes slideInRight {
            from { transform: translateX(100%); opacity: 0; }
            to { transform: translateX(0); opacity: 1; }
        }
        @keyframes fadeOut {
            from { opacity: 1; }
            to { opacity: 0; }
        }
        .toast-enter { animation: slideInRight 0.3s ease-out forwards; }
        .toast-exit { animation: fadeOut 0.3s ease-out forwards; }
        
        /* Modal Animation */
        @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
        @keyframes scaleUp { from { transform: scale(0.95); opacity: 0; } to { transform: scale(1); opacity: 1; } }
        .modal-bg-enter { animation: fadeIn 0.2s ease-out forwards; }
        .modal-content-enter { animation: scaleUp 0.2s ease-out forwards; }

        .skeleton { background: linear-gradient(90deg, #e2e8f0 25%, #cbd5e1 50%, #e2e8f0 75%); background-size: 200% 100%; animation: loading 1.5s infinite; }
        @keyframes loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
        
        @keyframes shimmer { 0% { transform: translateX(-150%) skewX(-15deg); } 100% { transform: translateX(150%) skewX(-15deg); } }
        .animate-shimmer { animation: shimmer 2.5s infinite; }
        
        @keyframes slideUpSheet { from { transform: translateY(100%); } to { transform: translateY(0); } }
        @keyframes slideDownSheet { from { transform: translateY(0); } to { transform: translateY(100%); } }
        .sheet-enter { animation: slideUpSheet 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
        .sheet-exit { animation: slideDownSheet 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards; }

        .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

        /* Microinteracción para feedback al marcar favoritos */
        @keyframes favPop {
            0% { transform: scale(1); }
            35% { transform: scale(1.22); }
            100% { transform: scale(1); }
        }
        .fav-pop { animation: favPop 0.28s ease-out; }
