Every duration is a token with a value per volume, printed as --mk-dur-<name> and resolved by the volume of the element that reads it: a Press section on a Studio page plays its panels at Press's 360 ms without a line of script. Pick the volume on the stage and press Play: each bar fills over its own token, so it takes exactly as long as the moment does.
The timeline#
The reading layer
--mk-dur-hover--mk-dur-press--mk-dur-key-sink--mk-dur-overlay-in--mk-dur-overlay-out--mk-dur-drawer-in--mk-dur-drawer-out--mk-dur-disclosure--mk-dur-gauge--mk-dur-toast-in--mk-dur-toast-out
Fixed
--mk-dur-toast-life--mk-dur-seal-delay--mk-dur-sfx-hold--mk-dur-press-run--mk-dur-theme--mk-dur-gl-fade--mk-dur-field-wake--mk-dur-field-run--mk-dur-field-ease--mk-dur-field-pulse--mk-dur-loader-cycle--mk-dur-reduced
Micro moments
--mk-dur-sticker-pop--mk-dur-sticker-pop-delay--mk-dur-peel--mk-dur-stamp--mk-dur-thump--mk-dur-specks--mk-dur-seal--mk-dur-register--mk-dur-sfx-pop--mk-dur-sfx-out--mk-dur-block-hop--mk-dur-block-drop--mk-dur-block-drop-stagger--mk-dur-reink--mk-dur-topple-step--mk-dur-topple-fall
Long moments
--mk-dur-panel--mk-dur-panel-stagger--mk-dur-arrival--mk-dur-wipe
Four classes#
- The reading layer moves the same at every volume (D-B2): a key sinks in 120 ms, a dialog opens in 240 ms, a toast drops in 380 ms, whatever the dial says.
- Fixed durations never scale: the press run's 800 ms, the paper's 400 ms crossfade, the field's 4 s run.
- Micro moments (stickers, stamps, SFX, blocks) are off at Quiet and the same from Studio up.
- Long moments grow with the volume: panels go from 300 ms at Studio to 420 ms at Rave, and the page wipe only exists at Press and Rave.
Staggers#
A batch arrives one step apart: panels at their volume's step (40, 48 or 55 ms), at most eight to a batch, words 60 ms apart, tiles 70 ms, blocks dropping onto the pile 90 ms in seat order.
Reduced motion#
Under reduced motion every duration is 0 except the ones that are waits rather than moves: --mk-dur-toast-life (5.2 s), --mk-dur-seal-delay (1.2 s), --mk-dur-sfx-hold (600 ms), --mk-dur-theme (140 ms) and --mk-dur-reduced (140 ms, the fade everything else may use). Turn on the stage's Reduced motion switch and play the timeline to see the bars that stay.
In code#
.offer-banner {
animation: arrive var(--mk-dur-panel) var(--mk-ease-out) backwards;
animation-delay: calc(var(--mk-i, 0) * var(--mk-dur-panel-stagger));
}import { dur } from "@maxgrits/overprint-tokens/motion";
dur("panel", "press"); // 360
dur("panel", "press", "reduce"); // 0