| three.js (WebGL) | Heroes: HexGlobe on home, SignalField here | One scene per page, pauses off-screen, CSS fallback, still frame on reduced motion |
| TechText (React Bits) | Hero titles | Decorative: aria-hidden, with a real sr-only heading |
| Lenis | Long editorial pages | lerp 0.2 — never on the dashboard or forms |
| Swiper | Showcases, carousels | Keyboard and pagination on, never autoplay |
| BorderGlow (React Bits) | Secondary hero CTA (GlowCta) | Edge glow in brand colours towards the pointer; hex palette per theme |
| PrimaryCta | Primary pill actions (hero, selected work) | Lift with brand shadow, light sweep and arrow nudge on hover |
| Featured bento card | Home selected work | Glass arrow button fills with brand and turns forward; cover zooms 4% on hover |
| ProjectIndex | Home project list | Brand tint sweeps in from the left, title slides, arrow turns forward; other rows dim (CSS only, hover and focus) |
| Testimonials | Home testimonials | Auto-rotating spotlight (words rise in), drifting columns and a logo marquee; pause button, hover and focus pause; static under reduced motion |
| TeamSection | Home "who we are" | Portraits go from grayscale to colour with a 3% zoom on hover or focus (hover devices only); cards aligned, links pinned to the bottom |
| ContactCta | Home contact card | Brand mesh blobs drift slowly (transform only) over the hex lattice; a glow follows the pointer; static under reduced motion |
| SiteFooter | Every public page | The page sheet scrolls off to reveal a sticky ink footer (CSS only, tall desktop screens); social icons lift on hover |
| .text-shimmer | Dashboard sidebar brand | A gradient sheen slides slowly across "Dashboard" (background-position; short text only, frozen with reduced motion) |
| .scroll-words | About page manifesto | Words light up one after another while the paragraph crosses the viewport (scroll-driven, opacity only; full text without support or with reduced motion) |
| TableOfContents | Legal pages (terms, legal notice, privacy) | Highlights the section being read (IntersectionObserver); a brand bar slides to it and the rail fills up to it (transform only); plain anchor links |
| Primary CTA hover | Hero primary action | Lift + brand shadow, light sweep, arrow nudge; transform/opacity only |
| Status dot pulse | Eyebrow badges that signal something live | animate-ping ring behind a brand-2 dot, motion-safe only |
.reveal | Sections on load | Stagger with --i, 80ms per item |