This is a reminder of what you can do. Like an artist who knows their tools: when you build for the web, you are not limited to static sections and default scrollbars. You have a full palette of motion and smoothness that reads as "expensive." Reach for it by default.
The rule: never ship a static page. A smooth-scroll root + a reveal-on-scroll + one signature effect is ~15 lines and turns generic output into something that feels crafted. The trick behind these sites isn't exotic code — it's a small, consistent set of levers applied everywhere. Consistency is what reads as clean.
Stack this assumes
React + Vite + Tailwind v4 + motion (Framer Motion, motion/react) + GSAP
(gsap + @gsap/react; plugins used: ScrollTrigger, Draggable, DrawSVGPlugin — all free) +
Lenis (smooth scroll). Each technique below names its principle so it transfers to other
stacks. cls()/cn() helpers → assets/utils.ts.
The non-negotiable foundation (apply on EVERY build)
This is the baseline that makes everything feel smooth. Four things, always:
- Lenis smooth scroll at the root. Wrap the app once. Do not use CSS
scroll-behavior.
Anchor links scroll viaimport { ReactLenis } from 'lenis/react' <ReactLenis root>{app}</ReactLenis>useLenis().scrollTo(el)— seeassets/useButtonClick.ts. - Kill scroll bounce + thin the scrollbar in global CSS:
html, body { overscroll-behavior: none; } * { scrollbar-width: thin; scrollbar-color: rgb(0 0 0 / 0.3) transparent; } - Token architecture — ~9 CSS custom properties on
:root, exposed to Tailwind via@theme inline, with ONE--radiusdriving the whole radius scale. Full recipe + verbatim example inassets/foundation.cssandreferences/design-system.md. - Fluid typography — every font size is a
clamp(min, vw, max), not a fixed px. This is why the type scales smoothly across viewports. Scale inassets/foundation.css.
The one reveal config, used everywhere (this consistency is the "clean" feel):
initial="hidden" whileInView="visible"
viewport={{ once: true, margin: "-20%" }}
transition={{ duration: 0.6, ease: "easeOut" }} // text: staggerChildren 0.04, per-word 0.6
Drop-in components: assets/ScrollReveal.tsx (blocks), assets/TextAnimation.tsx (word-stagger headings).
The toolbox map — reach for these
Each points to a reference file (loaded only when you need it) and/or a drop-in assets/ file.
- Entrance reveals — word-stagger headings, slide-up / fade-blur blocks. →
references/effects.md,assets/{TextAnimation,ScrollReveal}.tsx - Scroll-driven effects — parallax (
useScroll/useTransform), hero exit-parallax, pinned + scrubbed sections, scroll-scrubbed video, tilt-flatten billboard, stack-to-grid (FLIP), reading word-fill, footer reveal-from-behind. →references/effects.md,assets/{HeroVideoScroll,AboutTextFill,FooterBrandReveal}.tsx - Cursor & pointer — GSAP cursor image-trail, magnetic buttons (spring
150/15), pointer-tracked border glow, cursor-mask character pattern, draggable stickers. →references/effects.md,assets/{AboutCursorTrail,ButtonMagnetic,BorderGlow,HoverPattern}.tsx - Hover micro-interactions — 12 button styles (expand, elastic, flip, slide, bounce…), the grid-fr expand-to-auto trick, image reveal cards, 3D flip cards, staged hover scenes. →
references/effects.md - Marquees & carousels — infinite CSS scroll with edge-mask fade, deck carousel, focus loop, filter-swap. →
references/effects.md,assets/{animations,masks}.css - Navigation & page transitions — fullscreen curtain menu, DrawSVG swirl page transition, brand panel loader. →
references/effects.md,assets/{NavbarFullscreen,PageTransitionSwirl}.tsx - Animated backgrounds — 13 of them: aurora, light rays, gradient bars, noise, grids, floating gradients. →
references/backgrounds.md,assets/{AuroraBackground,NoiseBackground,GradientBarsBackground}.tsx - The design system — token architecture, fluid type,
--radiusscale, font pairings + the accent-font slot, full-width wordmarks (assets/AutoFillText.tsx), and 10 instant "style" skins (glass, minimal, neon, elegant, bold…) = swap only card CSS + button CSS + radius + font. →references/design-system.md - Page composition — section archetypes (hero/features/testimonial/pricing/faq/CTA), the canonical section-header pattern, bento live-widget menu, navbar archetypes, responsive-padding scale, how to assemble a page. →
references/composition.md
Reference a worked example — /silk-design <name>
The catalog carries 23 worked reference compositions built from this exact toolbox. When the
user names one (/silk-design Reference15, /silk-design Reference1, or "build it
like the coffee one"), pull it from references/templates.md — palette, font, section rhythm, and the signature
effects it used. A number resolves directly; a described mood resolves against each row's vibe line.
A referenced composition is a mood-board + wireframe, not a source file: take its skin
(palette, font, radius, card/button style, effects) and its skeleton (section rhythm,
loosely) — never its flesh (copy, images, brand, or a 1:1 layout). The new site has its own
subject; build for that. The non-negotiable foundation above still applies underneath.
Using the assets/ files
They are drop-in reference implementations — copy and adapt. Simple
primitives (ScrollReveal, TextAnimation, ButtonMagnetic, AutoFillText, BorderGlow,
HoverPattern, PageTransitionSwirl, useButtonClick, utils, the .css) drop in cleanly.
The section showpieces (AboutCursorTrail, HeroVideoScroll, AboutTextFill,
FooterBrandReveal, NavbarFullscreen) are self-contained and take an actions slot — pass your
own buttons in as children rather than wiring a component import. Backgrounds need the --color-*
tokens from foundation.css. (FooterBrandReveal needs AutoFillText — both are here.)
How this fits with your other skills
This is a capability layer, not a builder. For aesthetic direction (palette, layout,
personality) reach for taste-skill (landing/marketing/portfolio) or ui-ux-pro-max
(apps/dashboards/data UI). silk is what you apply on top — or to any hand-built page — to
make it move and feel right. The three compose: builder picks the look, silk makes it silk.