tileCountAt
How many tiles tilesAt would return for zoom/bounds, computed from the two corner indices rather than by materializing the list — stays O(1) per zoom regardless of how large the actual count is. Shared by TerrainRegionExtractor (to bound memory before enumerating) and :feature:map-maplibre's own pre-download estimate shown in the layers sheet.