This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal portfolio website for Krishnal Panara, a web developer based in India. Built with vanilla HTML, CSS, and JavaScript featuring smooth animations via GSAP and Locomotive Scroll.
- Frontend: Pure HTML5, CSS3, JavaScript (ES6+)
- Animation: GSAP 3.12.2 (CDN)
- Scrolling: Locomotive Scroll 3.5.4 (CDN)
- Icons: RemixIcon 3.5.0
- Typography: Google Fonts (DM Sans, Holtwood One SC, Inter, Open Sans, Roboto)
index.html # Main HTML structure
index.css # Primary styles and layout
loco.css # Locomotive Scroll scrollbar styles
script.js # GSAP animations and interactivity
*.png # Project showcase and profile images
The site uses three interconnected animation systems:
-
GSAP Timeline - Page load animations stagger
.boundingelemelements usingExpo.easeInOuteasing. Elements start withtransform: translateY(100%)and animate to visible. -
Custom Cursor -
#minicirclefollows mouse position with scale distortion based on movement velocity (clamped 0.5-1.2). Usescubic-bezier(0.19, 1, 0.22, 1)transitions. -
Project Hover Images - Images within
.elemcards appear on mouseenter, follow cursor position, and rotate based on horizontal mouse delta (clamped -20° to 20°).
The #main container is passed to Locomotive Scroll for smooth scrolling behavior. The scrollbar is styled in loco.css with .c-scrollbar and .c-scrollbar_thumb classes.
- Text Reveal Animation:
.boundingcontainers haveoverflow: hiddento clip.boundingelemchildren that slide up into view - Block Text Alignment:
.blocktextusesflex-direction: columnwithalign-items: endfor right-aligned text stacks - Project Cards:
.elemuses flexbox withjustify-content: space-betweenfor title/year layout; images are absolutely positioned
#hero- Full viewport hero with nav, animated heading, freelance status, footer links#second- Project showcase with three.elemcards (Crawlipse, Self Hosted Analytics, Proxy Corner).about- Profile image and bio with CTA button.subscribe- GitHub follow link.footer- Copyright and social links
- No build process - static files served directly
- All dependencies loaded via CDN in
index.html - GSAP script is included twice in HTML (duplicate script tags at lines 119-130)
- The
timeoutvariable incircleChaptaKaro()is used before declaration (relies on hoisting)