A responsive personal portfolio site for Terina Seltzer, built with plain HTML, CSS, and JavaScript. The site presents professional background, technical skills, experience, certifications, education, contact links, and a contact form.
index.html- Main page markup, SEO/Open Graph metadata, content sections, navigation, and contact form.style.cssandchess.css- Portfolio and chess-game presentation, responsive layout, accessibility helpers, and animations.main.js- Theme switching, navigation, scroll effects, contact-form behavior, and accessibility controls.chess-engine.js- Testable chess state, movement rules, game-status evaluation, repetition, and snapshots.chess.js- Chess user interface and computer-player controller.tests/chess-engine.test.js- Automated tests for chess rules and state restoration.
- Dark/light theme toggle with saved preference.
- Text-size slider with saved preference and accessible range metadata.
- Responsive fixed header with primary navigation.
- Hero section with portrait, animated typewriter text, and call-to-action buttons.
- Skills, experience, certifications, education, and contact sections.
- Contact form powered by Formspree.
- Copy-to-clipboard email behavior with fallback to
mailto:. - Scroll progress indicator, active navigation state, dot navigation, and back-to-top button.
- Reduced-motion support for animation-heavy behavior.
- Includes a skip link for keyboard users.
- Uses semantic sections, labeled form fields, and accessible button labels.
- Animated typewriter text is hidden from assistive technology and paired with stable screen-reader text.
- The text-size slider updates
aria-valuenowandaria-valuetext. - Focus-visible styles are included for keyboard navigation.
Run the chess-engine rule tests with:
node --test --test-isolation=none tests/chess-engine.test.js