placeholder above with the sprite's markup). Present in the very first HTML byte the browser parses, so curated lookups resolve synchronously against a same-document #icon-X at first paint — no fetch, no pop-in. Previously this sprite was fetched asynchronously and injected at boot, which left rail/header icons blank until the fetch landed (the "icon pop-in" bug). Lucide sprite (/generated/ui/icons/lucide-sprite.svg, ~79 KB gz, ~1700 icons): NOT merged into the DOM. Resolved via external from Icon.svelte — the browser fetches it once, caches it, and de-duplicates across all references. We preload it at low priority so it's warm in the HTTP cache by the time any lucide icon renders, but it stays out of the DOM entirely. This drops the page's element count by ~8,000 (lucide is ~1,700 s, each with several //etc. children that all count toward Lighthouse's DOM-size warning). Cache key: ?v=ccd4eec6f auto-busts on every deploy (replaced by hooks.server.ts transformPageChunk using VITE_BUILD_VER, same as the stylesheet/JS loaders above). Icon.svelte's external-href version reads from the same VITE_BUILD_VER define so they stay in sync. -->