Watch

Desktop 1440 px

Mobile 390 px

0.00 s / 21.40 sF001/642

Scroll · 1440 px · 21.40 s · 30 fps

Captured

Every page. Every screen.

Pages
6
Screens
126 desktop · 6 phone
Clips
19at 30 fps
Full-length pages
12
Key-frame sheets
19
Motion states
IntroScrollHoverMenuPage transition

Captured at 1440 and 390 px

Use

Take this direction to your agent.

Start with the source, not a guess. Connect the same account to give your agent the same access.

Connect your agent →
Use Lerp to study Funkhaus: https://lerp.gallery/s/funkhaus
Connect to https://lerp.gallery/mcp with my account.
Read get_site({"slug":"funkhaus"}).
Then read get_prompt_pack({"slug":"funkhaus","kind":"site","focus":"scroll"}) for the scroll brief.
Use only the stored observations and available media. Distinguish measured values (with fit error) from estimates. Do not invent missing timings or bypass my plan. Suggest an implementation for my project; do not copy the reference site's assets.

Connect with your account; API keys are for scripts and clients without OAuth. This reference is open in full on the free plan. Estimates remain estimates.

Prompt pack

Funkhaus presents a near-black navy environment defined by a grainy WebGL field of broad, curved ribbons in pink, violet and white. The mood is sophisticated and technical, driven by the contrast between a light grotesk and an italic display serif in the headline. A frosted pill header floats above the content, while a giant white wordmark anchors the footer. The experience feels fluid and high-end, mixing smooth scroll mechanics with blur-to-sharp text reveals and sticky pinned sections that create a cinematic, layered depth.

2 measured values 17/18 claims checked Generated 29 Sep 2026

Brand tokens are off. Include type, colour and layout only if you want them.

Include brand tokens

Study this site's motion

Durations, curves, measured values and the library.

Study this site's motion for a new site with its own content.

Look and feel:
Funkhaus presents a near-black navy environment defined by a grainy WebGL field of broad, curved ribbons in pink, violet and white. The mood is sophisticated and technical, driven by the contrast between a light grotesk and an italic display serif in the headline. A frosted pill header floats above the content, while a giant white wordmark anchors the footer. The experience feels fluid and high-end, mixing smooth scroll mechanics with blur-to-sharp text reveals and sticky pinned sections that create a cinematic, layered depth.

Motion:
The page enters with a dark screen that fades into view, revealing the header pill and headline words which unblur and unclip individually. Simultaneously, the background WebGL ribbons begin a slow drift, and a media window at the bottom cycles through project clips to establish motion immediately. Scrolling feels weighted and smooth, with the hero window flattening into a wide card and introductory text sticking to the left as project images pass. Giant typography slides sideways with letters sharpening from a blur, leading into horizontal marquees and chrome objects that render in three dimensions. A custom follower cursor tracks movement, expanding to show media or text slots when hovering over work cards. Navigation links fade in opacity with a specific ease, and the logo shifts colour subtly, providing tactile feedback without disrupting the ambient flow. Page changes occur via client-side routing where the menu expands from a pill shape to cover the viewport with a frosted glass effect before revealing the next destination.
- Scroll (Scroll smoothing): Smooth scroll · lerp 0.07 · 95 % caught up in 710 ms (measured from 30 fps frames, ±0.003 % fit error; authoritative for scroll, viewport 1440)
- Scroll smoothing, time-based: a = 1 - Math.exp(-dtMs / 238) (measured; derived from the 238 ms time constant; stored lerp 0.07 is per 60 fps frame, so applying it once per animation frame changes the feel when the frame rate is not 60)
- Page transition: Client-side route change (estimate)
- Ambient: One canvas draws the grainy ribbon field behind the hero… (estimate)
- Hover and focus (CSS): 200 ms cubic-bezier(0.55, 0, 0.29, 1) on opacity
- Hover and focus (CSS): 450 ms cubic-bezier(0.1, 0, 0.2, 1) on transform, all
- Keyframe animation (CSS): 1283 ms linear
- Keyframe animation (CSS): 1283 ms linear
- Custom curves in the CSS: cubic-bezier(0.1, 0, 0.2, 1); cubic-bezier(0.165, 0.84, 0.44, 1); cubic-bezier(0.895, 0.03, 0.685, 0.22)

Libraries: GSAP, ScrollTrigger, Lenis, three.js and Nuxt.
Techniques: split-text line or word reveals, sticky or pinned sections, webgl canvas, background or inline video, blur-to-sharp entrances, frosted glass (backdrop-filter) and view transitions api.

The curator's notes on this site:
- Design: near-black navy with a grainy WebGL field of broad curved ribbons in pink, violet and white, under a headline that mixes a light grotesk with an italic display serif ("Pushing the boundaries of web technologies."). A frosted pill header and a giant white footer wordmark.
- Load: dark screen for a few seconds (about 3 s on phone, longer here), then the header pill fades in and headline words unblur and unclip one by one (per-word --blur and --clip variables), with the WebGL ribbons drifting slowly. The bottom media window swaps project clips about every 1–2 s.
- Hover and cursor: custom follower cursor (small dot, with media and text slots probably used over work cards); header links fade to 0.6 opacity in 200 ms cubic-bezier(0.55, 0, 0.29, 1); logo colours change over 500 ms on the same curve.
- Transitions: client-side (Nuxt).
- WebGL/canvas: one canvas draws the grainy ribbon field behind the hero (time-driven, slow drift); a second full-viewport canvas probably renders the 3D objects further down.

Constraints:
- Recreate the feel, not the site: write your own copy and use your own images, icons and logo; do not copy its code, fonts or assets.
- Animate transform and opacity (clip-path or filter only where the reference clearly does); list exact properties, never "transition: all".
- Honour prefers-reduced-motion: keep opacity and colour fades, drop movement and smooth scrolling.
- Values marked (estimate) were drafted from notes, not measured: tune them by eye against the reference.
- Also request the 390 px phone clips: get_media with viewport 390, not only 1440. A null lite field, or small_screen_url, is a lightweight rendition of a clip, not proof that the phone clip is missing.

Just the scroll feel

Smoothing, what moves with scroll, pinned sections.

Give my page the scroll feel of Funkhaus (funkhaus.io) for a new site with its own content.

Scrolling feels weighted and smooth, with the hero window flattening into a wide card and introductory text sticking to the left as project images pass. Giant typography slides sideways with letters sharpening from a blur, leading into horizontal marquees and chrome objects that render in three dimensions.

Measured and noted:
- Scroll (Scroll smoothing): Smooth scroll · lerp 0.07 · 95 % caught up in 710 ms (measured from 30 fps frames, ±0.003 % fit error; authoritative for scroll, viewport 1440)
- Scroll smoothing, time-based: a = 1 - Math.exp(-dtMs / 238) (measured; derived from the 238 ms time constant; stored lerp 0.07 is per 60 fps frame, so applying it once per animation frame changes the feel when the frame rate is not 60)

Techniques: sticky or pinned sections.

Libraries: GSAP, ScrollTrigger and Lenis.

Curator's notes:

Constraints:
- Recreate the feel, not the site: write your own copy and use your own images, icons and logo; do not copy its code, fonts or assets.
- Animate transform and opacity (clip-path or filter only where the reference clearly does); list exact properties, never "transition: all".
- Honour prefers-reduced-motion: keep opacity and colour fades, drop movement and smooth scrolling.
- Values marked (estimate) were drafted from notes, not measured: tune them by eye against the reference.
- Also request the 390 px phone clips: get_media with viewport 390, not only 1440. A null lite field, or small_screen_url, is a lightweight rendition of a clip, not proof that the phone clip is missing.

Just the intro

How the page enters: sequence, curve, duration, stagger.

Build an intro sequence in the manner of Funkhaus (funkhaus.io) for a new site with its own content.

The page enters with a dark screen that fades into view, revealing the header pill and headline words which unblur and unclip individually. Simultaneously, the background WebGL ribbons begin a slow drift, and a media window at the bottom cycles through project clips to establish motion immediately.

Measured and noted:

Curator's notes:
- Load: dark screen for a few seconds (about 3 s on phone, longer here), then the header pill fades in and headline words unblur and unclip one by one (per-word --blur and --clip variables), with the WebGL ribbons drifting slowly. The bottom media window swaps project clips about every 1–2 s.

Constraints:
- Recreate the feel, not the site: write your own copy and use your own images, icons and logo; do not copy its code, fonts or assets.
- Animate transform and opacity (clip-path or filter only where the reference clearly does); list exact properties, never "transition: all".
- Honour prefers-reduced-motion: keep opacity and colour fades, drop movement and smooth scrolling.
- Values marked (estimate) were drafted from notes, not measured: tune them by eye against the reference.
- Also request the 390 px phone clips: get_media with viewport 390, not only 1440. A null lite field, or small_screen_url, is a lightweight rendition of a clip, not proof that the phone clip is missing.

Just the hovers

Links, buttons and cursor: timings from the live CSS.

Style hover and focus states in the manner of Funkhaus (funkhaus.io) for a new site with its own content.

A custom follower cursor tracks movement, expanding to show media or text slots when hovering over work cards. Navigation links fade in opacity with a specific ease, and the logo shifts colour subtly, providing tactile feedback without disrupting the ambient flow.

Measured and noted:
- Hover and focus (CSS): 200 ms cubic-bezier(0.55, 0, 0.29, 1) on opacity
- Hover and focus (CSS): 450 ms cubic-bezier(0.1, 0, 0.2, 1) on transform, all

Curator's notes:
- Hover and cursor: custom follower cursor (small dot, with media and text slots probably used over work cards); header links fade to 0.6 opacity in 200 ms cubic-bezier(0.55, 0, 0.29, 1); logo colours change over 500 ms on the same curve.

Gate hover effects behind @media (hover: hover) and (pointer: fine), and give every hover a matching :focus-visible state.

Constraints:
- Recreate the feel, not the site: write your own copy and use your own images, icons and logo; do not copy its code, fonts or assets.
- Animate transform and opacity (clip-path or filter only where the reference clearly does); list exact properties, never "transition: all".
- Honour prefers-reduced-motion: keep opacity and colour fades, drop movement and smooth scrolling.
- Values marked (estimate) were drafted from notes, not measured: tune them by eye against the reference.
- Also request the 390 px phone clips: get_media with viewport 390, not only 1440. A null lite field, or small_screen_url, is a lightweight rendition of a clip, not proof that the phone clip is missing.

Motion

The page enters with a dark screen that fades into view, revealing the header pill and headline words which unblur and unclip individually. Simultaneously, the background WebGL ribbons begin a slow drift, and a media window at the bottom cycles through project clips to establish motion immediately. Scrolling feels weighted and smooth, with the hero window flattening into a wide card and introductory text sticking to the left as project images pass. Giant typography slides sideways with letters sharpening from a blur, leading into horizontal marquees and chrome objects that render in three dimensions. A custom follower cursor tracks movement, expanding to show media or text slots when hovering over work cards. Navigation links fade in opacity with a specific ease, and the logo shifts colour subtly, providing tactile feedback without disrupting the ambient flow. Page changes occur via client-side routing where the menu expands from a pill shape to cover the viewport with a frosted glass effect before revealing the next destination.

Scroll (Scroll smoothing)
Smooth scroll · lerp 0.07 · 95 % caught up in 710 ms Measured ±0.003 % fit error; authoritative for scroll, viewport 1440
Scroll smoothing, time-based
a = 1 - Math.exp(-dtMs / 238) Measured derived from the 238 ms time constant; stored lerp 0.07 is per 60 fps frame, so applying it once per animation frame changes the feel when the frame rate is not 60
Page transition
Client-side route change Estimate drafted from notes; tune by eye
Ambient
One canvas draws the grainy ribbon field behind the hero… Estimate drafted from notes; tune by eye
Hover and focus (CSS)
200 ms cubic-bezier(0.55, 0, 0.29, 1) on opacity Live CSS
Hover and focus (CSS)
450 ms cubic-bezier(0.1, 0, 0.2, 1) on transform, all Live CSS
Keyframe animation (CSS)
1283 ms linear Live CSS
Keyframe animation (CSS)
1283 ms linear Live CSS
Custom curves in the CSS
cubic-bezier(0.1, 0, 0.2, 1); cubic-bezier(0.165, 0.84, 0.44, 1); cubic-bezier(0.895, 0.03, 0.685, 0.22) Live CSS

Libraries and techniques

  • GSAP. code signature: "gsap.com"
  • ScrollTrigger. code signature: "ScrollTrigger"
  • Lenis. code signature: ""lenis""
  • three.js. runtime: three.js 175 on window
  • Nuxt. runtime: Nuxt marker on the page
  • Split-text line or word reveals. SplitType char/word spans
  • Sticky or pinned sections. 2 position: sticky elements
  • WebGL canvas. 2 WebGL canvases
  • Background or inline video. 2 video elements
  • Blur-to-sharp entrances. 8 elements with filter: blur
  • Frosted glass (backdrop-filter). 8 elements with backdrop-filter
  • View Transitions API. @view-transition or startViewTransition in the code

Inspect

Specs

Measured means fitted to the frames, with its fit error.

Scroll smoothing

Measuredsmoothed

Smooth scroll · lerp 0.07 · 95 % caught up in 710 ms

What is lerp
Scroll
lerp 0.07 per 60 fps frame (Lenis’s lerp option); time constant 238 ms; wheel input
Fit
RMS ±0.003% · peak ±0.005%

Fit against the frames

Page trails input, per frame Fit 0.4 px RMS over 13866 px

Transitions

Estimateestimate

Client-side route change

client-side (Nuxt).

WebGL/canvas

Estimateestimate

One canvas draws the grainy ribbon field behind the hero…

one canvas draws the grainy ribbon field behind the hero (time-driven, slow drift); a second full-viewport canvas probably renders the 3D objects further down.

Techniques on this site.

Live demos, explanations and code to explore on their own.

Notes

5 notes

near-black navy with a grainy WebGL field of broad curved ribbons in pink, violet and white, under a headline that mixes a light grotesk with an italic display serif ("Pushing the boundaries of web technologies."). A frosted pill header and a giant white footer wordmark.

Load. dark screen for a few seconds (about 3 s on phone, longer here), then the header pill fades in and headline words unblur and unclip one by one (per-word --blur and --clip variables), with the WebGL ribbons drifting slowly. The bottom media window swaps project clips about every 1–2 s.

Show more notes
Motion
Intro, Scroll, Hover, Page transition, Ambient
Footage
19 clips, frame-stepped
Captured
26 Sep 2026

Libraries detected

Stack as observed

Nuxt (Vue); motion: Lenis on a wrapper element (div.lenis.lenis-smooth; the window itself does not scroll, scrollHeight = viewport), bundle contains GSAP + ScrollTrigger + CustomEase, three.js r175 (__THREE__, two full-width webgl2 canvases), Splitting.js-style word/char spans (71 split elements), Cuberto-style "mf-cursor" follower, CSS-animated SVG wordmark paths.

On phones

same load and ribbons; the headline is smaller and the media window is a rounded pill at the bottom. Work is one column; the horizontal type still slides; services become a list with a mint highlight bar; the footer stacks cards under the local-time line. Custom cursor removed.

Motion notes

Hover and cursor. custom follower cursor (small dot, with media and text slots probably used over work cards); header links fade to 0.6 opacity in 200 ms cubic-bezier(0.55, 0, 0.29, 1); logo colours change over 500 ms on the same curve.

Record

Capture record

Saved on 24 Sep 2026. Full pages, stills and key frames.

Home · 1440 px wide · 14,494 px tall · 2026-09-24

Funkhaus · Home · 1440 px wide · 14,494 px tall

Home · 390 px wide · 11,892 px tall · 2026-09-24

Funkhaus · Home · 390 px wide · 11,892 px tall

First view
Intro key frames
Scroll key frames
Hover key frames
Menu key frames
Page transition key frames

Key pages

  • Work /en/work
    Work · 1440 px wide · 29,312 px tall · 2026-09-24

    Funkhaus · Work · 1440 px wide · 29,312 px tall

    0.00 s / 61.40 sF001/1842

    Scroll · 1440 px · 61.40 s · 30 fps
    Work · 390 px wide · 19,823 px tall · 2026-09-24

    Funkhaus · Work · 390 px wide · 19,823 px tall

    0.00 s / 61.63 sF001/1849

    Scroll · 390 px · 61.63 s · 30 fps
  • Services /en/value
    Services · 1440 px wide · 8,134 px tall · 2026-09-24

    Funkhaus · Services · 1440 px wide · 8,134 px tall

    0.00 s / 12.40 sF001/372

    Scroll · 1440 px · 12.40 s · 30 fps
    Services · 390 px wide · 7,396 px tall · 2026-09-24

    Funkhaus · Services · 390 px wide · 7,396 px tall

    0.00 s / 15.37 sF001/461

    Scroll · 390 px · 15.37 s · 30 fps
  • About us /en/studio
    About us · 1440 px wide · 7,768 px tall · 2026-09-24

    Funkhaus · About us · 1440 px wide · 7,768 px tall

    0.00 s / 11.97 sF001/359

    Scroll · 1440 px · 11.97 s · 30 fps
    About us · 390 px wide · 7,550 px tall · 2026-09-24

    Funkhaus · About us · 390 px wide · 7,550 px tall

    0.00 s / 16.00 sF001/480

    Scroll · 390 px · 16.00 s · 30 fps
  • Contact /en/contact
    Contact · 1440 px wide · 1,240 px tall · 2026-09-24

    Funkhaus · Contact · 1440 px wide · 1,240 px tall

    0.00 s / 2.57 sF001/77

    Scroll · 1440 px · 2.57 s · 30 fps
    Contact · 390 px wide · 1,725 px tall · 2026-09-24

    Funkhaus · Contact · 390 px wide · 1,725 px tall

    0.00 s / 3.47 sF001/104

    Scroll · 390 px · 3.47 s · 30 fps
  • Privacy Policy /datenschutz
    Privacy Policy · 1440 px wide · 2,667 px tall · 2026-09-24

    Funkhaus · Privacy Policy · 1440 px wide · 2,667 px tall

    0.00 s / 4.60 sF001/138

    Scroll · 1440 px · 4.60 s · 30 fps
    Privacy Policy · 390 px wide · 3,375 px tall · 2026-09-24

    Funkhaus · Privacy Policy · 390 px wide · 3,375 px tall

    0.00 s / 6.77 sF001/203

    Scroll · 390 px · 6.77 s · 30 fps

Captured

  1. 24 Sep 2026 Shown home · 1440 px · home · 390 px · key pages · 1440 px · key pages · 390 px