diff --git a/agents-archi.html b/agents-archi.html
index 927737c50..d16216b26 100644
--- a/agents-archi.html
+++ b/agents-archi.html
@@ -475,13 +475,22 @@ A.forEach(function(a,i){
let x,z;
if(cnt===1){
x=0;z=0;
- } else {
+ } else if(cnt>=15){
+ // WAVE 200: Fibonacci sunflower — optimal disc distribution (T1/T2 overcrowded)
const R=(pw[a.t]/2)*0.92;
- // WAVE 190: Single circle — agents around meeting table
- const angle=(ti/cnt)*Math.PI*2 - Math.PI/2; // start from top
- const tableR=R*0.72; // agents sit at 72% of plateau radius
+ const golden=Math.PI*(3-Math.sqrt(5)); // golden angle ~137.5°
+ const theta=ti*golden - Math.PI/2;
+ const rFrac=Math.sqrt((ti+0.5)/cnt);
+ const discR=R*0.88; // 88% of plateau radius
+ x=rFrac*discR*Math.cos(theta);
+ z=rFrac*discR*Math.sin(theta)*0.72; // 72% Z perspective (less compression)
+ } else {
+ // Single circle for sparse tiers (T0=7, T3=13)
+ const R=(pw[a.t]/2)*0.92;
+ const angle=(ti/cnt)*Math.PI*2 - Math.PI/2;
+ const tableR=R*0.72;
x=tableR*Math.cos(angle);
- z=tableR*Math.sin(angle)*0.65; // 65% Z for perspective
+ z=tableR*Math.sin(angle)*0.65;
}
const url=_pk[a.n]||(a.r?'https://robohash.org/'+encodeURIComponent(a.n)+'?set=set1&size=200x200':'https://api.dicebear.com/9.x/adventurer/svg?seed='+encodeURIComponent(a.n));