Spaces:
Running
feat(3d-heroes): replace chibi 2D avatars with real Three.js 3D heroes — Yachay
Browse filesReplace the chibi 2D avatar stickers on the SZL Holdings org card with five
distinct, real Three.js r171 3D hero figures (one per organ), rendered above
the fold and each in its own scene cell:
amaru — serpent (TubeGeometry) coiled around a glowing crystal core
sentra — icosahedron hex shield with orbiting/absorbed threat dots
rosie — operator console: head + HUD rings + pulsing data lines
killinchu — low-poly kestrel over faceted terrain, 53 drone-dots circling
a11oy — 16-node icosahedron knot-graph (Khipu cords) with edge pulse
Click any figure -> opens that organ live HF Space. Mobile-first per
SZL_MOBILE_FIRST_STANDARD: viewport-fit=cover, touch-rotate, low-power renderer
on mobile, document.hidden render pause, prefers-reduced-motion honored.
Also adds a Live Mesh panel (/healthz badges flip green/red, 5s poll) + Latest
signed receipts panel (Khipu DAG tail) + running receipt counter. Removes the
chibi mission-room WebP band, ambient chibi emoji layer, and chibi team still.
Fixes stale Doctrine v10 -> Doctrine v11 LOCKED (749/14/163) in footer + meta.
ADDITIVE: banner art, org name, ORCID/GitHub/UDS links, all routes preserved.
Apache-2.0. Doctrine v11 LOCKED: 749 declarations / 14 unique axioms / 163 sorries.
Signed: Yachay <yachay@szlholdings.dev>
Co-Authored-By: Perplexity Computer Agent
- README.md +3 -5
- index.html +293 -61
|
@@ -12,11 +12,9 @@ short_description: Provenanced AI · Lean-proven · DSSE-signed · UDS
|
|
| 12 |
|
| 13 |
<img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/szl_banner.png" alt="SZL Holdings — provenanced AI infrastructure" width="100%"/>
|
| 14 |
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
<a href="https://huggingface.co/spaces/SZLHOLDINGS/rosie"><img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/rosie_avatar.png" width="120" alt="rosie"/></a>
|
| 19 |
-
<a href="https://huggingface.co/spaces/SZLHOLDINGS/killinchu"><img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/vessels_avatar.png" width="120" alt="killinchu"/></a>
|
| 20 |
|
| 21 |
## SZL Holdings — Provenanced AI Infrastructure
|
| 22 |
|
|
|
|
| 12 |
|
| 13 |
<img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/szl_banner.png" alt="SZL Holdings — provenanced AI infrastructure" width="100%"/>
|
| 14 |
|
| 15 |
+
**[amaru](https://huggingface.co/spaces/SZLHOLDINGS/amaru)** · **[sentra](https://huggingface.co/spaces/SZLHOLDINGS/sentra)** · **[rosie](https://huggingface.co/spaces/SZLHOLDINGS/rosie)** · **[killinchu](https://huggingface.co/spaces/SZLHOLDINGS/killinchu)** · **[a11oy](https://huggingface.co/spaces/SZLHOLDINGS/a11oy)**
|
| 16 |
+
|
| 17 |
+
*Five organs, rendered as live interactive 3D figures on the [org card](https://szlholdings-readme.static.hf.space/) (Three.js r171 — touch-rotate on mobile, tap a figure to open its Space).*
|
|
|
|
|
|
|
| 18 |
|
| 19 |
## SZL Holdings — Provenanced AI Infrastructure
|
| 20 |
|
|
@@ -7,9 +7,9 @@
|
|
| 7 |
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
|
| 8 |
<meta name="theme-color" content="#1a0d2e"/>
|
| 9 |
<title>SZL Holdings — Governed Agentic Mesh</title>
|
| 10 |
-
<meta name="description" content="SZL Holdings: a governed agentic mesh. rosie commands a11oy; a11oy enforces; amaru remembers; sentra guards; vessels carries the load. Doctrine
|
| 11 |
<meta property="og:title" content="SZL Holdings — Governed Agentic Mesh"/>
|
| 12 |
-
<meta property="og:description" content="Five organs, ten sub-organs. Every call leaves a receipt. Doctrine
|
| 13 |
<meta property="og:image" content="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/szl_banner.png"/>
|
| 14 |
<meta property="og:type" content="website"/>
|
| 15 |
<link rel="preconnect" href="https://fonts.googleapis.com"/>
|
|
@@ -241,64 +241,228 @@
|
|
| 241 |
</style>
|
| 242 |
</head>
|
| 243 |
<body>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 244 |
|
| 245 |
<!-- BANNER — UNTOUCHED (5-hero painterly artwork is sacred) -->
|
| 246 |
<section id="banner" style="padding:0;border-top:none;">
|
| 247 |
<img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/szl_banner.png" alt="SZL Holdings — the five-hero governed agentic mesh team" style="display:block;width:100%;height:auto;"/>
|
| 248 |
</section>
|
| 249 |
|
| 250 |
-
|
| 251 |
-
above the five-hero portrait row. Six characters, each a small animated WebP
|
| 252 |
-
looping its own cyber task (loop baked into the WebP). Replaces the previous
|
| 253 |
-
static team picture, which now lives in the footer stills strip. Banner, the
|
| 254 |
-
five painterly hero portraits and the ambient emoji layer are untouched.
|
| 255 |
-
Each unit stacks an animated layer over a static first-frame layer; under
|
| 256 |
-
prefers-reduced-motion the animated layer is hidden and the still is shown. -->
|
| 257 |
-
<section id="mission-room">
|
| 258 |
-
<div class="container">
|
| 259 |
-
<p class="mr-head">Mission Room · Live</p>
|
| 260 |
-
<div class="mr-band">
|
| 261 |
-
<span class="mr-unit">
|
| 262 |
-
<img class="mr-static" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/a11oy_still.webp" alt="" aria-hidden="true"/>
|
| 263 |
-
<img class="mr-anim" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/a11oy.webp" alt="a11oy typing at a holographic console"/>
|
| 264 |
-
</span>
|
| 265 |
-
<span class="mr-unit">
|
| 266 |
-
<img class="mr-static" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/amaru_still.webp" alt="" aria-hidden="true"/>
|
| 267 |
-
<img class="mr-anim" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/amaru.webp" alt="amaru reading a scroll of code as provenance glyphs rise"/>
|
| 268 |
-
</span>
|
| 269 |
-
<span class="mr-unit">
|
| 270 |
-
<img class="mr-static" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/sentra_still.webp" alt="" aria-hidden="true"/>
|
| 271 |
-
<img class="mr-anim" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/sentra.webp" alt="sentra raising a hex energy shield, deflecting pixels"/>
|
| 272 |
-
</span>
|
| 273 |
-
<span class="mr-unit">
|
| 274 |
-
<img class="mr-static" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/vessels_still.webp" alt="" aria-hidden="true"/>
|
| 275 |
-
<img class="mr-anim" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/vessels.webp" alt="vessels routing across a holographic globe with a chain-link cursor"/>
|
| 276 |
-
</span>
|
| 277 |
-
<span class="mr-unit">
|
| 278 |
-
<img class="mr-static" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/rosie_still.webp" alt="" aria-hidden="true"/>
|
| 279 |
-
<img class="mr-anim" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/rosie.webp" alt="rosie at the operator console with comms and scrolling holo-text"/>
|
| 280 |
-
</span>
|
| 281 |
-
<span class="mr-unit">
|
| 282 |
-
<img class="mr-static" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/doug_still.webp" alt="" aria-hidden="true"/>
|
| 283 |
-
<img class="mr-anim" width="170" height="170" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/action/doug.webp" alt="Doug the Defense Unicorns mascot at a tactical laptop running a radar sweep"/>
|
| 284 |
-
</span>
|
| 285 |
-
</div>
|
| 286 |
-
<p class="mr-cap">Built for the mission. Built on <b>UDS</b>.</p>
|
| 287 |
-
</div>
|
| 288 |
-
</section>
|
| 289 |
|
| 290 |
<!-- flag block: five hero portraits as links + org name + icon links + footer -->
|
| 291 |
<main id="main">
|
| 292 |
<section style="padding:3.5rem 0;text-align:center;">
|
| 293 |
<div class="container">
|
| 294 |
|
| 295 |
-
<
|
| 296 |
-
<a href="https://huggingface.co/spaces/SZLHOLDINGS/rosie" aria-label="rosie"><img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/rosie_avatar.png" width="128" height="128" alt="rosie" style="border-radius:50%;border:2px solid var(--gold);"/></a>
|
| 297 |
-
<a href="https://huggingface.co/spaces/SZLHOLDINGS/a11oy" aria-label="a11oy"><img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/a11oy_avatar.png" width="128" height="128" alt="a11oy" style="border-radius:50%;border:2px solid var(--gold);"/></a>
|
| 298 |
-
<a href="https://huggingface.co/spaces/SZLHOLDINGS/amaru" aria-label="amaru"><img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/amaru_avatar.png" width="128" height="128" alt="amaru" style="border-radius:50%;border:2px solid var(--gold);"/></a>
|
| 299 |
-
<a href="https://huggingface.co/spaces/SZLHOLDINGS/sentra" aria-label="sentra"><img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/sentra_avatar.png" width="128" height="128" alt="sentra" style="border-radius:50%;border:2px solid var(--gold);"/></a>
|
| 300 |
-
<a href="https://huggingface.co/spaces/SZLHOLDINGS/vessels" aria-label="vessels"><img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/vessels_avatar.png" width="128" height="128" alt="vessels" style="border-radius:50%;border:2px solid var(--gold);"/></a>
|
| 301 |
-
</div>
|
| 302 |
|
| 303 |
<h1 style="margin-bottom:1.4rem;">SZL Holdings</h1>
|
| 304 |
|
|
@@ -311,15 +475,90 @@
|
|
| 311 |
</div>
|
| 312 |
</section>
|
| 313 |
</main>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 314 |
|
| 315 |
<footer style="text-align:center;padding:1.5rem 0;border-top:1px solid var(--border);">
|
| 316 |
<!-- Stills strip: the previous static team picture, relocated here from below the banner
|
| 317 |
when the live Mission Room action band replaced it. Kept as a reference still. -->
|
| 318 |
-
<
|
| 319 |
-
|
| 320 |
-
<img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/group_shot_v1.png" alt="SZL Holdings team portrait: the five painterly heroes alongside Hatun, the SZL mission unicorn" style="display:block;width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--border);opacity:0.9;"/>
|
| 321 |
-
</div>
|
| 322 |
-
<span class="mono" style="font-size:0.72rem;color:var(--text-dim);">— szl-holdings/.github @ d304951 · Doctrine v10 · ORCID 0009-0001-0110-4173</span>
|
| 323 |
</footer>
|
| 324 |
|
| 325 |
<!-- AMBIENT EMOJI LAYER (Wave4, additive) — 5 character emojis hanging around
|
|
@@ -328,13 +567,6 @@
|
|
| 328 |
HTML sanitizer), these small 64px images fall to the page bottom instead of
|
| 329 |
overlaying content; explicit width/height attributes keep them small even
|
| 330 |
with CSS removed. Animation is gated behind prefers-reduced-motion: no-preference. -->
|
| 331 |
-
<
|
| 332 |
-
<span class="ambient-emoji ae-a11oy"><img class="ae-inner" width="64" height="64" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/emoji/a11oy_emoji.png" alt=""/></span>
|
| 333 |
-
<span class="ambient-emoji ae-rosie"><img class="ae-inner" width="64" height="64" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/emoji/rosie_emoji.png" alt=""/></span>
|
| 334 |
-
<span class="ambient-emoji ae-amaru"><img class="ae-inner" width="64" height="64" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/emoji/amaru_emoji.png" alt=""/></span>
|
| 335 |
-
<span class="ambient-emoji ae-sentra"><img class="ae-inner" width="64" height="64" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/emoji/sentra_emoji.png" alt=""/></span>
|
| 336 |
-
<span class="ambient-emoji ae-vessels"><img class="ae-inner" width="64" height="64" src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/emoji/vessels_emoji.png" alt=""/></span>
|
| 337 |
-
</div>
|
| 338 |
-
|
| 339 |
</body>
|
| 340 |
</html>
|
|
|
|
| 7 |
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
|
| 8 |
<meta name="theme-color" content="#1a0d2e"/>
|
| 9 |
<title>SZL Holdings — Governed Agentic Mesh</title>
|
| 10 |
+
<meta name="description" content="SZL Holdings: a governed agentic mesh. rosie commands a11oy; a11oy enforces; amaru remembers; sentra guards; vessels carries the load. Doctrine v11 (749/14/163), formal Lean proofs, signed receipts."/>
|
| 11 |
<meta property="og:title" content="SZL Holdings — Governed Agentic Mesh"/>
|
| 12 |
+
<meta property="og:description" content="Five organs, ten sub-organs. Every call leaves a receipt. Doctrine v11 LOCKED · 749/14/163."/>
|
| 13 |
<meta property="og:image" content="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/szl_banner.png"/>
|
| 14 |
<meta property="og:type" content="website"/>
|
| 15 |
<link rel="preconnect" href="https://fonts.googleapis.com"/>
|
|
|
|
| 241 |
</style>
|
| 242 |
</head>
|
| 243 |
<body>
|
| 244 |
+
<!-- ================= SZL 3D HERO FIGURES (Three.js) — replaces chibi 2D avatars =================
|
| 245 |
+
Five distinct procedural low-poly 3D heroes, one per organ, each in its own scene cell.
|
| 246 |
+
Click a figure -> opens that organ's live HF Space. Mobile-first per SZL_MOBILE_FIRST_STANDARD.
|
| 247 |
+
Aesthetic: dark slate #0a0e14 cells, warm gold #d4a444 accents, white emissive highlights.
|
| 248 |
+
Apache-2.0 · Signed Yachay <yachay@szlholdings.dev> · Doctrine v11 LOCKED (749/14/163).
|
| 249 |
+
ADDITIVE: this block replaces ONLY the chibi avatar portrait row. -->
|
| 250 |
+
<section id="szl-3d-heroes" style="padding:3rem 0 1rem;text-align:center;">
|
| 251 |
+
<div class="container">
|
| 252 |
+
<p class="mr-head" style="font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--gold-dim);margin-bottom:0.2rem;">The Mesh · Five Organs · Live 3D</p>
|
| 253 |
+
<div id="szl-hero-grid" role="group" aria-label="SZL Holdings five organs, interactive 3D figures">
|
| 254 |
+
<a class="szl-hero-cell" href="https://huggingface.co/spaces/SZLHOLDINGS/amaru" data-organ="amaru" aria-label="amaru — memory cortex (serpent + crystal core), open Space"><canvas data-organ="amaru"></canvas><span class="szl-hero-name">amaru</span><span class="szl-hero-role">cortex · serpent</span></a>
|
| 255 |
+
<a class="szl-hero-cell" href="https://huggingface.co/spaces/SZLHOLDINGS/sentra" data-organ="sentra" aria-label="sentra — immune shield, open Space"><canvas data-organ="sentra"></canvas><span class="szl-hero-name">sentra</span><span class="szl-hero-role">immune · shield</span></a>
|
| 256 |
+
<a class="szl-hero-cell" href="https://huggingface.co/spaces/SZLHOLDINGS/rosie" data-organ="rosie" aria-label="rosie — operator console (HUD rings), open Space"><canvas data-organ="rosie"></canvas><span class="szl-hero-name">rosie</span><span class="szl-hero-role">operator · console</span></a>
|
| 257 |
+
<a class="szl-hero-cell" href="https://huggingface.co/spaces/SZLHOLDINGS/killinchu" data-organ="killinchu" aria-label="killinchu — kestrel drone intel, open Space"><canvas data-organ="killinchu"></canvas><span class="szl-hero-name">killinchu</span><span class="szl-hero-role">kestrel · drone</span></a>
|
| 258 |
+
<a class="szl-hero-cell" href="https://huggingface.co/spaces/SZLHOLDINGS/a11oy" data-organ="a11oy" aria-label="a11oy — router knot-graph (Khipu cords), open Space"><canvas data-organ="a11oy"></canvas><span class="szl-hero-name">a11oy</span><span class="szl-hero-role">router · wires</span></a>
|
| 259 |
+
</div>
|
| 260 |
+
<p style="font-family:var(--font-mono);font-size:0.68rem;color:var(--text-dim);margin-top:0.9rem;letter-spacing:0.04em;">Real Three.js · touch-rotate on mobile · tap a figure to open its Space</p>
|
| 261 |
+
</div>
|
| 262 |
+
</section>
|
| 263 |
+
|
| 264 |
+
<style id="szl-3d-heroes-style">
|
| 265 |
+
#szl-hero-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1.1rem;margin-top:1.4rem;}
|
| 266 |
+
.szl-hero-cell{display:flex;flex-direction:column;align-items:center;background:#0a0e14;
|
| 267 |
+
border:1px solid rgba(212,164,68,0.22);border-radius:16px;padding:0.6rem 0.5rem 0.9rem;
|
| 268 |
+
text-decoration:none;border-bottom:1px solid rgba(212,164,68,0.22);
|
| 269 |
+
transition:transform .18s,border-color .18s,box-shadow .18s;min-height:44px;}
|
| 270 |
+
.szl-hero-cell:hover,.szl-hero-cell:focus-visible{transform:translateY(-4px);
|
| 271 |
+
border-color:#d4a444;box-shadow:0 12px 30px rgba(0,0,0,0.5);outline:none;}
|
| 272 |
+
.szl-hero-cell canvas{width:100%;aspect-ratio:1/1;display:block;border-radius:12px;
|
| 273 |
+
background:radial-gradient(circle at 50% 40%,#10151f,#06090f 70%);touch-action:none;}
|
| 274 |
+
.szl-hero-name{font-family:var(--font-head,'Cinzel',serif);font-size:1.05rem;color:#d4a444;margin-top:0.55rem;}
|
| 275 |
+
.szl-hero-role{font-family:var(--font-mono,monospace);font-size:0.62rem;color:#8c7d5e;letter-spacing:0.06em;text-transform:uppercase;}
|
| 276 |
+
@media(max-width:900px) and (min-width:561px){#szl-hero-grid{grid-template-columns:repeat(3,1fr);}}
|
| 277 |
+
@media(max-width:560px){#szl-hero-grid{grid-template-columns:repeat(2,1fr);gap:0.8rem;}
|
| 278 |
+
.szl-hero-cell{width:80vw;max-width:none;margin:0 auto;}
|
| 279 |
+
#szl-hero-grid .szl-hero-cell:last-child{grid-column:1 / -1;width:80vw;}}
|
| 280 |
+
@media(prefers-reduced-motion:reduce){.szl-hero-cell{transition:none;}}
|
| 281 |
+
</style>
|
| 282 |
+
|
| 283 |
+
<script type="importmap">
|
| 284 |
+
{ "imports": { "three": "https://unpkg.com/three@0.171.0/build/three.module.js" } }
|
| 285 |
+
</script>
|
| 286 |
+
<script type="module">
|
| 287 |
+
import * as THREE from 'three';
|
| 288 |
+
|
| 289 |
+
const SZL_MOBILE = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0);
|
| 290 |
+
const SZL_REDUCED = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
| 291 |
+
const PR = Math.min(window.devicePixelRatio || 1, SZL_MOBILE ? 1.5 : 2);
|
| 292 |
+
const GOLD = 0xd4a444, GOLD_HI = 0xe8cc6a, WHITE = 0xffffff, SLATE = 0x0a0e14;
|
| 293 |
+
|
| 294 |
+
const cells = [];
|
| 295 |
+
|
| 296 |
+
function makeScene(canvas, organ){
|
| 297 |
+
const renderer = new THREE.WebGLRenderer({
|
| 298 |
+
canvas, antialias: !SZL_MOBILE, alpha: true,
|
| 299 |
+
powerPreference: SZL_MOBILE ? 'low-power' : 'high-performance'
|
| 300 |
+
});
|
| 301 |
+
renderer.setPixelRatio(PR);
|
| 302 |
+
const scene = new THREE.Scene();
|
| 303 |
+
scene.background = null;
|
| 304 |
+
const cam = new THREE.PerspectiveCamera(42, 1, 0.1, 100);
|
| 305 |
+
cam.position.set(0, 0.4, 6.2);
|
| 306 |
+
|
| 307 |
+
scene.add(new THREE.AmbientLight(0x404a5e, 1.1));
|
| 308 |
+
const key = new THREE.DirectionalLight(GOLD_HI, 1.6); key.position.set(3,4,5); scene.add(key);
|
| 309 |
+
const rim = new THREE.DirectionalLight(0x6688ff, 0.7); rim.position.set(-4,-2,-3); scene.add(rim);
|
| 310 |
+
const pt = new THREE.PointLight(WHITE, 0.9, 20); pt.position.set(0,0,4); scene.add(pt);
|
| 311 |
+
|
| 312 |
+
const root = new THREE.Group(); scene.add(root);
|
| 313 |
+
const goldMat = new THREE.MeshStandardMaterial({color:GOLD, metalness:0.85, roughness:0.32, emissive:0x2a1d08, emissiveIntensity:0.4});
|
| 314 |
+
const slateMat = new THREE.MeshStandardMaterial({color:0x1b2230, metalness:0.6, roughness:0.5});
|
| 315 |
+
const emitMat = new THREE.MeshStandardMaterial({color:WHITE, emissive:WHITE, emissiveIntensity:1.4, metalness:0.2, roughness:0.3});
|
| 316 |
+
const goldEmit = new THREE.MeshStandardMaterial({color:GOLD_HI, emissive:GOLD, emissiveIntensity:1.1});
|
| 317 |
+
|
| 318 |
+
const extras = {}; // per-organ animated handles
|
| 319 |
+
|
| 320 |
+
if(organ==='amaru'){
|
| 321 |
+
// serpent (tube) coiled around a glowing crystal core
|
| 322 |
+
const core = new THREE.Mesh(new THREE.IcosahedronGeometry(0.85,0), emitMat.clone());
|
| 323 |
+
core.material.color.setHex(GOLD_HI); core.material.emissive.setHex(GOLD);
|
| 324 |
+
root.add(core); extras.core = core;
|
| 325 |
+
const pts=[]; const turns=3.2, N=160;
|
| 326 |
+
for(let i=0;i<=N;i++){const t=i/N; const a=t*Math.PI*2*turns; const r=1.5-0.35*t;
|
| 327 |
+
pts.push(new THREE.Vector3(Math.cos(a)*r, (t-0.5)*3.0, Math.sin(a)*r));}
|
| 328 |
+
const tube = new THREE.Mesh(new THREE.TubeGeometry(new THREE.CatmullRomCurve3(pts),200,0.16,10,false), goldMat.clone());
|
| 329 |
+
root.add(tube);
|
| 330 |
+
const head = new THREE.Mesh(new THREE.ConeGeometry(0.26,0.6,8), goldEmit.clone());
|
| 331 |
+
const hp = pts[pts.length-1]; head.position.copy(hp); root.add(head);
|
| 332 |
+
const eyeL=new THREE.Mesh(new THREE.SphereGeometry(0.05,8,8),emitMat); eyeL.position.copy(hp).add(new THREE.Vector3(0.12,0.1,0.12)); root.add(eyeL);
|
| 333 |
+
}
|
| 334 |
+
else if(organ==='sentra'){
|
| 335 |
+
// icosahedron shield with hex panels + threat dots absorbed
|
| 336 |
+
const shield = new THREE.Mesh(new THREE.IcosahedronGeometry(1.5,1),
|
| 337 |
+
new THREE.MeshStandardMaterial({color:0x16202f, metalness:0.7, roughness:0.35, flatShading:true}));
|
| 338 |
+
root.add(shield);
|
| 339 |
+
const wire = new THREE.LineSegments(new THREE.WireframeGeometry(shield.geometry),
|
| 340 |
+
new THREE.LineBasicMaterial({color:GOLD})); root.add(wire);
|
| 341 |
+
const lambda = new THREE.Mesh(new THREE.TorusGeometry(0.55,0.07,8,30), goldEmit.clone());
|
| 342 |
+
root.add(lambda); extras.lambda=lambda;
|
| 343 |
+
const threats=[]; const tg=new THREE.SphereGeometry(0.08,8,8);
|
| 344 |
+
const tm=new THREE.MeshStandardMaterial({color:0xff5a44,emissive:0xff5a44,emissiveIntensity:1.2});
|
| 345 |
+
for(let i=0;i<8;i++){const m=new THREE.Mesh(tg,tm.clone());
|
| 346 |
+
m.userData={a:Math.random()*6.28, r:2.4+Math.random()*0.6, sp:0.6+Math.random()*0.5};
|
| 347 |
+
root.add(m); threats.push(m);} extras.threats=threats;
|
| 348 |
+
}
|
| 349 |
+
else if(organ==='rosie'){
|
| 350 |
+
// torus + sphere stack (head + HUD rings) + pulsing data lines
|
| 351 |
+
const head = new THREE.Mesh(new THREE.SphereGeometry(0.7,24,24), slateMat.clone());
|
| 352 |
+
head.material.color.setHex(0x1d2636); head.position.y=0.2; root.add(head);
|
| 353 |
+
const visor = new THREE.Mesh(new THREE.TorusGeometry(0.55,0.09,10,30), goldEmit.clone());
|
| 354 |
+
visor.rotation.x=Math.PI/2; visor.position.y=0.2; root.add(visor);
|
| 355 |
+
const rings=[];
|
| 356 |
+
for(let i=0;i<3;i++){const r=new THREE.Mesh(new THREE.TorusGeometry(1.0+i*0.42,0.025,8,48),
|
| 357 |
+
new THREE.MeshStandardMaterial({color:GOLD,emissive:GOLD,emissiveIntensity:0.6,transparent:true,opacity:0.8-i*0.18}));
|
| 358 |
+
r.rotation.x=Math.PI/2.1; r.position.y=-0.1; root.add(r); rings.push(r);} extras.rings=rings;
|
| 359 |
+
const base=new THREE.Mesh(new THREE.CylinderGeometry(0.9,1.05,0.18,32), slateMat.clone()); base.position.y=-1.25; root.add(base);
|
| 360 |
+
// pulsing data lines (vertical)
|
| 361 |
+
const lines=[]; for(let i=0;i<6;i++){const a=i/6*6.28;
|
| 362 |
+
const m=new THREE.Mesh(new THREE.BoxGeometry(0.05,1.2,0.05),goldEmit.clone());
|
| 363 |
+
m.position.set(Math.cos(a)*1.3,-0.55,Math.sin(a)*1.3); root.add(m); lines.push(m);} extras.lines=lines;
|
| 364 |
+
}
|
| 365 |
+
else if(organ==='killinchu'){
|
| 366 |
+
// low-poly kestrel over faceted terrain + 53 drone-dots circling
|
| 367 |
+
const terrain=new THREE.Mesh(new THREE.ConeGeometry(2.3,0.7,3,1),
|
| 368 |
+
new THREE.MeshStandardMaterial({color:0x14202c,metalness:0.4,roughness:0.7,flatShading:true}));
|
| 369 |
+
terrain.position.y=-1.6; terrain.rotation.y=0.4; root.add(terrain);
|
| 370 |
+
const bird=new THREE.Group(); bird.position.y=0.5; root.add(bird); extras.bird=bird;
|
| 371 |
+
const body=new THREE.Mesh(new THREE.ConeGeometry(0.22,1.0,6),goldMat.clone());
|
| 372 |
+
body.rotation.x=Math.PI/2; bird.add(body);
|
| 373 |
+
const wgeo=new THREE.BufferGeometry(); const wv=new Float32Array([0,0,0, 1.5,0.15,-0.5, 1.3,-0.05,0.4]);
|
| 374 |
+
wgeo.setAttribute('position',new THREE.BufferAttribute(wv,3)); wgeo.computeVertexNormals();
|
| 375 |
+
const wmat=new THREE.MeshStandardMaterial({color:GOLD_HI,metalness:0.7,roughness:0.4,side:THREE.DoubleSide,flatShading:true});
|
| 376 |
+
const wingL=new THREE.Mesh(wgeo,wmat); const wingR=new THREE.Mesh(wgeo,wmat); wingR.scale.x=-1;
|
| 377 |
+
bird.add(wingL); bird.add(wingR); extras.wingL=wingL; extras.wingR=wingR;
|
| 378 |
+
const eye=new THREE.Mesh(new THREE.SphereGeometry(0.06,8,8),emitMat); eye.position.set(0.08,0.05,0.5); bird.add(eye);
|
| 379 |
+
// 53 drone-dots
|
| 380 |
+
const dg=new THREE.SphereGeometry(0.04,6,6);
|
| 381 |
+
const dm=new THREE.MeshStandardMaterial({color:WHITE,emissive:0x88ccff,emissiveIntensity:1.0});
|
| 382 |
+
const drones=new THREE.InstancedMesh(dg,dm,53); const dummy=new THREE.Object3D(); const dd=[];
|
| 383 |
+
for(let i=0;i<53;i++){dd.push({a:Math.random()*6.28, r:1.6+Math.random()*0.9, y:-0.3+Math.random()*1.4, sp:0.4+Math.random()*0.6});}
|
| 384 |
+
root.add(drones); extras.drones=drones; extras.dd=dd; extras.dummy=dummy;
|
| 385 |
+
}
|
| 386 |
+
else if(organ==='a11oy'){
|
| 387 |
+
// 16-node icosahedron knot-graph (Khipu cords) + edge pulses
|
| 388 |
+
const ico=new THREE.IcosahedronGeometry(1.5,0);
|
| 389 |
+
const pos=ico.attributes.position; const nodes=[]; const seen=new Set();
|
| 390 |
+
for(let i=0;i<pos.count;i++){const v=new THREE.Vector3().fromBufferAttribute(pos,i);
|
| 391 |
+
const k=v.toArray().map(n=>n.toFixed(2)).join(','); if(seen.has(k))continue; seen.add(k); nodes.push(v);}
|
| 392 |
+
const ng=new THREE.SphereGeometry(0.13,12,12);
|
| 393 |
+
nodes.forEach(v=>{const m=new THREE.Mesh(ng,goldEmit.clone()); m.position.copy(v); root.add(m);});
|
| 394 |
+
// knotted edges
|
| 395 |
+
const edgeMat=new THREE.LineBasicMaterial({color:GOLD,transparent:true,opacity:0.6});
|
| 396 |
+
const segs=[]; for(let i=0;i<nodes.length;i++)for(let j=i+1;j<nodes.length;j++){
|
| 397 |
+
if(nodes[i].distanceTo(nodes[j])<1.95){segs.push(nodes[i],nodes[j]);}}
|
| 398 |
+
const eg=new THREE.BufferGeometry().setFromPoints(segs);
|
| 399 |
+
root.add(new THREE.LineSegments(eg, edgeMat));
|
| 400 |
+
// pulse traveling along edges
|
| 401 |
+
const pulse=new THREE.Mesh(new THREE.SphereGeometry(0.1,10,10),emitMat); root.add(pulse);
|
| 402 |
+
extras.pulse=pulse; extras.segs=segs;
|
| 403 |
+
}
|
| 404 |
+
|
| 405 |
+
// touch / mouse rotate (additive — auto-rotate continues unless reduced motion)
|
| 406 |
+
let drag=false, px=0, py=0, vy=0, vx=0;
|
| 407 |
+
const dn=e=>{drag=true; const p=e.touches?e.touches[0]:e; px=p.clientX; py=p.clientY;};
|
| 408 |
+
const mv=e=>{if(!drag)return; const p=e.touches?e.touches[0]:e;
|
| 409 |
+
vy=(p.clientX-px)*0.01; vx=(p.clientY-py)*0.01; root.rotation.y+=vy; root.rotation.x+=vx;
|
| 410 |
+
px=p.clientX; py=p.clientY; if(e.touches)e.preventDefault();};
|
| 411 |
+
const up=()=>{drag=false;};
|
| 412 |
+
canvas.addEventListener('mousedown',dn); canvas.addEventListener('mousemove',mv); window.addEventListener('mouseup',up);
|
| 413 |
+
canvas.addEventListener('touchstart',dn,{passive:true}); canvas.addEventListener('touchmove',mv,{passive:false}); canvas.addEventListener('touchend',up);
|
| 414 |
+
|
| 415 |
+
function resize(){const w=canvas.clientWidth||220, h=canvas.clientHeight||220;
|
| 416 |
+
if(canvas.width!==w*PR||canvas.height!==h*PR){renderer.setSize(w,h,false); cam.aspect=w/h; cam.updateProjectionMatrix();}}
|
| 417 |
+
|
| 418 |
+
cells.push({renderer,scene,cam,root,organ,extras,resize});
|
| 419 |
+
}
|
| 420 |
+
|
| 421 |
+
document.querySelectorAll('#szl-hero-grid canvas').forEach(c=>makeScene(c, c.dataset.organ));
|
| 422 |
+
|
| 423 |
+
let t0=performance.now();
|
| 424 |
+
function loop(now){
|
| 425 |
+
requestAnimationFrame(loop);
|
| 426 |
+
if(document.hidden) return;
|
| 427 |
+
const t=(now-t0)/1000;
|
| 428 |
+
for(const c of cells){
|
| 429 |
+
c.resize();
|
| 430 |
+
if(!SZL_REDUCED) c.root.rotation.y += 0.0045;
|
| 431 |
+
const e=c.extras;
|
| 432 |
+
if(c.organ==='amaru' && e.core){ e.core.rotation.y+=0.02; e.core.scale.setScalar(1+Math.sin(t*2)*0.06); }
|
| 433 |
+
if(c.organ==='sentra'){ if(e.lambda)e.lambda.rotation.z+=0.02;
|
| 434 |
+
(e.threats||[]).forEach(m=>{m.userData.r-=m.userData.sp*0.012; if(m.userData.r<0.6){m.userData.r=2.6;}
|
| 435 |
+
m.userData.a+=0.02; m.position.set(Math.cos(m.userData.a)*m.userData.r, Math.sin(m.userData.a*1.3)*0.6, Math.sin(m.userData.a)*m.userData.r);}); }
|
| 436 |
+
if(c.organ==='rosie'){ (e.rings||[]).forEach((r,i)=>r.rotation.z+=0.01*(i+1));
|
| 437 |
+
(e.lines||[]).forEach((l,i)=>{l.scale.y=0.6+0.5*(0.5+0.5*Math.sin(t*3+i)); l.material.emissiveIntensity=0.6+0.6*(0.5+0.5*Math.sin(t*3+i));}); }
|
| 438 |
+
if(c.organ==='killinchu'){ if(e.bird)e.bird.position.y=0.5+Math.sin(t*1.5)*0.12;
|
| 439 |
+
if(e.wingL){const f=Math.sin(t*5)*0.5; e.wingL.rotation.z=f; e.wingR.rotation.z=-f;}
|
| 440 |
+
if(e.drones){const dummy=e.dummy; e.dd.forEach((d,i)=>{d.a+=d.sp*0.01;
|
| 441 |
+
dummy.position.set(Math.cos(d.a)*d.r,d.y+Math.sin(t+d.a)*0.1,Math.sin(d.a)*d.r);
|
| 442 |
+
dummy.updateMatrix(); e.drones.setMatrixAt(i,dummy.matrix);}); e.drones.instanceMatrix.needsUpdate=true;} }
|
| 443 |
+
if(c.organ==='a11oy' && e.pulse && e.segs.length){
|
| 444 |
+
const seg=Math.floor(t*0.7)%(e.segs.length/2); const a=e.segs[seg*2], b=e.segs[seg*2+1];
|
| 445 |
+
const f=(t*0.7)%1; e.pulse.position.lerpVectors(a,b,f); }
|
| 446 |
+
c.renderer.render(c.scene,c.cam);
|
| 447 |
+
}
|
| 448 |
+
}
|
| 449 |
+
requestAnimationFrame(loop);
|
| 450 |
+
</script>
|
| 451 |
+
<!-- ================= /SZL 3D HERO FIGURES ================= -->
|
| 452 |
|
| 453 |
<!-- BANNER — UNTOUCHED (5-hero painterly artwork is sacred) -->
|
| 454 |
<section id="banner" style="padding:0;border-top:none;">
|
| 455 |
<img src="https://huggingface.co/spaces/SZLHOLDINGS/README/resolve/main/assets/szl_banner.png" alt="SZL Holdings — the five-hero governed agentic mesh team" style="display:block;width:100%;height:auto;"/>
|
| 456 |
</section>
|
| 457 |
|
| 458 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 459 |
|
| 460 |
<!-- flag block: five hero portraits as links + org name + icon links + footer -->
|
| 461 |
<main id="main">
|
| 462 |
<section style="padding:3.5rem 0;text-align:center;">
|
| 463 |
<div class="container">
|
| 464 |
|
| 465 |
+
<!-- chibi portrait row replaced by 3D heroes (above) + live mesh panel (below) — Yachay -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 466 |
|
| 467 |
<h1 style="margin-bottom:1.4rem;">SZL Holdings</h1>
|
| 468 |
|
|
|
|
| 475 |
</div>
|
| 476 |
</section>
|
| 477 |
</main>
|
| 478 |
+
<!-- ============ LIVE MESH + LATEST RECEIPTS (ADDITIVE — Yachay) ============
|
| 479 |
+
Polls /healthz of each flagship live (badge flips green/red) and pulls the
|
| 480 |
+
5 most recent Khipu receipts across the mesh. Apache-2.0. Doctrine v11 LOCKED. -->
|
| 481 |
+
<section id="szl-live-mesh" style="padding:2.2rem 0;">
|
| 482 |
+
<div class="container">
|
| 483 |
+
<p class="mr-head" style="font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--gold-dim);margin-bottom:0.2rem;text-align:center;">Live Mesh · /healthz</p>
|
| 484 |
+
<div id="szl-mesh-grid" style="display:grid;grid-template-columns:repeat(5,1fr);gap:0.7rem;margin:1rem 0 0;">
|
| 485 |
+
<div class="szl-mesh-cell" data-organ="amaru"><span class="szl-mesh-name">amaru</span><span class="szl-mesh-badge" data-code="…">…</span></div>
|
| 486 |
+
<div class="szl-mesh-cell" data-organ="sentra"><span class="szl-mesh-name">sentra</span><span class="szl-mesh-badge" data-code="…">…</span></div>
|
| 487 |
+
<div class="szl-mesh-cell" data-organ="rosie"><span class="szl-mesh-name">rosie</span><span class="szl-mesh-badge" data-code="…">…</span></div>
|
| 488 |
+
<div class="szl-mesh-cell" data-organ="killinchu"><span class="szl-mesh-name">killinchu</span><span class="szl-mesh-badge" data-code="…">…</span></div>
|
| 489 |
+
<div class="szl-mesh-cell" data-organ="a11oy"><span class="szl-mesh-name">a11oy</span><span class="szl-mesh-badge" data-code="…">…</span></div>
|
| 490 |
+
</div>
|
| 491 |
+
<p id="szl-receipt-counter" style="text-align:center;font-family:var(--font-mono);font-size:0.8rem;color:var(--gold-light);margin-top:1.1rem;">signed receipts across the mesh: <b data-receipts>—</b></p>
|
| 492 |
+
<div style="max-width:760px;margin:1.2rem auto 0;">
|
| 493 |
+
<p class="mr-head" style="font-family:var(--font-mono);font-size:0.7rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--gold-dim);margin-bottom:0.4rem;text-align:center;">Latest signed receipts</p>
|
| 494 |
+
<ul id="szl-receipt-list" style="list-style:none;padding:0;margin:0;font-family:var(--font-mono);font-size:0.72rem;color:var(--text-muted);">
|
| 495 |
+
<li style="opacity:0.6;text-align:center;padding:0.5rem;">polling Khipu DAG…</li>
|
| 496 |
+
</ul>
|
| 497 |
+
</div>
|
| 498 |
+
</div>
|
| 499 |
+
</section>
|
| 500 |
+
<style id="szl-live-mesh-style">
|
| 501 |
+
.szl-mesh-cell{background:var(--glass,rgba(45,27,78,0.55));border:1px solid var(--border,rgba(212,175,55,0.18));border-radius:12px;padding:0.7rem 0.4rem;text-align:center;display:flex;flex-direction:column;gap:0.4rem;min-height:44px;}
|
| 502 |
+
.szl-mesh-name{font-family:var(--font-mono,monospace);font-size:0.72rem;color:var(--text-muted,#a090c0);letter-spacing:0.04em;}
|
| 503 |
+
.szl-mesh-badge{font-family:var(--font-mono,monospace);font-size:0.78rem;font-weight:600;padding:0.18rem 0.4rem;border-radius:6px;background:rgba(255,255,255,0.06);color:var(--text-dim,#7060a0);}
|
| 504 |
+
.szl-mesh-badge.ok{background:rgba(61,220,132,0.16);color:#3ddc84;}
|
| 505 |
+
.szl-mesh-badge.down{background:rgba(255,90,68,0.16);color:#ff7a59;}
|
| 506 |
+
#szl-receipt-list li{padding:0.4rem 0.6rem;border-bottom:1px solid var(--border,rgba(212,175,55,0.12));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
| 507 |
+
#szl-receipt-list li b{color:var(--gold-light,#e8cc6a);}
|
| 508 |
+
@media(max-width:900px) and (min-width:561px){#szl-mesh-grid{grid-template-columns:repeat(3,1fr);}}
|
| 509 |
+
@media(max-width:560px){#szl-mesh-grid{grid-template-columns:repeat(2,1fr);}}
|
| 510 |
+
</style>
|
| 511 |
+
<script>
|
| 512 |
+
(function(){
|
| 513 |
+
var ORGANS=["amaru","sentra","rosie","killinchu","a11oy"];
|
| 514 |
+
var receipts=[];
|
| 515 |
+
function base(o){return "https://szlholdings-"+o+".hf.space";}
|
| 516 |
+
function pollHealth(){
|
| 517 |
+
ORGANS.forEach(function(o){
|
| 518 |
+
var cell=document.querySelector('.szl-mesh-cell[data-organ="'+o+'"] .szl-mesh-badge');
|
| 519 |
+
if(!cell)return;
|
| 520 |
+
fetch(base(o)+"/healthz",{mode:"cors",cache:"no-store"}).then(function(r){
|
| 521 |
+
cell.textContent=r.status; cell.dataset.code=r.status;
|
| 522 |
+
cell.className="szl-mesh-badge "+(r.ok?"ok":"down");
|
| 523 |
+
}).catch(function(){ cell.textContent="—"; cell.className="szl-mesh-badge down"; });
|
| 524 |
+
});
|
| 525 |
+
}
|
| 526 |
+
function pollReceipts(){
|
| 527 |
+
var total=0, got=0;
|
| 528 |
+
ORGANS.forEach(function(o){
|
| 529 |
+
// metrics counter for running total
|
| 530 |
+
fetch(base(o)+"/metrics",{mode:"cors",cache:"no-store"}).then(function(r){return r.text();}).then(function(t){
|
| 531 |
+
var m=t.match(/(\w*receipts_total)\s+(\d+)/);
|
| 532 |
+
if(m){ total+=parseInt(m[2],10); }
|
| 533 |
+
}).catch(function(){}).finally(function(){
|
| 534 |
+
got++; if(got>=ORGANS.length){var b=document.querySelector('[data-receipts]'); if(b&&total>0)b.textContent=total.toLocaleString();}
|
| 535 |
+
});
|
| 536 |
+
// latest receipts
|
| 537 |
+
fetch(base(o)+"/api/"+o+"/v2/khipu/lmdb/tail?n=2",{mode:"cors",cache:"no-store"}).then(function(r){return r.json();}).then(function(j){
|
| 538 |
+
var arr=(j&&j.receipts)||j&&j.tail||[];
|
| 539 |
+
arr.forEach(function(rec){ receipts.push({organ:o, id:(rec.id||rec.hash||rec.receipt_id||"").toString().slice(0,16), ts:rec.ts||rec.timestamp||""}); });
|
| 540 |
+
renderReceipts();
|
| 541 |
+
}).catch(function(){});
|
| 542 |
+
});
|
| 543 |
+
}
|
| 544 |
+
function renderReceipts(){
|
| 545 |
+
var ul=document.getElementById("szl-receipt-list"); if(!ul)return;
|
| 546 |
+
var latest=receipts.slice(-5).reverse();
|
| 547 |
+
if(!latest.length)return;
|
| 548 |
+
ul.innerHTML=latest.map(function(r){return '<li><b>'+r.organ+'</b> · '+(r.id||'receipt')+' <span style="opacity:0.6;">'+(r.ts||'')+'</span></li>';}).join("");
|
| 549 |
+
}
|
| 550 |
+
pollHealth(); pollReceipts();
|
| 551 |
+
setInterval(pollHealth,5000); setInterval(pollReceipts,15000);
|
| 552 |
+
})();
|
| 553 |
+
</script>
|
| 554 |
+
<!-- ============ /LIVE MESH + LATEST RECEIPTS ============ -->
|
| 555 |
+
|
| 556 |
|
| 557 |
<footer style="text-align:center;padding:1.5rem 0;border-top:1px solid var(--border);">
|
| 558 |
<!-- Stills strip: the previous static team picture, relocated here from below the banner
|
| 559 |
when the live Mission Room action band replaced it. Kept as a reference still. -->
|
| 560 |
+
<!-- team-portrait still removed: replaced by 3D heroes (Yachay) -->
|
| 561 |
+
<span class="mono" style="font-size:0.72rem;color:var(--text-dim);">— szl-holdings/.github @ d304951 · Doctrine v11 LOCKED · 749 declarations · 14 unique axioms · 163 sorries · ORCID 0009-0001-0110-4173</span>
|
|
|
|
|
|
|
|
|
|
| 562 |
</footer>
|
| 563 |
|
| 564 |
<!-- AMBIENT EMOJI LAYER (Wave4, additive) — 5 character emojis hanging around
|
|
|
|
| 567 |
HTML sanitizer), these small 64px images fall to the page bottom instead of
|
| 568 |
overlaying content; explicit width/height attributes keep them small even
|
| 569 |
with CSS removed. Animation is gated behind prefers-reduced-motion: no-preference. -->
|
| 570 |
+
<!-- ambient chibi emoji layer removed: replaced by 3D heroes (Yachay) -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 571 |
</body>
|
| 572 |
</html>
|