// Organization chart — spatial node canvas with kinetic tendrils
function OrgChart() {
// nodes positioned on a 1200x720 virtual canvas
const main = { x: 600, y: 140, label: "Prime", role: "Orchestrator · Claude Sonnet" };
const subs = [
{ x: 220, y: 420, label: "Market Sentry", role: "Markets & risk", color: "gold", tasks: 4 },
{ x: 440, y: 520, label: "Creative Director", role: "Brand & copy", color: "cyan", tasks: 2 },
{ x: 760, y: 520, label: "Research Specialist", role: "Primary research", color: "cyan", tasks: 3 },
{ x: 980, y: 420, label: "Ops Steward", role: "Infra & secrets", color: "cyan", tasks: 1 },
];
const leaves = [
{ parent: 0, x: 100, y: 640, label: "Tape Reader" },
{ parent: 0, x: 240, y: 680, label: "Risk Officer" },
{ parent: 1, x: 420, y: 660, label: "Scribe" },
{ parent: 2, x: 740, y: 680, label: "Fact-checker" },
{ parent: 2, x: 860, y: 640, label: "Archivist" },
{ parent: 3, x: 1080, y: 640, label: "Key Rotator" },
];
return (
}
/>
{/* canvas background */}
{/* subtle compass eyebrow */}
CHARTER ∙ 21 APR 2026
NODES 11 · EDGES 10
{/* Main orb */}
{/* Sub nodes */}
{subs.map((s, i) => )}
{/* Leaf nodes */}
{leaves.map((l, i) => )}
);
}
function NodePrime({ x, y, label, role }) {
return (
);
}
function NodeSub({ x, y, label, role, color, tasks }) {
const c = color === "gold" ? "var(--gold)" : "var(--accent)";
return (
{label}
{role.toUpperCase()} · {tasks} OPEN
);
}
function NodeLeaf({ x, y, label, color }) {
const c = color === "gold" ? "var(--gold)" : "var(--accent)";
return (
);
}
function LegendBlock({ title, lines }) {
return (
{title}
{lines.map((l, i) => (
-
· {l}
))}
);
}
window.OrgChart = OrgChart;