`font-size: clamp(min, preferred, max)` is the core tool. Mix a relative unit like `vw` (1% of viewport width) into the preferred value, and size grows as the screen widens — until it hits the max — and shrinks as it narrows, until it hits the min. No media query breakpoints; it's continuous in between.
`vw` is viewport-relative, which is wrong for text that should respond to its container instead — a sidebar, say. Give the parent `container-type: inline-size` and use `cqw` (1% of the container's width) instead, and the text scales with that specific container rather than the whole viewport. This demo uses `cqw`.
Too wide a `clamp()` range can make text uncomfortably small on tiny screens, or push line length (measure) too wide on huge ones — worth actually testing the min and max in practice rather than guessing.
When to use
Hero headlines, card titles — anywhere size needs to transition smoothly across a range of screen or container widths.