El proyecto es un sitio de una sola página cuya estructura de archivos refleja una separación clara de responsabilidades: un único documento HTML actúa como punto de entrada, un archivo JavaScript contiene todos los datos y la lógica de interacción, y cinco archivos CSS independientes se ocupan de distintos aspectos del estilo. No existe ningún paso de compilación — el navegador carga los archivos directamente.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/val20-11/Pagina-de-Seminarios-y-Eventos-UIM/llms.txt
Use this file to discover all available pages before exploring further.
Directory tree
utilities.css is currently empty and is included in reestructuracion.html as a placeholder for future single-purpose utility classes (spacing helpers, visibility toggles, etc.).HTML entry point
reestructuracion.html is the only HTML file in the project. It performs three jobs:
- Loads external resources — Google Fonts (
Open Sans), Font Awesome 6.0.0-beta3, and all five CSS files — in<head>. - Defines the static page shell — the
.site-wrapper>.seminarios-sectionhierarchy that scopes all layout rules, the.filter-toolbarwith its four filter buttons and search input, and the empty#cardsContainerdiv that JavaScript populates at runtime. - Contains the enrollment modal markup —
#inscripcionModalwith its form fields (#inputNombre,#inputCorreo,#inputTipoUsuario,#inputNumeroCuenta,#modalSeminario,#inputMotivo) and an inline<script>that handles the user-type toggle animation.
JavaScript: js/seminarios.js
The entire application logic lives inside a single IIFE (immediately invoked function expression) that runs after reestructuracion.html loads the script tag at the bottom of <body>.
The seminarios data array
Each element in the seminarios array is a plain object with the following shape:
Core functions
renderCards(filteredSeminarios)
renderCards(filteredSeminarios)
Clears
#cardsContainer and rebuilds it from the provided array slice. For each seminar it creates a .seminario-card div with an image (or fallback), a category badge (.card-tag), the title (<h3>), the objective block with its Ver más toggle, area tags (.card-areas), the responsible academic, optional contact details, and the Inscribirme ahora button. All HTML is injected via card.innerHTML.filtrar()
filtrar()
Reads the currently active
.filter-btn dataset (todos | anual | permanente | especial) and the live value of #searchInput, then filters the seminarios array with a two-part predicate — category match AND text match across titulo, objetivo, and responsable — before calling renderCards() with the result.openModal(titulo) / closeModal()
openModal(titulo) / closeModal()
openModal adds .active to #inscripcionModal, sets #modalSeminario’s value to the selected seminar title, and disables body scroll. closeModal reverses all three changes and resets the form via modalForm.reset().CSS architecture
The five CSS files are loaded in a fixed order in<head>. Each file has a single responsibility, and later files build on earlier ones.
- reset.css
- layout.css
- components.css
- typography.css
- utilities.css
Applies a universal
box-sizing: border-box reset, zeroes all margins and padding, sets the base font to 'Open Sans', sans-serif, and configures body as a centered flex column on a #e9ecf0 background.How the files connect at runtime
Browser loads reestructuracion.html
The parser fetches and applies all five CSS files in order, then renders the static HTML shell: the section title, filter toolbar, empty
#cardsContainer, and the hidden modal overlay.seminarios.js executes
The IIFE runs immediately. It populates
#modalSeminario with all seminar titles, then calls renderCards(seminarios) to inject all 31 cards into #cardsContainer.Event listeners activate
Filter buttons, the search input, card Ver más toggles, and Inscribirme ahora buttons all receive their event listeners. From this point the page is fully interactive.