betterwithage Claude Opus 4.7 commited on
Commit
d10566a
·
verified ·
1 Parent(s): 19e015f

deploy(hf): sync szl-holdings/a11oy@main derived COPY set

Browse files

Reusable Dockerfile-COPY-derived deploy from szl-holdings/a11oy main.
Files: 871 Pruned: 0
Derived from Dockerfile COPY sources (NO hand-maintained allowlist).

Signed-off-by: SZL Holdings <noreply@szlholdings.ai>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Files changed (1) hide show
  1. static/3d/holographic.html +45 -15
static/3d/holographic.html CHANGED
@@ -19,26 +19,55 @@
19
  :root{--bg:#05070d;--panel:#0b121b;--line:#1b2734;--teal:#39d3c4;--gold:#e8c074;--cream:#eef3f6;--para:#9fb1bf;}
20
  *{box-sizing:border-box}
21
  html,body{margin:0;height:100%}
22
- body{background:var(--bg);color:var(--cream);font:14px/1.5 ui-sans-serif,system-ui,Segoe UI,Roboto,Arial;overflow:hidden}
 
 
 
 
23
  header{padding:10px 16px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#08101a,#05070d);
24
- display:flex;align-items:center;gap:14px;flex-wrap:wrap}
25
  h1{font-size:16px;margin:0;letter-spacing:.4px}
26
  .badge{display:inline-block;font:10.5px ui-monospace,monospace;padding:2px 7px;border-radius:6px;
27
- border:1px solid var(--line);color:var(--gold);background:#10171f}
28
  #backend{color:var(--teal)}
29
- .tabs{display:flex;gap:6px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid var(--line);background:#070d15}
 
 
 
30
  .tab{font:11.5px ui-monospace,monospace;padding:6px 12px;border-radius:7px;border:1px solid var(--line);
31
- background:#0a121b;color:var(--para);cursor:pointer;letter-spacing:.3px;transition:.12s}
32
  .tab:hover{border-color:var(--teal);color:var(--cream)}
33
  .tab[aria-selected="true"]{background:#12202b;color:var(--cream);border-color:var(--teal);box-shadow:0 0 0 1px var(--teal) inset}
34
- #stage-wrap{position:relative;width:100vw;height:calc(100vh - 96px)}
35
  #stage{position:absolute;inset:0}
36
- #stage canvas{display:block;width:100%;height:100%}
37
  #fallback{position:absolute;inset:0;display:none;align-items:center;justify-content:center;
38
  text-align:center;color:var(--para);padding:24px;font:13px ui-monospace,monospace}
39
- footer{position:fixed;bottom:0;left:0;right:0;padding:6px 14px;border-top:1px solid var(--line);
40
- background:#070d15;color:var(--para);font:10.5px ui-monospace,monospace;letter-spacing:.3px;z-index:6}
 
41
  a{color:var(--teal);text-decoration:none}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  </style>
43
  </head>
44
  <body>
@@ -46,8 +75,8 @@
46
  <h1>◇ Holographic Estate</h1>
47
  <span class="badge" id="backend">renderer: …</span>
48
  <button class="badge" id="gpu-toggle" title="Toggle WebGPU compute path (falls back to WebGL2 if the browser/driver can't provide a WebGPU device). WebGPU is not production-safe on all platforms — doctrine." style="cursor:pointer;background:#10171f">⚡ WebGPU: off</button>
49
- <span class="badge">three r<span id="three-rev">…</span></span>
50
- <span class="badge">0 runtime CDN</span>
51
  <span class="badge">Λ = Conjecture 1</span>
52
  <a href="/" style="margin-left:auto;font:11px ui-monospace,monospace">← a11oy</a>
53
  </header>
@@ -120,9 +149,6 @@ const SURFACES = [
120
  { id: "router", title: "Router", mod: "/static/3d/surfaces/router.js" },
121
  { id: "anatomy", title: "Anatomy", mod: "/static/3d/surfaces/anatomy.js" },
122
  { id: "estate", title: "Estate", mod: "/static/3d/surfaces/estate.js" },
123
- { id: "muon", title: "Muon Orthogonalized-Momentum Optimizer", mod: "/static/3d/surfaces/muon.js" },
124
- { id: "specexec", title: "Tree Speculative Execution", mod: "/static/3d/surfaces/specexec.js" },
125
- { id: "nvfp4", title: "NVFP4 4-bit Training Format", mod: "/static/3d/surfaces/nvfp4.js" },
126
  ];
127
 
128
  const stageEl = document.getElementById("stage");
@@ -232,7 +258,11 @@ SURFACES.forEach((s) => {
232
  const b = document.createElement("button");
233
  b.className = "tab"; b.textContent = s.title; b.dataset.id = s.id;
234
  b.setAttribute("role", "tab"); b.setAttribute("aria-selected", "false");
235
- b.addEventListener("click", () => selectSurface(s.id));
 
 
 
 
236
  tabsEl.appendChild(b);
237
  });
238
 
 
19
  :root{--bg:#05070d;--panel:#0b121b;--line:#1b2734;--teal:#39d3c4;--gold:#e8c074;--cream:#eef3f6;--para:#9fb1bf;}
20
  *{box-sizing:border-box}
21
  html,body{margin:0;height:100%}
22
+ /* Flex column so the 3D stage always fills the space left over by the header +
23
+ tab strip, no matter how far they wrap. dvh (dynamic viewport height) tracks
24
+ the mobile address-bar collapse; svh/100vh are fallbacks for older engines. */
25
+ body{background:var(--bg);color:var(--cream);font:14px/1.5 ui-sans-serif,system-ui,Segoe UI,Roboto,Arial;
26
+ overflow:hidden;display:flex;flex-direction:column;height:100vh;height:100svh;height:100dvh}
27
  header{padding:10px 16px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#08101a,#05070d);
28
+ display:flex;align-items:center;gap:14px;flex-wrap:wrap;flex:0 0 auto}
29
  h1{font-size:16px;margin:0;letter-spacing:.4px}
30
  .badge{display:inline-block;font:10.5px ui-monospace,monospace;padding:2px 7px;border-radius:6px;
31
+ border:1px solid var(--line);color:var(--gold);background:#10171f;white-space:nowrap}
32
  #backend{color:var(--teal)}
33
+ /* Desktop: tabs wrap. Mobile (below): one horizontally-scrollable row so the
34
+ ~50 tabs don't build a tall wall that shoves the 3D stage off-screen. */
35
+ .tabs{display:flex;gap:6px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid var(--line);
36
+ background:#070d15;flex:0 0 auto}
37
  .tab{font:11.5px ui-monospace,monospace;padding:6px 12px;border-radius:7px;border:1px solid var(--line);
38
+ background:#0a121b;color:var(--para);cursor:pointer;letter-spacing:.3px;transition:.12s;white-space:nowrap}
39
  .tab:hover{border-color:var(--teal);color:var(--cream)}
40
  .tab[aria-selected="true"]{background:#12202b;color:var(--cream);border-color:var(--teal);box-shadow:0 0 0 1px var(--teal) inset}
41
+ #stage-wrap{position:relative;flex:1 1 auto;min-height:0;width:100%}
42
  #stage{position:absolute;inset:0}
43
+ #stage canvas{display:block;width:100%;height:100%;touch-action:none}
44
  #fallback{position:absolute;inset:0;display:none;align-items:center;justify-content:center;
45
  text-align:center;color:var(--para);padding:24px;font:13px ui-monospace,monospace}
46
+ footer{padding:6px 14px;border-top:1px solid var(--line);flex:0 0 auto;
47
+ background:#070d15;color:var(--para);font:10.5px ui-monospace,monospace;letter-spacing:.3px;z-index:6;
48
+ white-space:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
49
  a{color:var(--teal);text-decoration:none}
50
+
51
+ /* ---- Mobile / touch (<=640px) ---------------------------------------- */
52
+ @media (max-width:640px){
53
+ header{padding:8px 12px;gap:8px}
54
+ h1{font-size:14px;flex:1 1 100%}
55
+ /* Keep only the essential badges visible; hide the noisier ones on small screens. */
56
+ header .badge{font-size:9.5px;padding:2px 6px}
57
+ #three-rev-badge,#cdn-badge{display:none}
58
+ /* Horizontal scroll strip for the tabs, with the active tab kept in view. */
59
+ .tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
60
+ padding:7px 10px;scrollbar-width:thin}
61
+ .tabs::-webkit-scrollbar{height:4px}
62
+ .tabs::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}
63
+ .tab{padding:7px 11px;font-size:11px;flex:0 0 auto}
64
+ footer{font-size:9px;padding:5px 10px}
65
+ /* Give the 3D stage a guaranteed usable share of the screen on phones. */
66
+ #stage-wrap{min-height:52vh}
67
+ }
68
+ @media (max-width:640px) and (orientation:landscape){
69
+ #stage-wrap{min-height:60vh}
70
+ }
71
  </style>
72
  </head>
73
  <body>
 
75
  <h1>◇ Holographic Estate</h1>
76
  <span class="badge" id="backend">renderer: …</span>
77
  <button class="badge" id="gpu-toggle" title="Toggle WebGPU compute path (falls back to WebGL2 if the browser/driver can't provide a WebGPU device). WebGPU is not production-safe on all platforms — doctrine." style="cursor:pointer;background:#10171f">⚡ WebGPU: off</button>
78
+ <span class="badge" id="three-rev-badge">three r<span id="three-rev">…</span></span>
79
+ <span class="badge" id="cdn-badge">0 runtime CDN</span>
80
  <span class="badge">Λ = Conjecture 1</span>
81
  <a href="/" style="margin-left:auto;font:11px ui-monospace,monospace">← a11oy</a>
82
  </header>
 
149
  { id: "router", title: "Router", mod: "/static/3d/surfaces/router.js" },
150
  { id: "anatomy", title: "Anatomy", mod: "/static/3d/surfaces/anatomy.js" },
151
  { id: "estate", title: "Estate", mod: "/static/3d/surfaces/estate.js" },
 
 
 
152
  ];
153
 
154
  const stageEl = document.getElementById("stage");
 
258
  const b = document.createElement("button");
259
  b.className = "tab"; b.textContent = s.title; b.dataset.id = s.id;
260
  b.setAttribute("role", "tab"); b.setAttribute("aria-selected", "false");
261
+ b.addEventListener("click", () => {
262
+ selectSurface(s.id);
263
+ // On the mobile horizontal tab strip, keep the tapped tab in view.
264
+ try { b.scrollIntoView({ behavior: "smooth", inline: "center", block: "nearest" }); } catch (_) {}
265
+ });
266
  tabsEl.appendChild(b);
267
  });
268