Most grooming sites show a price list and hope. Fadeline treats the haircut as the product it is: eight cuts sit in a dark chair room on an endless carousel, and you drag, click, or arrow through them the way you would turn something over in your hands.
Choosing one starts a single continuous camera move. Scroll pushes the view from the full lineup into a close-up of the cut you picked, the accent light and the whole page recolor to it, and the detail beats explain the fade and the top in the language a barber actually uses. The booking CTA never leaves the screen, and it carries the chosen cut with it.
The technical decision that makes it shippable is what loads and when. Only the selected cut is fetched up front, the rest stream in once the first frame is on screen, and a shader pulls saturation down and vignettes the edges so eight different stock sources read as one room. three.js loads on this route alone, and the reduced-motion path renders the same scene static with every control still working.