Allegro
the turntable — hover state, conic gradients
Hover or focus the turntable — the tonearm lowers itself with nothing but :hover and :focus-within.
Adagio
the cassette — state without JavaScript, via :has()
The toggle in the title scene pauses every animation on this page — equalizer, vinyl, reels, stage lights — through a single body:has(#master-toggle:checked) rule.
Capriccio
the strings — damped keyframe oscillation
Tab or click a string to pluck it. Each one decays through a hand-tuned multi-step @keyframes curve.
Presto
the stage lights — clip-path, @property, mix-blend-mode
Three animated light cones, swept and recoloured purely in CSS using a registered @property --hue custom property.
Largo
the staff — infinite marquee, container queries
Coda
the programme notes — what's actually playing
- Custom properties &
@property— animatable, type-checked CSS variables drive the title gradient and stage-light hues. :has()for state — the master pause toggle controls the whole page with zero JavaScript.clip-path&conic-gradient— the spotlight cones and curtain folds are shaped, not drawn.- Container queries — this programme list re-flows by its own width, not the viewport's.
prefers-reduced-motion— every animation collapses gracefully when requested.- One JavaScript flourish — a transpose button below nudges a CSS hue variable, and an
IntersectionObserverreveals each movement on scroll.