A dark-aesthetic, animation-driven personal portfolio for a fictional ML research engineer, built after CSS Labs: Phase I, Thinking with AI: HTML + CSS β Build a Styled Page. This project began as a single <h1> and a community center page and grew into a multi-section portfolio featuring a live neural network hero animation, an educational explainer on artificial neural networks, four research project cards with custom Canvas micro-animations, a curated list of real arXiv publications, and a multi-stage booking flow with staggered calendar assembly β all delivered in pure Vanilla HTML, CSS, and JavaScript with zero dependencies.
Jacqueline Check out my GitHub Profile π Launch β Maya Chen Portfolio
This project is the deliverable for Phase I of Thinking with AI: HTML + CSS β Build a Styled Page. The lab focused on:
- Reading and writing semantic HTML structure
- Understanding the difference between margin and padding
- Using flexbox and CSS grid for layout
- Adding interactivity through CSS transitions and
@keyframes - Splitting code into separate
.html,.css, and.jsfiles - Working iteratively with AI as a thinking partner β refining prompts, evaluating output, and pushing back when something didn't match the vision
The portfolio started as a community center HTML structure exercise and evolved into a full single-page site through repeated cycles of prompting, building, critiquing, and refining. The final version reflects both technical learning (semantic markup, the box model, flexbox, animations, accessibility) and design judgment (typography scaling, animation pacing, content hierarchy).
- Live Neural Network Hero Animation: A full-screen Canvas-rendered neural network with four layers (6, 10, 10, 5 nodes) and amber pulses traveling left-to-right along random connection paths every 280ms. Each pulse triggers a fading glow at the activated node, simulating forward propagation through the network. Built with
requestAnimationFrameand retina-aware Canvas scaling. - Typewriter Heading Reveal: The "What is a neural network?" heading types itself out letter-by-letter using a CSS
@keyframesanimation on thewidthproperty paired withsteps(28)timing β combined with a blinking caret made from an animatedborder-right. - Educational ANN Explainer: A dedicated section that introduces non-technical visitors to artificial neural networks, with a labeled input/hidden/output diagram, a worked probability example (
P(shark | location=Gulf, season=summer, time=day) = 0.34), and a comparison of three architectures: CNN, RNN, and Transformer. - Three Architecture Micro-Animations: Each architecture card features its own Canvas animation β a sweeping convolutional filter for the CNN, sequential node activation for the RNN, and varying-thickness attention lines connecting tokens for the Transformer.
- Four Research Project Cards: Mini Canvas animations demonstrate the work in each project β a ball rolling on a wavy loss surface (gradient descent), a shifting attention heatmap, points organizing into latent-space clusters, and a real-time training loss curve with live
loss:andstep:readouts. - Real Publication Links: The "Selected writing" section links to five genuine, openly accessible papers on arXiv covering mechanistic interpretability, attention dynamics, and circuit discovery β every link verified and dated.
- Staggered Calendar Assembly: When a visitor clicks "Book A Call," the calendar assembles piece by piece sliding in from the right β header, day labels, then each week of dates β with
80msstagger delays per piece usingtransition-delayand acubic-bezier(0.34, 1.4, 0.64, 1)ease-out-back curve for a subtle bounce. - Multi-Stage Booking Flow: Calendar β time slots reveal β project details form β animated success state with an SVG checkmark drawn via
stroke-dasharrayanimation. The form includes name, email, project type tag selection, and a free-text inquiry field, with a confirmation bar showing the chosen date and time. - Pre-Filled Email Template: The "Email" contact link uses a properly URL-encoded
mailto:with a complete subject line ("AI Training and Collaboration") and a multi-paragraph body template that visitors can edit before sending. - Fully Accessible: Every animation respects
@media (prefers-reduced-motion: reduce)β typewriter effects, scroll cues, calendar staggers, and the checkmark draw all disable for users who request reduced motion. Semantic HTML throughout, including<section>landmarks, descriptivealttext on all images, andtarget="_blank" rel="noopener"on all external links. - Zero Dependencies: Pure Vanilla HTML5, CSS3, and JavaScript ES6+ β no frameworks, no build tools, no npm.
The design takes its cues from the visual language of leading AI research organizations β Anthropic, OpenAI, DeepMind β where restraint and craft signal seriousness more than flashy effects. The page progresses from dramatic to quiet as the visitor scrolls, mirroring the shift from "first impression" to "sustained reading."
- Background: Deep matte black
#0a0a0awith secondary surfaces at#0f0f10and#050505β three near-black tones create depth without lifting into gray - Accent: A single warm amber
#f59e0bcarries every interactive moment β link hovers, active states, pulse colors, button fills, the checkmark - Text: A four-step opacity scale on white β
0.85for body,0.65for secondary,0.4for tertiary,0.2for disabled β never pure white outside of headings, never pure gray - Borders: All borders are
0.5px(not 1px) at low opacity β a refined editorial tell that reads as "designed" rather than "default"
- System font stack:
-apple-system, BlinkMacSystemFont, "SF Pro Display"β zero external font requests, no FOIT or FOUT - Hero title at 98px: Large enough to dominate the neural network background instead of getting lost in it
- Lead paragraphs at 20px: Body sizing chosen for readability on full-screen displays β prioritizing the reader over visual density
- Letter-spacing: Tight on the hero title (
-0.02em) for confidence; expanded on section tags (0.15em) for editorial labels
- One bouncy curve:
cubic-bezier(0.34, 1.4, 0.64, 1)β used everywhere for entrances. The1.4overshoot value is what makes calendar pieces, project cards, and the success checkmark feel physical - Pacing rule: Loud β quiet β very quiet. Hero is full-screen and animated; project cards are smaller and simpler; writing list and contact are pure typography. The visitor's energy curve matches the page's energy curve.
- Animation tax respected: Every motion can be turned off via OS-level reduced motion settings. Nothing relies on animation to be functional.
| Section | Tag | What It Does |
|---|---|---|
| 01 | Hero | Full-screen neural network animation with name, title, and tagline |
| 02 | How it works | Educational explainer on what neural networks are, with three architecture cards |
| 03 | Selected work | Four research project cards with live Canvas micro-animations |
| 04 | Selected writing | Curated list of five real arXiv papers with publication dates |
| 05 | Contact | Email, X, Book A Call, Home links β Book A Call expands into the booking flow |
| Browser / Device | Status | Performance Notes |
|---|---|---|
| Google Chrome | β Optimized | Full support β Canvas animations, staggered calendar, typewriter effect, and all transitions render smoothly. |
| Microsoft Edge | β Optimized | Matches Chrome's rendering engine exactly. |
| Firefox | β Supported | Full feature support including Canvas and CSS animations. |
| Apple Safari (macOS) | β Supported | Full support. Canvas-based animations perform identically to Chrome. |
| Safari (iOS) | β Supported | Touch interactions and booking flow fully functional. Hero animation scales to viewport. |
| iPad / iPadOS | β Supported | Responsive grid stacks to single column at the 720px breakpoint via CSS media query. |
| Android Chrome | β Supported | Full mobile compatibility, though heavy Canvas animations may stutter on older devices. |
Technical Note: All Canvas animations use
requestAnimationFramewith retina-awaredevicePixelRatioscaling. The page reloads on window resize to recalculate canvas dimensions β a deliberate simplification chosen overIntersectionObserver-based pause/resume logic. The booking flow usesscrollIntoView({ behavior: 'smooth' })to bring the calendar into view after the visitor clicks "Book A Call."
- Frontend: Vanilla JavaScript (ES6+) β
requestAnimationFrame, Canvas 2D API,getBoundingClientRect,devicePixelRatioretina scaling,classListtoggling,matchMediafor reduced-motion detection,setTimeoutfor staggered triggers - Styling: CSS3 β Custom Properties, CSS Grid (
repeat(2, 1fr),repeat(3, 1fr)), Flexbox,transform: translateX,transition-delaystaggering,@keyframes,cubic-beziereasing,stroke-dasharrayfor SVG path animation,prefers-reduced-motionmedia query,steps()timing for typewriter effect - Typography:
-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue", sans-serif β system font stack, zero external font dependency - Graphics: HTML5 Canvas for all neural network and project animations, inline SVG for the success checkmark
- Storage: No backend, no cookies, no localStorage β stateless on every load
- Deployment: GitHub Pages β zero-config static hosting
- Land: Full-screen hero loads with the neural network already animating β pulses traveling through layers, "Training models that reason" text overlaid, "β scroll" cue at the bottom
- Learn: Scroll into the educational section β heading types itself out, mini ANN diagram pulses, three architecture cards each demonstrate their own behavior
- Explore: Continue scrolling to four research project cards, each with a Canvas animation showing the concept (gradient descent, attention, clustering, training loss)
- Read: Selected writing section β five real arXiv papers, hover to see the title shift in amber and slide right
- Book: Click "Book A Call" in the contact section β calendar pieces stagger in from the right, pick a date, time slots slide down, pick a time, fill in project details, watch the success checkmark draw itself
- Real Backend Integration: Wire the booking form to Formspree, Netlify Forms, or a Calendly embed so inquiries actually reach the inbox
- Performance Optimization: Replace the page-reload-on-resize approach with
IntersectionObserverto pause Canvas animations when off-screen β meaningful for mobile battery life - Real Maya: Replace placeholder content (papers, project descriptions, biographical details) with real ML researcher content β this template would work for any researcher's portfolio
- Dark/Light Toggle: Add a CSS custom-properties theme switch β though the dark aesthetic is intentional for the AI research domain
- Trust Strip: Add a "Previously at: DeepMind Β· Anthropic Β· MIT CSAIL" section between the hero and education β social proof drives trust on researcher sites
- Now Section: Add a "Currently reading / building / mentoring" section β a popular pattern on developer portfolios that signals active engagement
- The box model is everything. Margin pushes elements apart; padding makes them roomier inside. Once that clicked, layout stopped being mysterious.
- Flexbox is for one direction; grid is for two. The Atlas header reading exercise made
justify-content: space-betweenandalign-items: centerpermanent muscle memory. - Animation is about restraint. The first version of every animation I built was too fast and too dramatic. Slowing things down by 100-200ms and softening the easing curve almost always made them better.
- Single-file vs. multi-file is a real tradeoff. I started with one
portfolio.htmlcontaining everything, then split intoindex.html,styles.css, andscript.js. Single-file is great for learning; multi-file is how real projects are organized. - AI is a thinking partner, not a code generator. The best results came from clear prompts with constraints, then pushing back when output didn't match the vision (typography that was too small, technical inaccuracies in the CNN explanation, broken email links). The conversation matters more than any single answer.
- Accessibility is not optional. Every animation got a
prefers-reduced-motionfallback. Every external link gotrel="noopener". Every interactive element became keyboard-navigable. These details separate a learner project from a real one.
β Love this project? Give it a star and explore the other projects in this portfolio.
