diff --git a/src/app/insights/catalog/page.tsx b/src/app/insights/catalog/page.tsx index 5f050dee2..db106235c 100644 --- a/src/app/insights/catalog/page.tsx +++ b/src/app/insights/catalog/page.tsx @@ -122,8 +122,10 @@ function CatalogRowSkeleton() { data-slot="catalog-row-skeleton" className="flex items-start justify-between gap-3 py-2" > -
- + {/* Sized to the loaded row (a 22 px name-and-badge line over a 16 px + source line), so the groups below do not move when it lands. */} +
+
diff --git a/src/components/insights/derived/delta-sparkline.tsx b/src/components/insights/derived/delta-sparkline.tsx index 9736cbd67..2e7462786 100644 --- a/src/components/insights/derived/delta-sparkline.tsx +++ b/src/components/insights/derived/delta-sparkline.tsx @@ -62,7 +62,14 @@ export function DeltaSparkline({ const hasComparison = data.some((point) => point.b !== undefined); return ( - + {/* A sparkline is decoration inside an aria-hidden wrapper: without + the accessibility layer Recharts puts a focusable surface in it, + and a focus stop nobody can perceive is an axe failure. */} +