diff --git a/presentation/prototype/scatter-variants.html b/presentation/prototype/scatter-variants.html
index cfaadaba..7ae5a2c0 100644
--- a/presentation/prototype/scatter-variants.html
+++ b/presentation/prototype/scatter-variants.html
@@ -97,6 +97,7 @@
.missing-title { position: absolute; font: 700 30px/1.2 var(--sans); color: var(--bordeaux-deep); }
.todo-stack { position: absolute; z-index: 2; }
+ .todo-stack .todo { cursor: pointer; }
.isle .ico { color: var(--bordeaux); }
.isle.ghost .ico { color: #9a938f; }
.isle .nm { font-size: 15px; }
@@ -220,10 +221,10 @@ function ghostIsle(g, size, rot, x, y) {
/* ---- A · Constellation: scattered islands (hand-placed, organic jitter) ---- */
const TODO_STACK = [
- ['Clinical Intelligence', 'dashboards on the clinical history of the Unit and its patients'],
- ['Datawarehouse', 'the single source of truth'],
- ['ML-ready data', 'cohort tables, ready for model training'],
- ['Professional Portal', 'AritmoLab — the grown-up Omics Portal'],
+ { key: 'ci', name: 'Clinical Intelligence', cap: 'dashboards on the clinical history of the Unit and its patients' },
+ { key: 'dwh', name: 'Datawarehouse', cap: 'the single source of truth' },
+ { key: 'ml', name: 'ML-ready data', cap: 'cohort tables, ready for model training' },
+ { key: 'portal', name: 'Professional Portal', cap: 'AritmoLab — the grown-up Omics Portal' },
];
/* three placements of the central "to build" rectangles */
@@ -251,7 +252,7 @@ const ORBIT_CFG = {
function orbitSlide02(v) {
const cfg = ORBIT_CFG[v];
let h = `
` +
- TODO_STACK.map(([n, c], i) => `
?${n}${c}
`).join('') + `
`;
+ TODO_STACK.map((td, i) => `?${td.name}${td.cap}
`).join('') + ``;
for (const s of cfg.isles) {
const sys = SYS.find(vv => vv.key === s.key);
h += `