/* Variables globales */ :root { --primary-color: #2563eb; --secondary-color: #3b82f6; --accent-color: #f97316; --text-color: #1e293b; --light-bg: #f8fafc; --border-radius: 12px; --box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Estilos generales */ body { font-family: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif; color: var(--text-color); line-height: 1.7; background-color: var(--light-bg); } /* Navbar mejorado */ .navbar { backdrop-filter: blur(10px); background-color: var(--primary-color) !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .navbar-brand { background-color: white; border-radius: 50%; padding: 0.5rem; display: flex; align-items: center; justify-content: center; transition: var(--transition); } .navbar-brand:hover { transform: scale(1.05); box-shadow: 0 0 15px rgba(255, 255, 255, 0.3); } .navbar-brand img { transition: var(--transition); height: 40px; width: auto; } /* Estilos del menú de navegación */ .navbar-dark .navbar-nav .nav-link { color: rgba(255, 255, 255, 0.85) !important; font-weight: 500; padding: 0.5rem 1rem; transition: var(--transition); position: relative; } .navbar-dark .navbar-nav .nav-link:hover { color: #ffffff !important; transform: translateY(-1px); } .navbar-dark .navbar-nav .nav-link.active { color: #ffffff !important; font-weight: 600; } .navbar-dark .navbar-nav .nav-link.active::after { content: ''; position: absolute; bottom: 0; left: 1rem; right: 1rem; height: 2px; background-color: #ffffff; border-radius: 2px; } .navbar-dark .navbar-nav .nav-link:hover::after { content: ''; position: absolute; bottom: 0; left: 1rem; right: 1rem; height: 2px; background-color: rgba(255, 255, 255, 0.5); border-radius: 2px; } /* Hero Section mejorado */ .hero-section { background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%); padding: 6rem 0; position: relative; overflow: hidden; } .hero-section::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%232563eb' fill-opacity='0.05' fill-rule='evenodd'/%3E%3C/svg%3E"); opacity: 0.5; } /* Estilos de tarjetas mejorados */ .card { border-radius: var(--border-radius); border: none; background: white; transition: var(--transition); overflow: hidden; } .card:hover { transform: translateY(-5px); box-shadow: var(--box-shadow); } .card-body { padding: 2rem; } /* Botones mejorados */ .btn { border-radius: var(--border-radius); padding: 0.875rem 1.75rem; font-weight: 600; transition: var(--transition); text-transform: none; letter-spacing: 0.025em; } .btn-primary { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); border: none; box-shadow: 0 4px 6px -1px rgba(37, 99, 235, 0.2); } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 8px -1px rgba(37, 99, 235, 0.3); } /* Sección de características */ .feature-icon { width: 64px; height: 64px; background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); border-radius: 16px; display: flex; align-items: center; justify-content: center; margin: 0 auto 1.5rem; color: white; font-size: 1.5rem; transition: var(--transition); } .card:hover .feature-icon { transform: scale(1.1) rotate(5deg); } /* Animaciones mejoradas */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .fade-in { animation: fadeInUp 0.6s ease-out forwards; } /* Estilos responsivos mejorados */ @media (max-width: 768px) { .hero-section { padding: 4rem 0; } .card-body { padding: 1.5rem; } .btn { padding: 0.75rem 1.5rem; } } /* Footer mejorado */ footer { background: linear-gradient(135deg, #1e293b, #0f172a); color: white; padding: 4rem 0 2rem; } footer .logo { filter: brightness(0) invert(1); opacity: 0.9; transition: var(--transition); } footer .logo:hover { opacity: 1; transform: scale(1.05); } /* Estilos para la página de entrevista mejorados */ .interview-container { max-width: 900px; margin: 0 auto; padding: 3rem 2rem; } .question-card { background: white; border-radius: var(--border-radius); padding: 2.5rem; margin-bottom: 2rem; box-shadow: var(--box-shadow); transition: var(--transition); } .question-card:hover { transform: translateY(-3px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } .recording-controls { display: flex; gap: 1.5rem; justify-content: center; margin-top: 2rem; } .recording-indicator { width: 24px; height: 24px; border-radius: 50%; background: linear-gradient(135deg, var(--accent-color), #fb923c); animation: pulse 1.5s infinite; } /* Ranking mejorado */ .ranking-table { width: 100%; border-collapse: separate; border-spacing: 0 0.75rem; } .ranking-table th { background-color: var(--light-bg); padding: 1.25rem; font-weight: 600; color: var(--text-color); } .ranking-table td { background-color: white; padding: 1.25rem; box-shadow: var(--box-shadow); transition: var(--transition); } .ranking-table tr:hover td { transform: scale(1.02); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1); } /* Badges mejorados */ .badge-level { padding: 0.625rem 1.25rem; border-radius: 9999px; font-weight: 600; letter-spacing: 0.025em; text-transform: uppercase; font-size: 0.75rem; } .badge-beginner { background: linear-gradient(135deg, #64748b, #94a3b8); color: white; } .badge-intermediate { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; } .badge-advanced { background: linear-gradient(135deg, #7c3aed, #a855f7); color: white; } .badge-top-speaker { background: linear-gradient(135deg, #eab308, #facc15); color: var(--text-color); } /* Panel de administración mejorado */ .admin-sidebar { background: linear-gradient(135deg, #1e293b, #0f172a); color: white; min-height: 100vh; padding: 2rem 0; } .admin-nav-link { color: rgba(255, 255, 255, 0.8); padding: 1rem 1.5rem; display: flex; align-items: center; gap: 0.75rem; transition: var(--transition); border-radius: 0.5rem; margin: 0.25rem 1rem; } .admin-nav-link:hover { color: white; background-color: rgba(255, 255, 255, 0.1); transform: translateX(5px); } .admin-nav-link.active { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; } /* === Mejoras para la página de administración de usuarios === */ /* Estilo para el buscador */ #searchInput { max-width: 300px; border-radius: var(--border-radius); border: 1px solid #d1d5db; transition: var(--transition); } #searchInput:focus { box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2); border-color: var(--primary-color); } /* Estilo para la tabla de usuarios */ #usuariosList tr { transition: var(--transition); } #usuariosList tr:hover { transform: scale(1.01); background-color: #f1f5f9; } /* Estilo para tabla dentro de modal */ #modalEntrevistas tr:hover td { background-color: #f9fafb; } /* Mejora a botones pequeños */ .btn-sm { padding: 0.5rem 1rem; font-size: 0.875rem; } /* Mejora visual al modal */ .modal-content { border-radius: var(--border-radius); box-shadow: var(--box-shadow); } /* Tabla de preguntas y entrevistas */ #preguntasList td, #modalEntrevistas td { vertical-align: middle; } /* Spinner alineado verticalmente */ .spinner-border { width: 1.5rem; height: 1.5rem; } /* Encabezado de sección modal */ .modal-body h6 { font-weight: 600; margin-top: 1rem; color: var(--primary-color); }