You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1140 lines
28 KiB
Vue

2 months ago
<!-- components/ContenidoPrincipal.vue -->
<template>
<NavbarModerno />
<div class="main-content">
<!-- Hero Section Moderno -->
<section class="modern-hero">
<div class="hero-container">
<div class="hero-content">
<a-tag color="blue" class="hero-tag">Nueva Convocatoria 2024</a-tag>
<h1 class="hero-title">
Tu futuro comienza
<span class="gradient-text">aquí</span>
</h1>
<p class="hero-subtitle">
Forma parte de la comunidad universitaria más prestigiosa del país.
<br>Admisión 2024-I | Inscripciones abiertas
</p>
<div class="hero-actions">
<a-button type="primary" size="large" class="cta-button" @click="scrollToConvocatoria">
<template #icon><RightCircleOutlined /></template>
Postular Ahora
</a-button>
<a-button size="large" class="secondary-button" @click="openVirtualTour">
<template #icon><PlayCircleOutlined /></template>
Tour Virtual
</a-button>
</div>
</div>
<div class="hero-visual">
<div class="floating-card">
<div class="card-header">
<CalendarOutlined />
<span>Próximo Evento</span>
</div>
<h3>Charla Informativa</h3>
<p>25 Nov | 4:00 PM - Virtual</p>
<a-button type="link" size="small">Registrarse</a-button>
</div>
</div>
</div>
</section>
<!-- Sección de Proceso de Admisión -->
<section class="process-section">
<div class="section-container">
<div class="section-header">
<h2 class="section-title">Proceso de Admisión 2024</h2>
<p class="section-subtitle">Sigue estos pasos para formar parte de nuestra comunidad universitaria</p>
</div>
<div class="process-timeline">
<a-steps :current="2" class="modern-steps">
<a-step title="Inscripción" description="20 Oct - 30 Nov" />
<a-step title="Validación" description="1 - 5 Dic" />
<a-step title="Examen" description="15 Diciembre" />
<a-step title="Resultados" description="20 Diciembre" />
<a-step title="Matrícula" description="8 - 12 Ene" />
</a-steps>
</div>
</div>
</section>
<!-- Sección de Convocatorias (Principal) -->
<section id="convocatorias" class="convocatorias-modern">
<div class="section-container">
<div class="section-header">
<div class="header-with-badge">
<h2 class="section-title">Convocatorias Vigentes</h2>
<a-badge count="Nuevo" class="new-badge" />
</div>
<p class="section-subtitle">Selecciona el proceso de admisión que se ajuste a tu perfil</p>
</div>
<div class="convocatorias-grid">
<!-- Convocatoria Principal -->
<a-card class="main-convocatoria-card">
<div class="card-badge">Principal</div>
<div class="convocatoria-header">
<div>
<h3>Admisión Ordinaria 2024-I</h3>
<p class="convocatoria-date">Inscripciones: 20 Oct - 30 Nov 2023</p>
</div>
<a-tag color="success" class="status-tag">Abierto</a-tag>
</div>
<p class="convocatoria-desc">
Proceso de admisión general para todas las carreras profesionales de pregrado.
Examen de conocimientos: 15 de diciembre 2023.
</p>
<a-divider class="custom-divider" />
<div class="quick-actions">
<h4>Acciones Rápidas</h4>
<div class="action-buttons-grid">
<a-button class="action-btn" @click="showModal('requisitos')">
<template #icon><FileTextOutlined /></template>
Requisitos
</a-button>
<a-button class="action-btn" @click="showModal('pagos')">
<template #icon><DollarOutlined /></template>
Pagos
</a-button>
<a-button class="action-btn" @click="showModal('vacantes')">
<template #icon><TeamOutlined /></template>
Vacantes
</a-button>
<a-button class="action-btn" @click="showModal('cronograma')">
<template #icon><CalendarOutlined /></template>
Cronograma
</a-button>
</div>
</div>
<a-divider class="custom-divider" />
<div class="preinscripcion-section">
<div class="preinscripcion-info">
<h4>Preinscripción en Línea</h4>
<p>Completa tu preinscripción de manera digital y segura</p>
</div>
<a-button type="primary" size="large" class="preinscripcion-btn" @click="openPreinscripcion">
<template #icon><FormOutlined /></template>
Iniciar Preinscripción
</a-button>
</div>
</a-card>
<!-- Otras convocatorias -->
<a-card class="secondary-convocatoria-card" v-for="conv in otrasConvocatorias" :key="conv.id">
<div class="convocatoria-header">
<div>
<h4>{{ conv.titulo }}</h4>
<p class="convocatoria-date">{{ conv.fecha }}</p>
</div>
<a-tag :color="conv.estadoColor" class="status-tag">{{ conv.estado }}</a-tag>
</div>
<p class="convocatoria-desc">{{ conv.descripcion }}</p>
<div class="card-footer">
<a-button type="link" size="small">Ver detalles</a-button>
<a-button type="primary" ghost size="small">Consultar</a-button>
</div>
</a-card>
</div>
</div>
</section>
<!-- Sección de Programas Académicos -->
<section class="programas-section">
<div class="section-container">
<div class="section-header">
<h2 class="section-title">Programas Académicos</h2>
<p class="section-subtitle">Explora nuestra oferta académica de pregrado y posgrado</p>
</div>
<div class="facultades-tabs">
<a-tabs v-model:activeKey="facultadActiva">
<a-tab-pane v-for="facultad in facultades" :key="facultad.id" :tab="facultad.nombre">
<div class="carreras-grid">
<a-card v-for="carrera in facultad.carreras" :key="carrera.id" class="carrera-card">
<div class="carrera-header">
<div class="carrera-icon">
<component :is="carrera.icono" />
</div>
<div>
<h4>{{ carrera.nombre }}</h4>
<p class="carrera-grado">{{ carrera.grado }}</p>
</div>
</div>
<p class="carrera-desc">{{ carrera.descripcion }}</p>
<div class="carrera-stats">
<span><UserOutlined /> Vacantes: {{ carrera.vacantes }}</span>
<span><TrophyOutlined /> Puntaje: {{ carrera.puntaje }}</span>
</div>
<a-button type="link" size="small" class="carrera-link">Ver plan de estudios</a-button>
</a-card>
</div>
</a-tab-pane>
</a-tabs>
</div>
</div>
</section>
<!-- Sección de Estadísticas -->
<section class="stats-section">
<div class="section-container">
<div class="stats-grid">
<div class="stat-card">
<h3>25+</h3>
<p>Carreras Profesionales</p>
</div>
<div class="stat-card">
<h3>98%</h3>
<p>Indice de Satisfacción</p>
</div>
<div class="stat-card">
<h3>15,000+</h3>
<p>Estudiantes Activos</p>
</div>
<div class="stat-card">
<h3>85%</h3>
<p>Egresados Laborando</p>
</div>
</div>
</div>
</section>
<!-- Sección de Noticias y Comunicados -->
<section class="noticias-modern">
<div class="section-container">
<div class="section-header">
<h2 class="section-title">Noticias y Comunicados</h2>
<a-button type="link" class="view-all">Ver todos</a-button>
</div>
<div class="noticias-grid-modern">
<a-card v-for="noticia in noticias" :key="noticia.id" class="noticia-card-modern">
<div class="noticia-image" :style="{ backgroundImage: `url(${noticia.imagen})` }">
<a-tag :color="noticia.tagColor" class="noticia-tag">{{ noticia.categoria }}</a-tag>
</div>
<div class="noticia-content">
<div class="noticia-meta">
<CalendarOutlined />
<span>{{ noticia.fecha }}</span>
</div>
<h4>{{ noticia.titulo }}</h4>
<p>{{ noticia.descripcion }}</p>
<a-button type="link" size="small">Leer más</a-button>
</div>
</a-card>
</div>
</div>
</section>
<!-- Sección de Modalidades -->
<section class="modalidades-section">
<div class="section-container">
<div class="section-header">
<h2 class="section-title">Modalidades de Admisión</h2>
<p class="section-subtitle">Diferentes formas de ingresar a nuestra universidad</p>
</div>
<div class="modalidades-grid">
<a-card v-for="modalidad in modalidades" :key="modalidad.id" class="modalidad-card">
<div class="modalidad-icon" :style="{ backgroundColor: modalidad.color }">
<component :is="modalidad.icono" />
</div>
<h4>{{ modalidad.nombre }}</h4>
<p>{{ modalidad.descripcion }}</p>
<a-tag :color="modalidad.estadoColor" class="modalidad-status">
{{ modalidad.estado }}
</a-tag>
</a-card>
</div>
</div>
</section>
<!-- Sección de Contacto -->
<section class="contact-section">
<div class="section-container">
<div class="contact-grid">
<div class="contact-info">
<h2 class="section-title">¿Necesitas Ayuda?</h2>
<p class="contact-subtitle">Nuestro equipo está listo para asistirte en todo el proceso de admisión</p>
<div class="contact-methods">
<div class="contact-method">
<PhoneOutlined />
<div>
<h4>Teléfono</h4>
<p>(01) 123-4567</p>
</div>
</div>
<div class="contact-method">
<MailOutlined />
<div>
<h4>Email</h4>
<p>admision@universidad.edu.pe</p>
</div>
</div>
<div class="contact-method">
<ClockCircleOutlined />
<div>
<h4>Horario</h4>
<p>Lun-Vie: 8:00 AM - 6:00 PM</p>
</div>
</div>
</div>
</div>
<div class="contact-form">
<h3>Envíanos un Mensaje</h3>
<a-form layout="vertical">
<a-form-item label="Nombre completo">
<a-input placeholder="Ingresa tu nombre completo" />
</a-form-item>
<a-form-item label="Email">
<a-input placeholder="tu@email.com" />
</a-form-item>
<a-form-item label="Consulta">
<a-textarea placeholder="Describe tu consulta..." :rows="4" />
</a-form-item>
<a-button type="primary" block>Enviar Mensaje</a-button>
</a-form>
</div>
</div>
</div>
</section>
<!-- Modal de Preinscripción -->
<a-modal
v-model:visible="preinscripcionModalVisible"
title="Preinscripción en Línea"
width="600px"
:footer="null"
class="modern-modal"
>
<div class="modal-steps">
<a-steps :current="0" size="small">
<a-step title="Datos Personales" />
<a-step title="Programa" />
<a-step title="Documentos" />
<a-step title="Confirmación" />
</a-steps>
</div>
<a-form layout="vertical" class="modal-form">
<h3>Información Personal</h3>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="Nombres">
<a-input placeholder="Ingresa tus nombres" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="Apellidos">
<a-input placeholder="Ingresa tus apellidos" />
</a-form-item>
</a-col>
</a-row>
<a-form-item label="Correo Electrónico">
<a-input type="email" placeholder="ejemplo@correo.com" />
</a-form-item>
<a-form-item label="Programa de Interés">
<a-select placeholder="Selecciona un programa">
<a-select-option v-for="facultad in facultades" :key="facultad.id">
<optgroup :label="facultad.nombre">
<a-select-option v-for="carrera in facultad.carreras" :key="carrera.id" :value="carrera.id">
{{ carrera.nombre }}
</a-select-option>
</optgroup>
</a-select-option>
</a-select>
</a-form-item>
<a-form-item>
<a-checkbox>
Acepto los términos y condiciones del proceso de admisión
</a-checkbox>
</a-form-item>
<div class="modal-actions">
<a-button @click="preinscripcionModalVisible = false">Cancelar</a-button>
<a-button type="primary" @click="submitPreinscripcion">Continuar</a-button>
</div>
</a-form>
</a-modal>
</div>
<FooterModerno />
</template>
<script setup>
import { ref } from 'vue'
import {
RightCircleOutlined,
PlayCircleOutlined,
CalendarOutlined,
FileTextOutlined,
DollarOutlined,
TeamOutlined,
FormOutlined,
UserOutlined,
TrophyOutlined,
PhoneOutlined,
MailOutlined,
ClockCircleOutlined,
MedicineBoxOutlined,
BuildOutlined,
BarChartOutlined,
BookOutlined,
ExperimentOutlined,
CodeOutlined,
BankOutlined
} from '@ant-design/icons-vue'
import NavbarModerno from '../components/nabvar.vue'
import FooterModerno from '../components/footer.vue'
// Estado
const facultadActiva = ref('1')
const preinscripcionModalVisible = ref(false)
// Otras convocatorias
const otrasConvocatorias = ref([
{
id: 1,
titulo: 'Admisión Extraordinaria',
fecha: '5 - 15 Ene 2024',
descripcion: 'Para postulantes con talentos especiales',
estado: 'Próximamente',
estadoColor: 'orange'
},
{
id: 2,
titulo: 'Traslado Externo',
fecha: 'Abril 2024',
descripcion: 'Para estudiantes de otras universidades',
estado: 'Cerrado',
estadoColor: 'red'
},
{
id: 3,
titulo: 'Evaluación de Talentos',
fecha: 'Feb 2024',
descripcion: 'Deportistas, artistas y líderes',
estado: 'Próximamente',
estadoColor: 'orange'
}
])
// Facultades y carreras
const facultades = ref([
{
id: '1',
nombre: 'Ciencias de la Salud',
carreras: [
{ id: 1, nombre: 'Medicina Humana', grado: 'Bachiller', descripcion: 'Formación médica integral con prácticas desde primer año', vacantes: 50, puntaje: '1800+', icono: MedicineBoxOutlined },
{ id: 2, nombre: 'Enfermería', grado: 'Bachiller', descripcion: 'Cuidado integral de la salud', vacantes: 60, puntaje: '1500+', icono: UserOutlined }
]
},
{
id: '2',
nombre: 'Ingenierías',
carreras: [
{ id: 3, nombre: 'Ingeniería Civil', grado: 'Bachiller', descripcion: 'Diseño y construcción de infraestructura', vacantes: 80, puntaje: '1700+', icono: BuildOutlined },
{ id: 4, nombre: 'Ingeniería de Sistemas', grado: 'Bachiller', descripcion: 'Desarrollo de software e inteligencia artificial', vacantes: 100, puntaje: '1600+', icono: CodeOutlined }
]
},
{
id: '3',
nombre: 'Derecho y Humanidades',
carreras: [
{ id: 5, nombre: 'Derecho', grado: 'Bachiller', descripcion: 'Formación jurídica integral', vacantes: 120, puntaje: '1550+' },
{ id: 6, nombre: 'Psicología', grado: 'Bachiller', descripcion: 'Ciencias del comportamiento humano', vacantes: 70, puntaje: '1450+', icono: UserOutlined }
]
}
])
// Modalidades
const modalidades = ref([
{ id: 1, nombre: 'Admisión Ordinaria', descripcion: 'Examen de conocimientos generales', estado: 'Abierto', estadoColor: 'success', color: '#1890ff', icono: BookOutlined },
{ id: 2, nombre: 'Evaluación de Talentos', descripcion: 'Para deportistas y artistas destacados', estado: 'Próximamente', estadoColor: 'orange', color: '#faad14', icono: TrophyOutlined },
{ id: 3, nombre: 'Traslado Externo', descripcion: 'Estudiantes de otras universidades', estado: 'Cerrado', estadoColor: 'red', color: '#ff4d4f', icono: BankOutlined },
{ id: 4, nombre: 'Segunda Carrera', descripcion: 'Para profesionales graduados', estado: 'Abierto', estadoColor: 'success', color: '#52c41a', icono: ExperimentOutlined }
])
// Noticias
const noticias = ref([
{
id: 1,
titulo: 'Nuevo Laboratorio de Investigación',
descripcion: 'Inauguramos el moderno laboratorio de ciencias con tecnología de punta.',
fecha: '15 Nov 2023',
categoria: 'Infraestructura',
tagColor: 'blue',
imagen: 'https://images.unsplash.com/photo-1532094349884-543bc11b234d?ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=80'
},
{
id: 2,
titulo: 'Convenio Internacional',
descripcion: 'Firmamos acuerdo con universidad europea para intercambio estudiantil.',
fecha: '10 Nov 2023',
categoria: 'Internacional',
tagColor: 'green',
imagen: 'https://images.unsplash.com/photo-1523050854058-8df90110c9f1?ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=80'
},
{
id: 3,
titulo: 'Resultados Publicados',
descripcion: 'Consulta los resultados del examen de admisión extraordinario.',
fecha: '5 Nov 2023',
categoria: 'Resultados',
tagColor: 'red',
imagen: 'https://images.unsplash.com/photo-1562774053-701939374585?ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=80'
}
])
// Métodos
const scrollToConvocatoria = () => {
const element = document.getElementById('convocatorias')
element?.scrollIntoView({ behavior: 'smooth' })
}
const openVirtualTour = () => {
window.open('#', '_blank')
}
const openPreinscripcion = () => {
preinscripcionModalVisible.value = true
}
const showModal = (type) => {
console.log('Mostrar modal:', type)
}
const submitPreinscripcion = () => {
alert('Preinscripción iniciada exitosamente')
preinscripcionModalVisible.value = false
}
</script>
<style scoped>
/* Todos los estilos del contenido principal van aquí */
/* (Copiar todos los estilos del original excepto los del header y footer) */
/* Hero Moderno */
.modern-hero {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 80px 0;
}
.hero-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 24px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: center;
}
.hero-tag {
background: rgba(255, 255, 255, 0.2);
border: none;
color: white;
margin-bottom: 24px;
}
.hero-title {
font-size: 3.5rem;
font-weight: 800;
line-height: 1.1;
margin-bottom: 24px;
}
.gradient-text {
background: linear-gradient(45deg, #ffd700, #ff6b6b);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-subtitle {
font-size: 1.25rem;
opacity: 0.9;
margin-bottom: 32px;
line-height: 1.6;
}
.hero-actions {
display: flex;
gap: 16px;
}
.cta-button {
background: white;
border: none;
color: #1a237e;
font-weight: 600;
}
.secondary-button {
background: transparent;
border: 2px solid rgba(255, 255, 255, 0.3);
color: white;
}
.floating-card {
background: white;
color: #333;
padding: 24px;
border-radius: 12px;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
}
.card-header {
display: flex;
align-items: center;
gap: 8px;
color: #666;
margin-bottom: 16px;
}
/* Secciones comunes */
.section-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 24px;
}
.section-header {
text-align: center;
margin-bottom: 60px;
}
.section-title {
font-size: 2.5rem;
font-weight: 700;
color: #1a237e;
margin-bottom: 16px;
}
.section-subtitle {
font-size: 1.125rem;
color: #666;
max-width: 600px;
margin: 0 auto;
}
.header-with-badge {
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
}
.new-badge :deep(.ant-badge-count) {
background: linear-gradient(45deg, #ff6b6b, #ffd700);
box-shadow: 0 2px 8px rgba(255, 107, 107, 0.3);
}
/* Proceso */
.process-section {
padding: 80px 0;
background: #f8f9fa;
}
.modern-steps {
max-width: 800px;
margin: 0 auto;
}
.modern-steps :deep(.ant-steps-item-title) {
font-weight: 600;
}
/* Convocatorias */
.convocatorias-modern {
padding: 80px 0;
}
.convocatorias-grid {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 24px;
}
@media (max-width: 768px) {
.convocatorias-grid {
grid-template-columns: 1fr;
}
}
.main-convocatoria-card {
position: relative;
border: none;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
border-radius: 16px;
padding: 32px;
}
.card-badge {
position: absolute;
top: -12px;
left: 24px;
background: linear-gradient(45deg, #1890ff, #52c41a);
color: white;
padding: 6px 16px;
border-radius: 20px;
font-size: 0.75rem;
font-weight: 600;
}
.convocatoria-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 20px;
}
.convocatoria-header h3 {
margin: 0;
font-size: 1.5rem;
color: #1a237e;
}
.convocatoria-date {
color: #666;
margin: 8px 0 0;
}
.status-tag {
font-weight: 600;
padding: 4px 12px;
border-radius: 20px;
}
.convocatoria-desc {
color: #666;
line-height: 1.6;
margin-bottom: 24px;
}
.custom-divider {
margin: 24px 0;
}
.action-buttons-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 12px;
margin-top: 16px;
}
.action-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
height: 48px;
}
.preinscripcion-section {
display: flex;
justify-content: space-between;
align-items: center;
gap: 24px;
}
.preinscripcion-info h4 {
margin: 0 0 8px;
color: #1a237e;
}
.preinscripcion-btn {
background: linear-gradient(135deg, #1a237e 0%, #283593 100%);
border: none;
height: 56px;
font-weight: 600;
}
.secondary-convocatoria-card {
border: none;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
border-radius: 12px;
}
.card-footer {
display: flex;
justify-content: space-between;
margin-top: 20px;
}
/* Programas */
.programas-section {
padding: 80px 0;
background: #f8f9fa;
}
.facultades-tabs :deep(.ant-tabs-nav) {
margin-bottom: 40px;
}
.carreras-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 24px;
}
.carrera-card {
border: none;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
border-radius: 12px;
transition: transform 0.3s ease;
}
.carrera-card:hover {
transform: translateY(-4px);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
}
.carrera-header {
display: flex;
gap: 16px;
align-items: center;
margin-bottom: 16px;
}
.carrera-icon {
background: linear-gradient(135deg, #1a237e 0%, #283593 100%);
color: white;
width: 48px;
height: 48px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
}
.carrera-header h4 {
margin: 0;
color: #1a237e;
}
.carrera-grado {
color: #666;
font-size: 0.875rem;
margin: 4px 0 0;
}
.carrera-desc {
color: #666;
font-size: 0.875rem;
line-height: 1.5;
margin-bottom: 16px;
}
.carrera-stats {
display: flex;
justify-content: space-between;
color: #666;
font-size: 0.875rem;
margin-bottom: 16px;
}
.carrera-link {
color: #1890ff;
font-weight: 500;
}
/* Estadísticas */
.stats-section {
padding: 60px 0;
background: linear-gradient(135deg, #1a237e 0%, #283593 100%);
color: white;
}
.stats-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 40px;
text-align: center;
}
.stat-card h3 {
font-size: 3rem;
font-weight: 800;
margin: 0;
background: linear-gradient(45deg, #ffd700, #ff6b6b);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.stat-card p {
font-size: 1rem;
opacity: 0.9;
margin: 8px 0 0;
}
/* Noticias */
.noticias-modern {
padding: 80px 0;
}
.view-all {
color: #1890ff;
font-weight: 500;
}
.noticias-grid-modern {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 32px;
}
.noticia-card-modern {
border: none;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
transition: transform 0.3s ease;
}
.noticia-card-modern:hover {
transform: translateY(-4px);
}
.noticia-image {
height: 200px;
background-size: cover;
background-position: center;
position: relative;
}
.noticia-tag {
position: absolute;
top: 16px;
left: 16px;
border: none;
font-weight: 500;
}
.noticia-content {
padding: 24px;
}
.noticia-meta {
display: flex;
align-items: center;
gap: 8px;
color: #666;
font-size: 0.875rem;
margin-bottom: 12px;
}
.noticia-content h4 {
margin: 0 0 12px;
color: #1a237e;
font-size: 1.125rem;
}
.noticia-content p {
color: #666;
line-height: 1.5;
margin-bottom: 16px;
}
/* Modalidades */
.modalidades-section {
padding: 80px 0;
background: #f8f9fa;
}
.modalidades-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 24px;
}
.modalidad-card {
border: none;
border-radius: 12px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
text-align: center;
padding: 32px 24px;
transition: transform 0.3s ease;
}
.modalidad-card:hover {
transform: translateY(-4px);
}
.modalidad-icon {
width: 64px;
height: 64px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 20px;
color: white;
font-size: 28px;
}
.modalidad-card h4 {
margin: 0 0 12px;
color: #1a237e;
}
.modalidad-card p {
color: #666;
font-size: 0.875rem;
line-height: 1.5;
margin-bottom: 16px;
}
.modalidad-status {
font-weight: 500;
padding: 4px 16px;
border-radius: 20px;
}
/* Contacto */
.contact-section {
padding: 80px 0;
}
.contact-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: start;
}
.contact-subtitle {
color: #666;
font-size: 1.125rem;
margin-bottom: 40px;
}
.contact-methods {
display: flex;
flex-direction: column;
gap: 24px;
}
.contact-method {
display: flex;
align-items: center;
gap: 16px;
}
.contact-method svg {
color: #1890ff;
font-size: 24px;
}
.contact-method h4 {
margin: 0 0 4px;
color: #1a237e;
}
.contact-method p {
margin: 0;
color: #666;
}
.contact-form {
background: white;
padding: 40px;
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
}
.contact-form h3 {
margin: 0 0 32px;
color: #1a237e;
}
/* Modal Moderno */
.modern-modal :deep(.ant-modal-content) {
border-radius: 16px;
overflow: hidden;
}
.modern-modal :deep(.ant-modal-header) {
border-bottom: none;
padding: 32px 32px 0;
}
.modern-modal :deep(.ant-modal-body) {
padding: 32px;
}
.modern-modal :deep(.ant-modal-title) {
font-size: 1.5rem;
font-weight: 600;
color: #1a237e;
}
.modal-steps {
margin-bottom: 32px;
}
.modal-form h3 {
margin: 0 0 24px;
color: #1a237e;
}
.modal-actions {
display: flex;
gap: 12px;
justify-content: flex-end;
margin-top: 32px;
}
/* Responsive */
@media (max-width: 992px) {
.hero-container {
grid-template-columns: 1fr;
text-align: center;
gap: 48px;
}
.hero-title {
font-size: 2.5rem;
}
.contact-grid {
grid-template-columns: 1fr;
gap: 48px;
}
.hero-actions {
flex-direction: column;
}
.section-title {
font-size: 2rem;
}
}
@media (max-width: 768px) {
.hero-title {
font-size: 2rem;
}
.preinscripcion-section {
flex-direction: column;
text-align: center;
}
}
</style>