K06 — Motion & Cursor

Crafted, cinematic, never in the way.

Motion in PROOF behaves like film editing: cuts for state, slow reveals for images, a quick press for stamps. Every effect is optional and respects reduced motion.

01

Durations & easings

Five durations and three signature curves. Pick the shortest duration that still reads; images get “reveal”, stamps get “ink”, state changes get “cut”.

--dur-cut
120ms · state, hover
--dur-quick
240ms · menus, tooltips
--dur-base
400ms · cards, panels
--dur-reveal
700ms · images, transitions
--dur-cinema
1000ms · heroes, Cinematic
Cut — instant, like a film cut
steps(1, end)
Reveal — slow ease-out for images
cubic-bezier(.16, 1, .3, 1)
Ink — stamp press, slight overshoot
cubic-bezier(.2, 1.4, .4, 1)
02

Scroll-trigger catalog

Every effect PROOF allows, live. They trigger once on first view and can be replayed here. None of them hijack scrolling.

No. 07A
Contact sheet → circle → case study
click · 650 ms draw · 700 ms shared element
Chapter 03
Chapter 02
Trim transition
clip-path along crop lines · 700 ms cut
Brühl · shelf · 16:9
Masked image reveal
inset mask + 1.08 → 1 scale · 1000 ms reveal
+38%
online orders!
Line-drawn annotation
stroke-dashoffset · 700 ms
Approved
Stamp press
scale 1.6 → 1 · 380 ms ink
No. 01A
No. 02A
No. 03A
No. 04A
No. 05A
No. 06A
No. 07A
No. 08A
Horizontal filmstrip
native scroll + snap · drag or swipe
Brühl Coffee2025
Hafen Radio2024
Studio Keller2023
Blau Hotel2022
Cursor-following preview
list index · preview trails pointer by 80 ms
Three directions
went to tasting.
The quiet one sold.
Line-by-line text reveal
per line · 80 ms stagger · 700 ms reveal
scroll the page · max 10%
Restrained parallax
image drifts ≤ 10% of its height on page scroll
Paused · out of view
Muted autoplay in view
plays only while visible · sound off by default
03

Cursor system

A small labeled tag rides next to the native cursor on fine pointers only. It never replaces the cursor, and touch devices never see it. Hover the zones.

ViewProject cards, thumbnails
DragFilmstrips, sliders
PlayVideo, reels
ZoomLoupe, detail images
OpenContact-sheet frames
04

Motion personalities

Each preset overrides --dur and --ease. Forms, checkout and the proofing portal ignore the personality and stay calm in every preset.

Editorial
Measured · 400 ms
Gallery
Near-still · 700 ms
Raw
Abrupt · 120 ms steps
Playful
Bouncy · overshoot
Cinematic
Slow · 1000 ms
05

Page transitions

Cross-document View Transitions are live in this kit: open D02 and choose Hofmark Dairy; the frame and the D03 hero share view-transition-name “hofmark”. Transform and opacity only. Anything that moves longer than 5 seconds gets a pause control (WCAG 2.2.2). Browsers without support get a plain cut, which is also the reduced-motion behavior.

@view-transition { navigation: auto; }
.frame-07A, .case-hero { view-transition-name: bruehl; }
::view-transition-group(bruehl) {
  animation-duration: 700ms;
  animation-timing-function: var(--ease-reveal);
}
@media (prefers-reduced-motion: reduce) {
  ::view-transition-group(*) { animation: none; }
}
  1. 01No scroll-jacking. Wheel and keys always scroll the page.
  2. 02Parallax never exceeds 10% of the element’s height.
  3. 03Sound is off by default; the toggle remembers the choice.
  4. 04Nothing loops forever: no marquees, no infinite spinners.
  5. 05Motion never delays reading: text is readable before a reveal finishes.