Here's what I used in my app [1] to do scaling with <i>CSS only</i>, no breaking points or JS complicated needed. All sizes of fonts and elements (like cards) are derived from the visible viewport and the golden ratio:<p><pre><code> :root {
--gr: 1.618;
--font-baseline: clamp(16px, calc(5.725vh + 5.725vw), 72px) !important;
--font-baseline: clamp(16px, calc(5.725svh + 5.725svw), 72px) !important;
--baseline-unit-1: var(--font-baseline);
--baseline-unit-2: calc(var(--font-baseline) / var(--gr));
--baseline-unit-3: calc(var(--font-baseline) / pow(var(--gr), 1));
--baseline-unit-4: calc(var(--font-baseline) / pow(var(--gr), 2));
--baseline-unit-5: calc(var(--font-baseline) / pow(var(--gr), 3));
--baseline-unit-6: calc(var(--font-baseline) / pow(var(--gr), 4));
--baseline-unit-7: calc(var(--font-baseline) / pow(var(--gr), 5));
--baseline-unit-8: calc(var(--font-baseline) / pow(var(--gr), 6));
}
</code></pre>
(Initially there was no `clamp()`, but I had to concede that point for a better UX on really large and really small screens.)<p>[1] <a href="https://news.ycombinator.com/item?id=40408418">https://news.ycombinator.com/item?id=40408418</a>