Pure CSS Column Masonry
The zero-dependency version. Its fill order is the tradeoff, and the code says so out loud.
Create a masonry using pure CSS multi-column layout: columns-1 on mobile, sm:columns-2, lg:columns-3, gap-4, each figure mb-4 with break-inside-avoid so no tile is ever sliced across two columns. Images use natural height with explicit width and height attributes, loading lazy. Add a code comment stating the honest tradeoff: CSS columns fill down column one before column two, so with a large collection the top of the page is all column one and the visual reading order runs vertically — fine for an even photo set, wrong where sequence matters.

