// src/pages-rest.jsx — Formación, SNDE, Admisión, TNDE /* ═══════════════════════════════════════════════════════════ FORMACIÓN CONTINUA (redirige a Metadidactas) ═══════════════════════════════════════════════════════════ */ const FormacionPage = ({ setPage }) => { const { t, lang } = useLang(); return (
{t('Educación Continua', 'Continuing education')}

{t('Aprende a ', 'Learn to ')}{t('enseñar', 'teach')}{t(' debate', ' debate')}

Metadidactas{t(', la consultora de la LPDE, gestiona nuestra oferta de educación continua. La Liga ofrece cursos de especialización en debate desde hace casi una década.', ', the LPDE’s consultancy, runs our continuing education offering. The League has taught specialized debate courses for nearly a decade.')}

{/* Featured banner */}
{t('Programa estrella', 'Flagship program')}

{t('Programa de Formación de ', 'Training Program for ')}{t('Entrenadores de Debate', 'Debate Coaches')}.

{t('Formación estructurada en las metodologías para entrenar debate escolar competitivo en formato WSDC: análisis de mociones, construcción de casos, discursos y planificación de entrenamientos. Para docentes y entrenadores, sean o no miembros de la Liga.', 'Structured training in the methodologies for coaching competitive school debate in the WSDC format: motion analysis, case building, speeches and practice planning. For teachers and coaches, whether or not their school is a League member.')}

{t('Sesiones', 'Sessions')}
{t('Módulos', 'Modules')}
WSDC
{t('Formato', 'Format')}
{t('Sesión
{/* Course catalogue */}
{t('Catálogo 2026', '2026 Catalog')}

{t('Otros programas y nuestras áreas de formación.', 'Other programs and our training areas.')}

{[ { kind: 'program', status: 'Convocatoria abierta', status_en: 'Enrollment open', open: true, title: 'Habilidades del debate para la vida escolar', title_en: 'Debate Skills for School Life', sub: '4ta edición', sub_en: '4th edition', desc: 'Técnicas de debate académico aplicadas a la vida escolar: exposiciones, investigaciones y evaluaciones orales.', desc_en: 'Academic debate techniques applied to everyday school life: presentations, research projects and oral assessments.', meta: 'Escolares 13–17 · 8 sesiones · Virtual', meta_en: 'Students 13–17 · 8 sessions · Online', href: 'https://lpdebate.org/debate-para-vida-escolar-4taed/' }, { kind: 'program', status: 'Convocatoria abierta', status_en: 'Enrollment open', open: true, title: 'Un mundo en conflicto: Relaciones Internacionales', title_en: 'A World in Conflict: International Relations', sub: 'FiloNautas · Ciencia Política · Curso 1', sub_en: 'FiloNautas · Political Science · Course 1', desc: 'Introducción a las Relaciones Internacionales: analiza conflictos, alianzas y crisis con las grandes teorías. Parte de cuatro cursos temáticos e independientes que, juntos, ofrecen una introducción completa a la Ciencia Política y las Relaciones Internacionales.', desc_en: 'An introduction to International Relations: analyze conflicts, alliances and crises through the major theories. Part of four stand-alone thematic courses that, together, offer a complete introduction to Political Science and International Relations.', meta: 'Estudiantes 15–18 · 8 semanas · Virtual', meta_en: 'Students 15–18 · 8 weeks · Online', href: 'https://lpdebate.org/filonautas/cursos/relaciones-internacionales/' }, { kind: 'program', status: 'Próxima edición · fecha TBA', status_en: 'Next edition · date TBA', open: false, title: 'Iniciación al Debate Competitivo', title_en: 'Introduction to Competitive Debate', sub: 'Formato WSDC', sub_en: 'WSDC format', desc: 'Taller práctico que desarrolla comunicación, pensamiento crítico y argumentación en formato WSDC.', desc_en: 'A hands-on workshop that builds communication, critical thinking and argumentation in the WSDC format.', meta: 'Escolares de secundaria · 12 sesiones · Virtual', meta_en: 'Secondary students · 12 sessions · Online', href: 'https://lpdebate.org/iniciacion-debate-competitivo/' }, { kind: 'program', status: 'Convocatoria abierta', status_en: 'Enrollment open', open: true, title: 'Gestores de talleres de debate', title_en: 'Managing School Debate Programs', sub: 'Nuevo programa · 1ra edición', sub_en: 'New program · 1st edition', desc: 'Capacitación para crear y dirigir talleres, clubes y selecciones de debate escolar: planificación, proyectos educativos, organización de torneos y comunicación.', desc_en: 'Training to create and lead school debate clubs, workshops and teams: planning, educational projects, tournament organization and communication.', meta: 'Docentes y gestores · 18 sesiones · Virtual', meta_en: 'Teachers · 18 sessions · Online', go: 'gestores' }, { kind: 'free', status: 'Acceso libre', status_en: 'Open access', title: 'Área de formación gratuita', title_en: 'Free training resources', desc: 'Manuales, guías y la revista Dialógica: recursos abiertos para cualquier estudiante o docente, sin costo.', desc_en: 'Handbooks, guides and Dialógica magazine: open resources for any student or teacher, free of charge.', meta: 'Ver materiales', meta_en: 'View materials', go: 'publicaciones' }, { kind: 'members', status: 'Miembros LPDE', status_en: 'LPDE members', title: 'Formación para colegios miembros', title_en: 'Training for member schools', desc: 'Plataforma privada con seminarios, talleres y material descargable. Acceso con la cuenta del colegio miembro.', desc_en: 'A private platform with seminars, workshops and downloadable materials. Log in with your member school account.', meta: 'Acceder', meta_en: 'Log in', go: 'colegios-miembros' }, ].map((c, i) => { const dark = c.kind === 'members'; const cream = c.kind === 'free'; const external = !c.go && c.href && c.href !== '#'; const internal = !!c.go; const handleInternal = (e) => { e.preventDefault(); if (c.go === 'publicaciones') { setPage('noticias'); // Esperar a que React monte NoticiasPage antes de hacer scroll setTimeout(() => { const el = document.getElementById('publicaciones'); if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, 120); } else { setPage(c.go); window.scrollTo({ top: 0, behavior: 'smooth' }); } }; const internalHref = c.go === 'publicaciones' ? '#publicaciones' : '#'; return ( { e.currentTarget.style.transform = 'translateY(-4px)'; e.currentTarget.style.boxShadow = '0 16px 40px rgba(0,0,0,0.08)'; }} onMouseLeave={(e) => { e.currentTarget.style.transform = 'translateY(0)'; e.currentTarget.style.boxShadow = 'none'; }} >
{lang === 'en' && c.status_en ? c.status_en : c.status}

{lang === 'en' && c.title_en ? c.title_en : c.title}

{c.sub &&
{lang === 'en' && c.sub_en ? c.sub_en : c.sub}
}

{lang === 'en' && c.desc_en ? c.desc_en : c.desc}

{lang === 'en' && c.meta_en ? c.meta_en : c.meta}
); })}
{/* Big CTA — redirect to Metadidactas */}
{t('Metadidactas · consultora de la LPDE', 'Metadidactas · the LPDE’s consultancy')}

{t('Toda la oferta vive en ', 'Our full catalog lives on ')}Metadidactas.

{t('La plataforma de formación de Metadidactas, la consultora de la LPDE. Inscripciones, clases, materiales y certificados en un mismo lugar.', 'The training platform of Metadidactas, the LPDE’s consultancy. Enrollment, classes, materials and certificates, all in one place.')}

{t('Ir a Metadidactas', 'Go to Metadidactas')}
); }; /* ═══════════════════════════════════════════════════════════ CURSO · GESTORES DE TALLERES DE DEBATE ═══════════════════════════════════════════════════════════ */ const GESTORES_FORM_URL = 'https://docs.google.com/forms/d/e/1FAIpQLSfndNleL9sr_kkXZcN8knBvCzQTXJXn9ZtXIkiW3jD9miqmzg/viewform?usp=header'; const GESTORES_MODULOS = [ { code: 'FF I', title: 'Fundamentos del formato WSDC', title_en: 'Foundations of the WSDC Format', intro: 'La lógica, los roles y las mociones del formato World Schools Debating Championship: el lenguaje común del circuito escolar.', intro_en: 'The logic, roles and motions of the World Schools Debating Championship format: the common language of the school debate circuit.', sesiones: [ { n: 1, title: 'Lógica del formato WSDC', title_en: 'The Logic of the WSDC Format', resp: 'Luis Valverde', desc: '¿Qué lógica ordena el formato del World Schools Debating Championship (WSDC)? Aprenderás a guiar un debate en WSDC y conocerás estrategias para enseñar a debatir en este formato.', desc_en: 'What logic governs the World Schools Debating Championship (WSDC) format? You will learn to guide a WSDC debate and pick up strategies for teaching students to debate in this format.' }, { n: 2, title: 'Tipos de orador y sus funciones en WSDC', title_en: 'Speaker Roles and Their Duties in WSDC', resp: 'Luis Valverde', desc: 'Cada orador tiene tareas específicas, pero, como equipo, todos comparten misiones en común. Veremos las funciones de cada orador, sus limitaciones y alcances, y cómo interactúan dentro de un mismo equipo.', desc_en: 'Each speaker has specific tasks, yet, as a team, they all share common goals. We will cover each speaker’s duties, their limits and scope, and how they interact within a single team.' }, { n: 3, title: 'Mociones en el formato WSDC', title_en: 'Motions in the WSDC Format', resp: 'Luis Valverde', desc: 'Las mociones presentan características que permiten el correcto desarrollo del debate —balance, desafío y claridad— y reglas que limitan la naturaleza de la argumentación. Las entenderemos en profundidad para orientar a un equipo de debate.', desc_en: 'Motions have features that allow a debate to unfold properly — balance, challenge and clarity — and rules that constrain the nature of the argumentation. We will examine them in depth so you can guide a debate team.' }, ], }, { code: 'PO', title: 'Planificación y Organización', title_en: 'Planning and Organization', intro: 'Del enfoque pedagógico al proyecto concreto: justificar, programar y redactar los documentos que dan vida a una sociedad de debate.', intro_en: 'From pedagogical approach to concrete project: justifying, scheduling and drafting the documents that bring a debate society to life.', sesiones: [ { n: 4, title: 'Debate competitivo y debate formativo', title_en: 'Competitive and Formative Debate', resp: 'Felipe Zenteno', desc: 'El debate puede desarrollarse de forma competitiva o formativa. Ambos enfoques no son mutuamente excluyentes, pero tienen estructuras y prioridades distintas. Se presentan ambos modelos, sus ventajas, desventajas y oportunidades.', desc_en: 'Debate can be run competitively or formatively. The two approaches are not mutually exclusive, but they have different structures and priorities. We present both models, with their advantages, drawbacks and opportunities.' }, { n: 5, title: 'Justificación pedagógica', title_en: 'The Pedagogical Case for Debate', resp: 'Dante León', desc: 'Cuando se presentan proyectos de debate a espacios de gestión (la dirección del colegio, una UGEL o DRE) se exige una justificación de la actividad. ¿Por qué hacer debate? ¿Qué justificaciones tenemos? ¿Cómo presentar la mejor justificación posible?', desc_en: 'When debate projects are presented to decision-makers (school leadership or a local or regional education authority), a justification of the activity is required. Why do debate? What justifications do we have? How do we make the strongest possible case?' }, { n: 6, title: 'Programación y contratación', title_en: 'Curriculum Planning and Hiring', resp: 'Sofía Pacheco', desc: 'Guías para la macroprogramación curricular de debate, con indicadores de éxito en la planificación. Además, los requisitos y formas de evaluación de entrenadores de debate para la contratación de formadores en las instituciones educativas.', desc_en: 'Guidelines for the long-range curricular planning of debate, with success indicators for the planning stage. Plus the requirements and assessment methods schools use when hiring debate coaches.' }, { n: 7, title: 'Normas de convivencia en debate escolar', title_en: 'Community Standards in School Debate', resp: 'Felipe Zenteno', desc: 'La construcción de normas importa por la sana convivencia en entornos competitivos y la formación de comunidad. Se presentan lineamientos éticos del debate escolar con el objetivo de construir comunidades que debaten.', desc_en: 'Building shared norms matters: it sustains healthy coexistence in competitive environments and builds community. We present ethical guidelines for school debate aimed at building communities that debate.' }, { n: 8, title: 'Modelos de liderazgo', title_en: 'Leadership Models', resp: 'Dante León', desc: 'Parte de crecer en debate es construir líderes: estudiantes que toman decisiones, guían a otros y crecen en comunidad. Modelos de liderazgo enfocados en los perfiles que el debate construye: capitanías o directivas, jueces o retroalimentadores.', desc_en: 'Part of growing in debate is building leaders: students who make decisions, guide others and grow in community. Leadership models focused on the profiles debate develops: captains and student boards, adjudicators and feedback-givers.' }, { n: 9, title: 'Proyectos educativos en debate I', title_en: 'Educational Debate Projects I', resp: 'Sofía Pacheco', desc: 'Análisis de proyectos educativos en debate: su estructura y los criterios para evaluarlos. Nos enfocamos en la redacción de proyectos que buscan constituir una sociedad, club o taller extracurricular de debate dentro de la institución educativa.', desc_en: 'An analysis of educational debate projects: their structure and the criteria for evaluating them. We focus on drafting projects that establish a debate society, club or extracurricular workshop within the school.' }, { n: 10, title: 'Proyectos educativos en debate II', title_en: 'Educational Debate Projects II', resp: 'Sofía Pacheco', desc: 'Continuación de la sesión anterior: redacción de proyectos de debate como torneos, encuentros amistosos y proyectos sociales de debate.', desc_en: 'A continuation of the previous session: drafting debate projects such as tournaments, friendly meets and debate-based outreach projects.' }, ], }, { code: 'DC', title: 'Dirección y Control', title_en: 'Management and Oversight', intro: 'La operación diaria de una sociedad de debate: admisiones, torneos, monitoreo, comunicación, viajes y contextos virtuales.', intro_en: 'The day-to-day operation of a debate society: admissions, tournaments, monitoring, communication, travel and online settings.', sesiones: [ { n: 11, title: 'Procesos de admisión', title_en: 'Admissions Processes', resp: 'Sofía Pacheco', desc: 'Las metodologías para incorporar nuevos miembros a las sociedades de debate son diversas: torneo interno, pruebas de evaluación o debates. Se exponen estas metodologías, sus ventajas, desventajas y oportunidades.', desc_en: 'There are many methodologies for bringing new members into a debate society: internal tournaments, assessment tests or tryout debates. We lay out these methodologies with their advantages, drawbacks and opportunities.' }, { n: 12, title: 'Esquema de un torneo', title_en: 'Anatomy of a Tournament', resp: 'Luis Valverde', desc: 'El proceso de inscripción y participación en un torneo de debate: las fases de un torneo, los principales focos de atención durante la competencia y el acompañamiento ronda a ronda.', desc_en: 'The process of registering for and competing in a debate tournament: the phases of a tournament, the main points of attention during competition and round-by-round support.' }, { n: 13, title: 'Organización de torneos', title_en: 'Organizing Tournaments', resp: 'Dante León', desc: 'Parte de ser gestor es organizar torneos: internos, intersedes o abiertos al público. Repasamos los equipos y el flujo de trabajo para organizar un torneo, y las condiciones de calidad de un torneo de debate escolar.', desc_en: 'Part of being a program manager is organizing tournaments: internal, inter-campus or open to the public. We review the teams and workflow needed to run a tournament, and the quality standards of a school debate tournament.' }, { n: 14, title: 'Amistoso y debate de muestra', title_en: 'Friendly Meets and Showcase Debates', resp: 'Felipe Zenteno', desc: 'Las actividades en debate escolar no se agotan en lo competitivo. Construiremos espacios de aprendizaje con lógica pedagógica y deportiva, y veremos el debate de muestra como forma de evidenciar el aprendizaje ante la comunidad educativa.', desc_en: 'School debate activities go beyond competition. We will design learning spaces with both pedagogical and sporting logic, and explore the showcase debate as a way of making learning visible to the school community.' }, { n: 15, title: 'Herramientas de monitoreo y toma de decisiones', title_en: 'Monitoring and Decision-Making Tools', resp: 'Dante León', desc: '¿Cómo seleccionar a qué torneos ir? ¿Con cuánto tiempo preparar un torneo? ¿Cómo sé que mi equipo está creciendo? Herramientas para la gestión de un club o selección, cómo presentar avances y qué indicadores usar para monitorear el desempeño.', desc_en: 'How do you choose which tournaments to attend? How far ahead should you prepare? How do you know your team is growing? Tools for managing a club or team, how to report progress and which indicators to use to monitor performance.' }, { n: 16, title: 'Comunicación interna y externa', title_en: 'Internal and External Communication', resp: 'Felipe Zenteno', desc: '¿Cómo posicionar el debate como una actividad relevante para la comunidad educativa? Proyectos de visibilización del aprendizaje de forma interna (profesores, alumnos y colegas) y externa (otros estudiantes, familias e interesados).', desc_en: 'How do you position debate as a relevant activity for the school community? Projects for making learning visible internally (teachers, students and colleagues) and externally (other students, families and prospective members).' }, { n: 17, title: 'Planificación de viajes', title_en: 'Planning Debate Travel', resp: 'Sofía Pacheco', desc: 'El panorama de oportunidades de viajes académicos del circuito de debate, junto con los lineamientos y particularidades de los viajes de debate, distintos de los viajes de estudio regulares de los colegios.', desc_en: 'The landscape of academic travel opportunities on the debate circuit, along with the guidelines and particularities of debate trips, which differ from schools’ regular study trips.' }, { n: 18, title: 'Contextos virtuales', title_en: 'Online Settings', resp: 'Luis Valverde', desc: 'El circuito tiene torneos virtuales, presenciales o híbridos. Se exponen las principales herramientas que se usan en estos eventos, así como los protocolos y reglas de comportamiento durante los eventos virtuales de debate.', desc_en: 'The circuit includes online, in-person and hybrid tournaments. We cover the main tools used at these events, as well as the protocols and codes of conduct for online debate events.' }, ], }, ]; // Fechas oficiales por sesión (martes, 7:00–9:00 p. m.) — calendario 2026 confirmado const GESTORES_FECHAS = { 1: ['21 jul', 'Jul 21'], 2: ['4 ago', 'Aug 4'], 3: ['18 ago', 'Aug 18'], 4: ['25 ago', 'Aug 25'], 5: ['1 sep', 'Sep 1'], 6: ['8 sep', 'Sep 8'], 7: ['15 sep', 'Sep 15'], 8: ['22 sep', 'Sep 22'], 9: ['29 sep', 'Sep 29'], 10: ['6 oct', 'Oct 6'], 11: ['20 oct', 'Oct 20'], 12: ['27 oct', 'Oct 27'], 13: ['3 nov', 'Nov 3'], 14: ['10 nov', 'Nov 10'], 15: ['17 nov', 'Nov 17'], 16: ['24 nov', 'Nov 24'], 17: ['1 dic', 'Dec 1'], 18: ['8 dic', 'Dec 8'], }; const GestoresPage = ({ setPage }) => { const { t, lang } = useLang(); const D = window.LPDE_DATA; const [openSesion, setOpenSesion] = React.useState(null); const [perfil, setPerfil] = React.useState(null); // modal de perfil del equipo docente // window.TEAM_EN (definido en pages-main.jsx) traduce role/short cuando lang === 'en' const localizeTeam = (m) => (lang === 'en' && window.TEAM_EN && window.TEAM_EN[m.name]) ? { ...m, ...window.TEAM_EN[m.name] } : m; const facilitadores = ['Felipe Zenteno Pacheco', 'Dante León Saavedra', 'Sofía Pacheco', 'Luis Valverde'] .map((n) => D.team.find((m) => m.name === n)).filter(Boolean).map(localizeTeam); return ( {/* Hero */}
{t('Educación Continua · Nuevo programa', 'Continuing education · New program')}

{t('Programa especializado en ', 'A specialized program in ')}{t('gestión de proyectos', 'debate project management')}{t(' de debate escolar', ' for schools')}

{t('Un programa para docentes, coordinadores y gestores que dirigen —o quieren crear— un taller, club o selección de debate en su institución educativa. Desde la lógica del formato WSDC hasta la organización de torneos, los proyectos educativos y la comunicación del aprendizaje.', 'A program for teachers, coordinators and program managers who lead — or want to start — a debate club, workshop or team at their school. From the logic of the WSDC format to tournament organization, educational projects and communicating what students learn.')}

{t('Inscríbete ahora', 'Enroll now')}
{t('Del 21 de julio al 8 de diciembre de 2026', 'July 21 – December 8, 2026')}
{/* Datos clave */}
{[ { num: , label: t('Sesiones', 'Sessions') }, { num: , label: t('Módulos', 'Modules') }, { num: t('Martes', 'Tuesdays'), label: t('7:00 – 9:00 p. m.', '7:00 – 9:00 p.m.'), it: true }, { num: t('Virtual', 'Online'), label: t('100% en línea', '100% online'), it: true }, { num: 'S/ 490', label: t('Público general', 'General public') }, ].map((s, i) => (
{s.num}
{s.label}
))}
{/* Para quién */}
{t('¿Para quién es este curso?', 'Who is this course for?')}

{t('Para quienes hacen que el debate ', 'For the people who make debate ')}{t('ocurra', 'happen')}.

{t('Detrás de cada equipo de debate hay alguien que planifica, justifica el proyecto ante la dirección, organiza torneos y sostiene la comunidad. Este curso está dedicado a ese rol: el gestor. No necesitas experiencia previa en debate competitivo — el programa parte desde el nivel principiante.', 'Behind every debate team there is someone who plans, makes the case to school leadership, organizes tournaments and sustains the community. This course is devoted to that role: the program manager. No prior experience in competitive debate is required — the program starts at beginner level.')}

{t('¿Lo tuyo es preparar equipos para competir —casos, discursos, adjudicación—? Ese es nuestro ', 'Is your focus preparing teams to compete — cases, speeches, adjudication —? That’s our ')}{t('Programa de Formación de Entrenadores de Debate', 'Training Program for Debate Coaches')}.

{[ t('Docentes que dirigen o quieren fundar un taller o club de debate', 'Teachers who run or want to found a debate club or workshop'), t('Coordinadores académicos y de actividades extracurriculares', 'Academic and extracurricular activities coordinators'), t('Directivos que evalúan incorporar el debate a su institución', 'School leaders weighing whether to bring debate to their institution'), t('Entrenadores que asumen la gestión integral de su sociedad de debate', 'Coaches taking on the full management of their debate society'), ].map((t, i) => (
{t}
))}
{/* Contenido: módulos y sesiones */}
{t('Contenido del programa', 'Program content')}

{t('18 sesiones en 3 módulos, de los fundamentos a la gestión completa.', '18 sessions across 3 modules, from the fundamentals to full program management.')}

{GESTORES_MODULOS.map((mod, mi) => (
{t('Módulo', 'Module')} {mi + 1} · {mod.sesiones.length} {t('sesiones', 'sessions')}

{lang === 'en' && mod.title_en ? mod.title_en : mod.title}

{lang === 'en' && mod.intro_en ? mod.intro_en : mod.intro}

{mod.sesiones.map((s) => { const open = openSesion === s.n; return (
{open && (

{lang === 'en' && s.desc_en ? s.desc_en : s.desc}

{t('Dicta', 'Taught by')} · {s.resp} {GESTORES_FECHAS[s.n] && <>  ·  {t('Martes ', 'Tuesday, ')}{lang === 'en' ? GESTORES_FECHAS[s.n][1] : GESTORES_FECHAS[s.n][0]} · 7:00–9:00 p.m.}
)}
); })}
))}
{/* Facilitadores */}
{t('Equipo docente', 'Teaching team')}

{t('Cuatro gestores con años en el circuito.', 'Four program managers with years on the circuit.')}

{/* Mismas tarjetas que la página Equipo: clic → modal con el perfil completo */}
{facilitadores.map((f, i) => ( setPerfil(f)} /> ))}
setPerfil(null)} />
{/* Inversión + CTA final */}
{t('Convocatoria abierta', 'Enrollment open')}

{t('Reserva tu lugar en la ', 'Reserve your spot in the ')}{t('primera edición', 'first edition')}.

{[ [t('Inicio', 'Starts'), t('Martes 21 de julio de 2026', 'Tuesday, July 21, 2026')], [t('Cierre', 'Ends'), t('Martes 8 de diciembre de 2026', 'Tuesday, December 8, 2026')], [t('Horario', 'Schedule'), t('Martes de 7:00 a 9:00 p. m.', 'Tuesdays, 7:00 to 9:00 p.m.')], [t('Modalidad', 'Format'), t('Virtual · sesiones en vivo los martes', 'Online · live sessions on Tuesdays')], [t('Nivel', 'Level'), t('Principiantes · no requiere experiencia previa', 'Beginner-friendly · no prior experience required')], ].map(([k, v]) => (
{k} {v}
))}
{t('Categorías de inscripción', 'Enrollment categories')}
{[ { nombre: t('Público general', 'General public'), desc: t('Docentes de colegios NO miembros de la LPDE.', 'Teachers from schools that are NOT LPDE members.'), precio: 'S/ 490', }, { nombre: t('Miembros LPDE', 'LPDE members'), desc: <>{t('Docentes de colegios miembros de la LPDE 2025 y 2026 (revisa si tu colegio es miembro ', 'Teachers from LPDE member schools 2025 and 2026 (check if your school is a member ')} { e.preventDefault(); setPage('colegios'); }} href="#" style={{ color: 'var(--red)', fontWeight: 600, cursor: 'pointer' }}>{t('aquí', 'here')}{t(').', ').')}, precio: 'S/ 440', }, { nombre: t('Antiguos alumnos', 'Alumni'), desc: t('Docentes que llevaron las versiones anteriores del programa de entrenadores (2019–24) o gestores, lo hayan finalizado o no, y sean o no miembros LPDE.', 'Teachers who took previous editions of the coaches or program managers program (2019–24), whether or not they finished it, and whether or not they are LPDE members.'), precio: 'S/ 410', }, { nombre: t('Inscripción corporativa', 'Corporate enrollment'), desc: <>{t('Para 3 o más docentes, sean miembros de la LPDE o no. No te inscribas con el formulario: escríbenos a ', 'For 3 or more teachers, whether LPDE members or not. Don’t use the enrollment form: write to ')}contacto@lpdebate.org{t(' para explicarte el proceso.', ' and we’ll walk you through the process.')}, precio: 'S/ 410', }, { nombre: t('Extranjeros no residentes', 'Non-resident foreigners'), desc: t('Para participantes que no se encuentran en el Perú.', 'For participants who are not in Peru.'), precio: 'USD 170', }, ].map((c, i) => (
{c.nombre}
{c.desc}
{c.precio}
))}

{t('Los precios no incluyen IGV: si requieres factura, se añade el 18%.', 'Prices do not include IGV (Peruvian VAT): if you need an invoice, 18% is added.')}

{[t('18 sesiones en vivo con el equipo LPDE', '18 live sessions with the LPDE team'), t('Materiales y formatos de gestión descargables', 'Downloadable materials and management templates'), t('Certificación sujeta a asistencia mínima', 'Certificate subject to minimum attendance')].map((item, i) => (
{item}
))}
{t('Ir al formulario de inscripción', 'Go to the enrollment form')}
{/* Modalidades de pago — misma información bancaria y links que entrenadores-wsdc */}
{t('Modalidades de pago', 'Payment methods')}

{t('Tres formas de pagar tu inscripción.', 'Three ways to pay for your enrollment.')}

{[ { titulo: t('Depósito o transferencia', 'Deposit or bank transfer'), lineas: [ [t('Banco', 'Bank'), 'Interbank'], [t('Cuenta', 'Account'), '200-3005217677'], [t('Titular', 'Holder'), 'METADIDACTAS SAC'], [t('CCI (interbancaria)', 'CCI (interbank code)'), '003-200-003005217677-30'], ], }, { titulo: 'Yape', lineas: [ [t('Número', 'Number'), '947 357 797'], [t('Titular', 'Holder'), 'Raí Dante León Saavedra'], ], }, { titulo: t('Tarjeta de débito o crédito', 'Debit or credit card'), lineas: [ [t('Pasarela', 'Gateway'), 'MercadoPago'], [t('Cuotas', 'Installments'), t('Pago directo o hasta 3 cuotas sin intereses', 'One-time payment or up to 3 interest-free installments')], ], nota: t('Usa los links según tu categoría ↓', 'Use the links for your category ↓'), }, ].map((m, i) => (
{String(i + 1).padStart(2, '0')}

{m.titulo}

{m.lineas.map(([k, v]) => (
{k} {v}
))}
{m.nota &&

{m.nota}

}
))}
{/* Links de MercadoPago por categoría */}

{t('La inscripción corporativa y los extranjeros no residentes también pueden pagar con tarjeta: escríbenos a ', 'Corporate enrollments and non-resident foreigners can also pay by card: write to ')}contacto@lpdebate.org{t(' y te generamos un link especial.', ' and we’ll generate a special link for you.')}

{t('Una vez realizado el pago, adjunta el comprobante en el formulario de inscripción. Si tienes alguna complicación con el formulario, envía la captura a contacto@lpdebate.org con el asunto PAGO PROGRAMA FORMACIÓN DEBATE, indicando tus nombres y apellidos, el colegio en el que laboras (o si eres independiente) y tu especialidad.', 'Once you have paid, attach the receipt to the enrollment form. If you have any trouble with the form, send a screenshot to contacto@lpdebate.org with the subject PAGO PROGRAMA FORMACIÓN DEBATE, stating your full name, the school where you work (or that you are independent) and your specialty.')}

{/* Volver a Formación */}
{t('¿Dudas? contacto@lpdebate.org', 'Questions? contacto@lpdebate.org')}
); }; /* ─── TNDE · "Avísame cuando se abra": el mailto lleva lo escrito en el body ─── */ // Web App de consultas (Apps Script): guarda en el Sheet "Consultas LPDE" y // notifica a contacto@lpdebate.org. La comparten el form de Admisión y el del TNDE. const CONSULTAS_WEBAPP_URL = 'https://script.google.com/macros/s/AKfycbxSrnPxbP_8F6MYfG_MDlhD34ayGQUxZOYYC809p-PX4bu-k4r6LGaNNnvijPVOJOUk/exec'; const TndeAvisoForm = ({ email }) => { const { t, lang } = useLang(); const [colegio, setColegio] = React.useState(''); const [profesor, setProfesor] = React.useState(''); const [correo, setCorreo] = React.useState(''); const [busy, setBusy] = React.useState(false); const [status, setStatus] = React.useState(null); const buildMensaje = () => (lang === 'en' ? `School: ${colegio}\nLead teacher: ${profesor}\nSchool email: ${correo}\n\nWe would like to be notified when registration for TNDE 2026 opens.` : `Colegio: ${colegio}\nProfesor responsable: ${profesor}\nCorreo institucional: ${correo}\n\nQueremos recibir el aviso cuando se abran las inscripciones del TNDE 2026.`); const fallbackMailto = () => { const subject = t('Aviso TNDE 2026', 'TNDE 2026 — notify me when registration opens'); window.location.href = `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(buildMensaje())}`; }; const submit = async (e) => { e.preventDefault(); if (!colegio.trim() || !profesor.trim() || !correo.trim()) { setStatus({ kind: 'error', msg: t('Por favor completa colegio, profesor y correo.', 'Please fill in school, teacher and email.') }); return; } if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(correo.trim())) { setStatus({ kind: 'error', msg: t('El correo no tiene un formato válido.', 'That email address doesn’t look valid.') }); return; } setBusy(true); setStatus({ kind: 'ok', msg: t('Enviando…', 'Sending…') }); try { // text/plain para evitar el preflight CORS contra Apps Script (mismo patrón que Admisión) const r = await fetch(CONSULTAS_WEBAPP_URL, { method: 'POST', headers: { 'Content-Type': 'text/plain;charset=utf-8' }, body: JSON.stringify({ nombre: profesor.trim(), correo: correo.trim(), colegio: colegio.trim(), motivo: 'Aviso TNDE 2026', mensaje: buildMensaje(), ua: navigator.userAgent || '', }), redirect: 'follow', }); const data = await r.json().catch(() => ({ ok: false })); if (data && data.ok) { setStatus({ kind: 'ok', msg: t('¡Listo! Te escribiremos en cuanto se publiquen las bases del TNDE 2026.', 'Done! We’ll write to you as soon as the TNDE 2026 rules are published.') }); setColegio(''); setProfesor(''); setCorreo(''); } else { setStatus({ kind: 'warn', msg: t('No pudimos registrar tu solicitud automáticamente. Abriendo tu cliente de correo como respaldo…', 'We couldn’t register your request automatically. Opening your email client as a backup…') }); fallbackMailto(); } } catch (err) { setStatus({ kind: 'warn', msg: t('Sin conexión al servidor. Abriendo tu cliente de correo como respaldo…', 'No connection to the server. Opening your email client as a backup…') }); fallbackMailto(); } finally { setBusy(false); } }; return (

{t('Avísame cuando se abra', 'Notify me when it opens')}

{t('Déjanos el contacto de tu colegio y te escribimos en cuanto se publiquen las bases del TNDE 2026.', 'Leave us your school’s contact details and we’ll write to you as soon as the TNDE 2026 rules are published.')}

setColegio(e.target.value)} style={{ background: 'var(--ink)', borderColor: '#2A2A30', color: '#fff' }} /> setProfesor(e.target.value)} style={{ background: 'var(--ink)', borderColor: '#2A2A30', color: '#fff' }} /> setCorreo(e.target.value)} style={{ background: 'var(--ink)', borderColor: '#2A2A30', color: '#fff' }} /> {status && (

{status.msg}

)}

{t('Nos llegará un correo con tus datos a ', 'We’ll receive an email with your details at ')}{email}.

); }; /* ═══════════════════════════════════════════════════════════ SELECCIÓN NACIONAL (SNDE) ═══════════════════════════════════════════════════════════ */ const SNDEPage = () => { const { t, lang } = useLang(); const D = window.LPDE_DATA; // Roster y cuerpo técnico ocultos hasta tener fotos y perfiles completos (decisión 2026-06-04) const SHOW_SELECCION_PERFILES = false; // Noticias de la Selección ocultas: el contenido actual es demo/placeholder (decisión 2026-06-04) const SHOW_SELECCION_NOTICIAS = false; const [divFilter, setDivFilter] = React.useState('Todos'); const divisions = ['Todos', 'Mayor', 'Junior']; const visible = divFilter === 'Todos' ? D.seleccion : D.seleccion.filter((p) => p.div === divFilter); const initials = (n) => n.split(' ').filter(Boolean).slice(0, 2).map((w) => w[0]).join('').toUpperCase(); return ( {/* Hero — editorial salon de la fama */}
{t('Tricampeones del Mundial Escolar de Debate', 'Three-time champions of the Spanish-language World Schools Debating Championship')}

{t('La Selección', 'The National')}
{t('Nacional', 'Team')}

{t('Nuestros estudiantes representan al Perú cada año en el Mundial Escolar de Debate. Tres títulos consecutivos —Virtual 2023, Panamá 2024, Chile 2025— hablan por sí solos.', 'Our students represent Peru every year at the Spanish-language World Schools Debating Championship (MED). Three consecutive titles — Online 2023, Panama 2024, Chile 2025 — speak for themselves.')}

{t('Sigue a la Selección', 'Follow the National Team')} { e.currentTarget.style.background = 'var(--red)'; e.currentTarget.style.borderColor = 'var(--red)'; }} onMouseLeave={(e) => { e.currentTarget.style.background = 'rgba(255,255,255,0.06)'; e.currentTarget.style.borderColor = 'rgba(255,255,255,0.18)'; }} > @snde.lpde
{/* Trophy timeline */}
{D.titles.map((t, i) =>
MED {t.year}
{t.place}

{t.note}

)}
{/* Qué es la Selección */}
{t('Qué es la Selección', 'About the National Team')}

{t('Una comunidad que vive el debate en ', 'A community that lives debate ')}{t('lo cotidiano', 'day to day')}{t(' y lo celebra, de vez en cuando, en competencia.', ' and celebrates it, every so often, in competition.')}

{t('La Selección Nacional de Debate Escolar (SNDE) es el equipo que representa al Perú en el MED. Nuestros debatientes y un equipo técnico —entrenadores, jueces y team managers— son convocados anualmente tras pruebas abiertas.', 'The National School Debate Team (SNDE) is the squad that represents Peru at the MED. Our debaters and technical staff — coaches, adjudicators and team managers — are selected every year through open trials.')}

{t('La preparación arranca en febrero: tres entrenamientos semanales, dos retiros residenciales, ronda completa de prep simulada con jueces extranjeros. En julio se viaja.', 'Preparation begins in February: three practices a week, two residential retreats, and a full mock prep round with international adjudicators. In July, the team travels.')}

{[{ n: '4', l: t('Años de representación continua', 'Years of continuous representation') }, { n: '2', l: t('Divisiones · junior y mayor', 'Divisions · junior and senior') }, { n: '55', l: t('Oradores activos', 'Active speakers') }].map((x, i) =>
{x.n}
{x.l}
)}
{/* Roster + Cuerpo técnico — se publicarán pronto */} {!SHOW_SELECCION_PERFILES &&
{t('Roster 2026 · Cuerpo técnico', 'Roster 2026 · Technical staff')}

{t('Se publicará ', 'Coming ')}{t('pronto', 'soon')}

{t('Estamos completando los perfiles de nuestros oradores y del cuerpo técnico de la Selección 2026.', 'We are completing the profiles of our speakers and of the 2026 National Team’s technical staff.')}

} {/* Roster */} {SHOW_SELECCION_PERFILES &&
Roster 2026

{divFilter === 'Todos' ? <>Nuestros oradores : <>División {divFilter}}

{divisions.map((dv) => )} {visible.length} oradores
{visible.map((p, i) =>
{e.currentTarget.style.transform = 'translateY(-4px)';e.currentTarget.style.boxShadow = '0 14px 36px rgba(0,0,0,0.08)';}} onMouseLeave={(e) => {e.currentTarget.style.transform = 'translateY(0)';e.currentTarget.style.boxShadow = 'none';}}>
{initials(p.name)} Foto por actualizar
{p.div}

{p.name}

{p.school}
)}
} {/* Cuerpo técnico */} {SHOW_SELECCION_PERFILES &&
Cuerpo técnico

Detrás de cada final, todo un equipo.

Coaches, coordinadores y un director técnico acompañan a la Selección durante los doce meses de preparación, desde las pruebas de noviembre hasta el viaje al Mundial.

Estamos completando los perfiles del cuerpo técnico · 20 integrantes
{D.cuerpoTecnico.map((c, i) => { const pending = c.name === 'Por actualizar'; return (
{e.currentTarget.style.background = 'var(--bg-alt)';}} onMouseLeave={(e) => {e.currentTarget.style.background = 'var(--bg)';}}>
{c.img ? {c.name} : {String(c.n || i + 1).padStart(2, '0')}}
{c.area}

{c.name}

{c.role &&
{c.role}
}

{c.bio}

{c.email ? {c.email} : Correo por actualizar}
); })}
} {/* Noticias de la Selección — oculta (contenido demo) */} {SHOW_SELECCION_NOTICIAS &&
En las noticias

La Selección, por titulares

Ver todas las noticias
{[ { tag: 'MUNDIAL', date: '28 MAR 2026', title: 'Perú confirmado para el WSDC 2026 en Cape Town', excerpt: 'La delegación viajará en julio para defender el título mundial obtenido por tercer año consecutivo.', img: 'https://images.unsplash.com/photo-1521737711867-e3b97375f902?w=1200&auto=format&q=80', featured: true }, { tag: 'PRENSA', date: '20 MAR 2026', title: 'El Comercio: "Los chicos que ganaron tres mundiales seguidos"', excerpt: 'Perfil de cinco páginas en el suplemento dominical sobre la Selección.', img: 'https://images.unsplash.com/photo-1504711434969-e33886168f5c?w=1000&auto=format&q=80' }, { tag: 'CONVOCATORIA', date: '12 MAR 2026', title: 'Abierta la postulación a la Selección 2027', excerpt: 'Las pruebas se realizarán del 5 al 12 de noviembre en Lima.', img: 'https://images.unsplash.com/photo-1523580494863-6f3031224c94?w=1000&auto=format&q=80' }, ].map((n, i) => (
{ e.currentTarget.querySelector('img').style.transform = 'scale(1.04)'; }} onMouseLeave={(e) => { e.currentTarget.querySelector('img').style.transform = 'scale(1)'; }} >
{n.title}
{n.tag} {n.date}

{n.title}

{n.excerpt}

Leer más
))}
} {/* CTA */}
{t('¿Quieres entrar a la próxima Selección?', 'Want to join the next National Team?')}

{t('Las pruebas abren cada ', 'Trials open every ')}{t('noviembre', 'November')}.

{t('Cualquier debatiente puede postular, pertenezca o no a un colegio miembro de la LPDE. Lleva clases con nosotros, debate y participa de nuestras entrevistas.', 'Any debater may apply, whether or not their school is an LPDE member. Take classes with us, debate, and take part in our interviews.')}

{t('Ver bases de admisión', 'View the tryout guidelines')}
); }; /* ═══════════════════════════════════════════════════════════ ADMISIÓN (Cómo ser miembro) ═══════════════════════════════════════════════════════════ */ const AdmisionPage = () => { // Formulario de consultas — controlado. // Envío preferido: POST al Apps Script Web App (CONSULTAS_WEBAPP_URL). // El backend guarda en un Sheet ("Consultas LPDE") y notifica por // correo a contacto@lpdebate.org. Ver apps_script_consultas.gs. // Fallback: si la URL no está configurada o falla la red, abrimos // mailto: con los campos pre-llenados — el usuario no se queda colgado. // // Nota CORS: enviamos Content-Type: text/plain para evitar el preflight // OPTIONS (Apps Script no responde headers CORS). El body es JSON, // parseado por el Apps Script desde e.postData.contents. // CONSULTAS_WEBAPP_URL es compartida (definida arriba, junto a TndeAvisoForm). const { t, lang } = useLang(); const MOTIVOS = ['Postulación colegio', 'Postulación individual', 'Dudas sobre cuotas', 'Otro']; // Etiquetas EN para mostrar; el valor interno (y lo que se registra) sigue en español. const MOTIVOS_EN = { 'Postulación colegio': 'School application', 'Postulación individual': 'Individual application', 'Dudas sobre cuotas': 'Questions about fees', 'Otro': 'Other' }; const motivoLabel = (m) => (lang === 'en' && MOTIVOS_EN[m] ? MOTIVOS_EN[m] : m); const [form, setForm] = React.useState({ nombre: '', correo: '', colegio: '', motivo: MOTIVOS[0], mensaje: '' }); const [status, setStatus] = React.useState(null); const [busy, setBusy] = React.useState(false); const onField = (k) => (e) => { setForm((s) => ({ ...s, [k]: e.target.value })); setStatus(null); }; const setMotivo = (m) => { setForm((s) => ({ ...s, motivo: m })); setStatus(null); }; const fallbackMailto = (nombre, correo, mensaje) => { const subject = lang === 'en' ? `[LPDE · ${motivoLabel(form.motivo)}] inquiry from ${nombre}` : `[LPDE · ${form.motivo}] consulta de ${nombre}`; const lines = lang === 'en' ? [ `Name: ${nombre}`, `Email: ${correo}`, form.colegio.trim() ? `School: ${form.colegio.trim()}` : null, `Reason: ${motivoLabel(form.motivo)}`, '', '— Message —', mensaje, ].filter((x) => x !== null) : [ `Nombre: ${nombre}`, `Correo: ${correo}`, form.colegio.trim() ? `Colegio: ${form.colegio.trim()}` : null, `Motivo: ${form.motivo}`, '', '— Mensaje —', mensaje, ].filter((x) => x !== null); const body = lines.join('\n'); window.location.href = `mailto:contacto@lpdebate.org?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; }; const submitConsulta = async (e) => { e.preventDefault(); const nombre = form.nombre.trim(), correo = form.correo.trim(), mensaje = form.mensaje.trim(); if (!nombre || !correo || !mensaje) { setStatus({ kind: 'error', msg: t('Por favor completa nombre, correo y mensaje.', 'Please fill in your name, email and message.') }); return; } if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(correo)) { setStatus({ kind: 'error', msg: t('El correo no tiene un formato válido.', 'That email address doesn’t look valid.') }); return; } // Sin endpoint configurado → fallback inmediato a mailto if (!CONSULTAS_WEBAPP_URL) { setStatus({ kind: 'ok', msg: t('Abriendo tu cliente de correo…', 'Opening your email client…') }); fallbackMailto(nombre, correo, mensaje); return; } setBusy(true); setStatus({ kind: 'ok', msg: t('Enviando…', 'Sending…') }); try { const r = await fetch(CONSULTAS_WEBAPP_URL, { method: 'POST', // text/plain para evitar preflight CORS contra Apps Script headers: { 'Content-Type': 'text/plain;charset=utf-8' }, body: JSON.stringify({ nombre, correo, mensaje, colegio: form.colegio.trim(), motivo: form.motivo, ua: navigator.userAgent || '', }), redirect: 'follow', }); const data = await r.json().catch(() => ({ ok: false, error: 'invalid_response' })); if (data && data.ok) { setStatus({ kind: 'ok', msg: t('¡Gracias! Recibimos tu consulta. Te respondemos en máximo 48 horas hábiles.', 'Thank you! We received your inquiry. We’ll reply within two business days.') }); setForm({ nombre: '', correo: '', colegio: '', motivo: MOTIVOS[0], mensaje: '' }); } else { // Error de servidor → ofrecer mailto como red de seguridad setStatus({ kind: 'warn', msg: t('No pudimos enviar tu consulta automáticamente. Abriendo tu cliente de correo como respaldo…', 'We couldn’t send your inquiry automatically. Opening your email client as a backup…') }); fallbackMailto(nombre, correo, mensaje); } } catch (err) { console.warn('[consultas] POST failed:', err); setStatus({ kind: 'warn', msg: t('Sin conexión al servidor. Abriendo tu cliente de correo como respaldo…', 'No connection to the server. Opening your email client as a backup…') }); fallbackMailto(nombre, correo, mensaje); } finally { setBusy(false); } }; const scrollToConsultas = (motivo) => { if (motivo) setMotivo(motivo); setTimeout(() => { const el = document.getElementById('consultas'); if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, 60); }; return (
{t('Cómo ser miembro', 'How to become a member')}

{t('Sé parte de la ', 'Join the ')}{t('red', 'network')}

{t('La LPDE acoge colegios, profesores y debatientes. Tres caminos, una misma comunidad.', 'The LPDE welcomes schools, teachers and debaters. Three paths, one community.')}

{ e.currentTarget.style.background = 'var(--ink)'; e.currentTarget.style.borderColor = 'var(--ink)'; e.currentTarget.querySelectorAll('*').forEach(el => el.style.color = '#fff'); }} onMouseLeave={(e) => { e.currentTarget.style.background = 'var(--bg)'; e.currentTarget.style.borderColor = 'var(--line-strong)'; e.currentTarget.querySelectorAll('.pdf-icon').forEach(el => el.style.color = 'var(--red)'); e.currentTarget.querySelectorAll('.pdf-title').forEach(el => el.style.color = 'var(--ink)'); e.currentTarget.querySelectorAll('.pdf-sub').forEach(el => el.style.color = 'var(--ink-2)'); }} > PDF
{t('Reglamento LPDE 2026', 'LPDE Rulebook 2026')}
{t('Abrir en Google Drive', 'Open in Google Drive')}
{/* Three paths */}
{[ // imgPos / imgScale / imgOrigin: encuadre editorial per-foto // · Colegios (ESAN, 16:9): zoom 1.20 para cortar la cabeza del fotógrafo de la base // · Profesor (DSC_0554, 3:2): leve zoom + desplazado a la derecha (sujeto vive ahí) // · SNDE (final MED): zoom 1.75 sobre el orador, que sin zoom queda perdido en la sala { tag: t('01 / Colegio', '01 / School'), title: t('Colegios miembros', 'Member schools'), price: t('Membresía anual', 'Annual membership'), desc: t('Acceso prioritario al TNDE, a los circuitos regionales, capacitación de profesores y descuentos en Metadidactas. Auditoría pedagógica cada dos años.', 'Priority access to the TNDE and the regional circuits, teacher training and Metadidactas discounts. A pedagogical audit every two years.'), perks: [t('Cupo en TNDE', 'Priority TNDE slot'), t('Capacitación incluida', 'Training included'), t('Amistosos y seminarios mensuales', 'Monthly friendlies and seminars'), t('Logo en plataforma', 'Logo on our platform'), t('Sede de circuito (opcional)', 'Circuit host venue (optional)')], img: 'assets/admision/colegios-miembros.jpg', imgPos: '50% 28%', imgScale: 1.20, imgOrigin: '50% 28%', motivo: 'Postulación colegio' }, { tag: t('02 / Persona', '02 / Individual'), title: t('Profesor o coach', 'Teacher or coach'), price: t('Pase individual', 'Individual pass'), desc: t('Si tu colegio aún no es miembro, puedes capacitarte directamente con la LPDE y juzgar torneos abiertos.', 'If your school is not yet a member, you can train directly with the LPDE and adjudicate at open tournaments.'), perks: [t('Inscripción a cursos de Metadidactas', 'Enrollment in Metadidactas courses'), t('Participación como juez en torneos', 'Adjudicating at tournaments'), 'Newsletter'], img: 'assets/admision/profesor-coach.jpg', featured: true, imgPos: '52% 45%', imgScale: 1.10, imgOrigin: '52% 45%', motivo: 'Postulación individual' }, { tag: t('03 / Estudiante', '03 / Student'), title: t('Sé parte de la SNDE', 'Join the SNDE'), price: t('Gratuito', 'Free'), desc: t('Si quieres debatir y tu colegio no tiene equipo, postúlate al programa "Selección Nacional de Debate Escolar" — podrás participar del Mundial Escolar de Debate y diferentes torneos internacionales.', 'If you want to debate and your school has no team, apply to the National School Debate Team (SNDE) program — you’ll be able to compete at the Spanish-language World Schools Debating Championship (MED) and other international tournaments.'), perks: [t('Mentor asignado', 'Assigned mentor'), t('Inscripción a torneos', 'Tournament registration'), t('Acceso a materiales', 'Access to materials'), t('Formación continua', 'Continuing education')], img: 'assets/admision/snde.jpg', imgPos: '60% 50%', imgScale: 1.75, imgOrigin: '60% 50%', motivo: 'Postulación individual' }]. map((p, i) =>
{p.title}
{p.tag}

{p.title}

{p.price}

{p.desc}

    {p.perks.map((perk, j) =>
  • {perk}
  • )}
)}
{/* Beneficios */}
{t('Beneficios de ser miembro', 'Membership benefits')}

{t('Lo que recibes cuando entras a la ', 'What you get when you join the ')}{t('red', 'network')}

{t('Una membresía activa abre puertas en torneos, formación, jueces y representación internacional. Estos son los principales beneficios institucionales.', 'An active membership opens doors in tournaments, training, adjudication and international representation. These are the main institutional benefits.')}

{[ { n: '01', t: t('Cupo prioritario al TNDE', 'Priority slot at the TNDE'), d: t('Plaza prioritaria en el Torneo Nacional. Acceso a formación continua para el TNDE.', 'A priority place at the National Tournament. Access to ongoing TNDE-focused training.') }, { n: '02', t: t('Capacitación incluida', 'Training included'), d: t('Dos cursos por año de Metadidactas sin costo. Diplomados con 30% de descuento.', 'Two Metadidactas courses per year at no cost. Diploma programs at 30% off.') }, { n: '03', t: t('Participación en capacitación de jueces', 'Adjudicator training'), d: t('Acceso a la capacitación nacional de jueces certificados WSDC para los torneos internos.', 'Access to the national WSDC adjudicator certification course for your internal tournaments.') }, { n: '04', t: t('Biblioteca digital', 'Digital library'), d: t('Manuales, mociones, casos prep, videos de finales y rúbricas oficiales de la LPDE.', 'Handbooks, motions, prep cases, videos of grand finals and official LPDE rubrics.') }, { n: '05', t: t('Logo en plataforma', 'Logo on our platform'), d: t('Tu colegio listado en lpdebate.org y en todos los programas de torneos oficiales.', 'Your school listed on lpdebate.org and in every official tournament program.') }, { n: '06', t: t('Ranking nacional', 'National ranking'), d: t('Tus debatientes acumulan puntos en el ranking por colegio en español e inglés.', 'Your debaters earn points in the school ranking in both Spanish and English.') }, { n: '07', t: t('Postulación a la Selección', 'National Team eligibility'), d: t('Tus estudiantes pueden postular a la Selección Nacional rumbo al MED.', 'Your students may try out for the National Team on the road to the MED.') }, { n: '08', t: t('Red regional', 'Regional network'), d: t('Acceso al coordinador regional, encuentros zonales y sede rotativa de circuitos.', 'Access to your regional coordinator, zone meets and rotating circuit venues.') }, { n: '09', t: t('Soporte pedagógico', 'Pedagogical support'), d: t('Una hora trimestral de asesoría con un especialista para tu equipo de profesores.', 'A quarterly one-hour advisory session with a specialist for your teaching team.') }, ].map((b, i) => (
{ e.currentTarget.style.background = 'var(--bg-alt)'; }} onMouseLeave={(e) => { e.currentTarget.style.background = 'var(--bg)'; }} >
{b.n}

{b.t}

{b.d}

))}
{/* Costos de membresía */}
{t('Costos de membresía', 'Membership fees')}

{t('Cuotas ', '')}{t('transparentes', 'Transparent')}{t(', ajustadas por contexto', ' fees, adjusted to context')}

{t('Cuota anual en soles, con pago único por año. La escala se define según la pensión mensual del colegio; los colegios públicos y sin pensión están coberturados.', 'An annual fee in Peruvian soles, paid once a year. The tier is set by the school’s monthly tuition; public and tuition-free schools are covered.')}

{[ { tier: t('Colegios coberturados', 'Covered schools'), desc: t('Colegios públicos (incl. emblemáticos y COAR), mixtos sin pensión, parroquiales y administrados por ONG. Participan en al menos una actividad por trimestre.', 'Public schools (incl. flagship schools and COAR), tuition-free mixed-funding, parochial and NGO-run schools. They take part in at least one activity per term.'), price: '0', period: t('Gratuito', 'Free'), tag: t('Coberturado', 'Covered'), red: true }, { tier: t('Escala 1', 'Tier 1'), desc: t('Colegios con pensión mensual menor o igual a S/ 999.', 'Schools with a monthly tuition of S/ 999 or less.'), price: '590', period: t('/ año', '/ year') }, { tier: t('Escala 2', 'Tier 2'), desc: t('Colegios con pensión mensual entre S/ 1,000 y S/ 1,999.', 'Schools with a monthly tuition between S/ 1,000 and S/ 1,999.'), price: '1,180', period: t('/ año', '/ year') }, { tier: t('Escala 3', 'Tier 3'), desc: t('Colegios con pensión mensual de S/ 2,000 a más.', 'Schools with a monthly tuition of S/ 2,000 or more.'), price: '1,770', period: t('/ año', '/ year') }, ].map((c, i) => (
0 ? '1px solid var(--line)' : 'none', alignItems: 'center', transition: 'background 220ms' }} onMouseEnter={(e) => { e.currentTarget.style.background = 'var(--bg-alt)'; }} onMouseLeave={(e) => { e.currentTarget.style.background = 'var(--bg)'; }} >

{c.tier}

{c.tag && ( {c.tag} )}

{c.desc}

{c.price !== '0' && S/} {c.price === '0' ? '—' : c.price}
{c.period}
))}

{t('* Todas las cuotas incluyen IGV y se pagan una vez al año. La escala depende de la pensión mensual del colegio. Los colegios coberturados reciben los mismos beneficios que los pagantes. Consulta el reglamento para las condiciones y formas de pago.', '* All fees include IGV (Peruvian VAT) and are paid once a year. The tier depends on the school’s monthly tuition. Covered schools receive the same benefits as paying members. See the rulebook for terms and payment methods.')}

{/* Process */}
{t('Proceso de admisión', 'Membership process')}

{t('Cuatro pasos para sumarte a la ', 'Four steps to join the ')}{t('red', 'network')}.

{[ { n: '01', t: t('Revisa fechas y reglamento', 'Check the dates and rulebook'), d: t('Inscripción abierta hasta el 31 de marzo de 2026. Revisa el reglamento con las obligaciones y beneficios de la membresía.', 'Applications are open until March 31, 2026. Review the rulebook covering membership duties and benefits.') }, { n: '02', t: t('Acepta los principios', 'Accept the principles'), d: t('Confirma que tu colegio comparte los fines institucionales de la Liga.', 'Confirm that your school shares the League’s institutional aims.') }, { n: '03', t: t('Envía tu carta', 'Send your letter'), d: t('Redacta la carta de intención firmada por la dirección, con el formato que te damos, y envíala junto al voucher de pago a contacto@lpdebate.org.', 'Draft the letter of intent signed by your school’s leadership, using the template we provide, and send it with the payment receipt to contacto@lpdebate.org.') }, { n: '04', t: t('Evaluación', 'Review'), d: t('El Consejo Directivo revisa tu solicitud y te responde durante la semana siguiente.', 'The Board reviews your application and replies within a week.') }]. map((s, i) =>
{s.n}

{s.t}

{s.d}

)}

{t('Reincorporaciones de exmiembros 2025: hasta el 8 de abril de 2026.', 'Returning 2025 members may rejoin until April 8, 2026.')}

{/* Formulario de consultas */}
{t('Consultas y postulaciones', 'Inquiries and applications')}

{t('¿Tienes dudas?', 'Questions?')}
{t('Hablemos en ', 'Let’s talk within ')}{t('48 horas', '48 hours')}

{t('Cuéntanos tu caso. Nos llegará un correo con tus datos a ', 'Tell us about your case. We’ll receive an email with your details at ')}contacto@lpdebate.org{t('. Un coordinador te responderá en un máximo de 48 horas hábiles.', '. A coordinator will reply within two business days.')}

{t('Correo directo', 'Email us directly')}
contacto@lpdebate.org
{t('Teléfono', 'Phone')}
+51 944 123 447

{t('Envíanos tu consulta', 'Send us your inquiry')}

{MOTIVOS.map((m, i) => { const checked = form.motivo === m; return ( ); })}