A minimalist, responsive personal portfolio built with plain HTML, CSS, and JavaScript. It features smooth section swipe transitions, a dark-mode invert, animated accents, and masked SVG icons.
index.html
— markup for Landing, About, Projects, Contactcss/style.css
— base styles, colors, animations, dark-modecss/style-responsive.css
— responsive rules and breakpointsjs/script.js
— smooth swipe-scroll, IntersectionObserver, dark-mode toggle, copy-email dynamic button revealerassets/
— images and SVGs referenced by HTML/CSSfonts/
— Nohemi *.woff2 referenced by CSS
- Swipe-style section transition overlay when navigating in-page links
- Smooth scrolling with temporarily disabled browser smooth behavior during transition
- Dark color invert toggle (asterisk button) that toggles body.inverted
- About image color-on-hover effect
- Skill list with masked icons tinted via background-color
- Projects section background inversion when visible (unless dark mode is active)
- Contact section with one-click copy email button and hover underlines
- Responsive layout with sensible spacing and typography
Open in a local static server to ensure smooth behavior and correct asset paths.
-
Python:
cd portfolio
python -m http.server 8000
- Open
http://localhost:8000
-
Npx (optional):
npx http-server -p 8000
Then navigate to index.html
.
- SVG icons are applied via
-webkit-mask-image/mask-image
so their color is controlled bybackground-color
- Animations:
fadeInUp
for hero textswipe-up
for transition overlaysstatus-pulse
for availability dot
IntersectionObserver
toggles a.projects-visible
class based on viewport visibility
<= 48em (768px)
: font-size scaled, tighter gaps, stacked layouts769px–100em
: minor sizing tweaks