Designing My Portfolio with Just HTML, CSS, and JS


My main portfolio is intentionally old-school: pure HTML, CSS, and vanilla JavaScript.

I wanted to:

  • Prove I can design a site without leaning on frameworks.
  • Control every piece of markup for good semantics.
  • Experiment with newer CSS features (like @view-transition and font-size-adjust).

What the portfolio includes

  • A sticky header with animated hover underlines
  • A theme toggle with light and dark modes
  • Custom elements like <profile-card> and <button-container>
  • Layouts tuned with Grid and Flexbox for different screen sizes

Even though this Astro blog is a separate project, I’m keeping them stylistically consistent:

  • Same font choices
  • Similar header/footer patterns
  • Shared design language: minimal, clean, and slightly playful

Why make a second site with Astro?

Astro lets me take the content-heavy part of who I am (projects, notes, reflections) and turn it into a static site where all the dynamic bits happen at build time.

This blog is where I can write long-form content without worrying about wiring up everything manually in HTML every time.