betterwithage Claude Opus 4.7 commited on
Commit
233f96f
·
verified ·
1 Parent(s): ff3830f

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

Browse files

Reusable Dockerfile-COPY-derived deploy from szl-holdings/a11oy a8494fc4d40d0918d33d72e64739eedbd4c33803.
Files: 1326 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>

console/assets/szl-holo-v2.css ADDED
@@ -0,0 +1,720 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * A11oy Holo-Constellation v2.0.0
3
+ * SZL-original visual material and interaction system.
4
+ * No external assets, tracking, storage, network fetches, or copied design code.
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ :root {
9
+ --szl-holo-bg: #050806;
10
+ --szl-holo-bg-deep: #020403;
11
+ --szl-holo-surface: #0c1513;
12
+ --szl-holo-surface-2: #14201d;
13
+ --szl-holo-ink: #f3fff8;
14
+ --szl-holo-muted: #9fb7ad;
15
+ --szl-holo-accent: #b8ff45;
16
+ --szl-holo-accent-2: #31e6d1;
17
+ --szl-holo-danger: #ff625b;
18
+ --szl-holo-warning: #e2bb6d;
19
+ --szl-holo-success: #76d8aa;
20
+ --szl-holo-line: color-mix(in srgb, var(--szl-holo-accent) 20%, transparent);
21
+ --szl-holo-line-soft: color-mix(in srgb, var(--szl-holo-ink) 10%, transparent);
22
+ --szl-holo-glow: color-mix(in srgb, var(--szl-holo-accent) 16%, transparent);
23
+ --szl-holo-glow-2: color-mix(in srgb, var(--szl-holo-accent-2) 12%, transparent);
24
+ --szl-holo-shadow: 0 24px 84px rgb(0 0 0 / 0.42);
25
+ --szl-holo-radius-sm: 10px;
26
+ --szl-holo-radius-md: 18px;
27
+ --szl-holo-radius-lg: 30px;
28
+ --szl-holo-radius-xl: 44px;
29
+ --szl-holo-space-1: clamp(.45rem, .35rem + .3vw, .7rem);
30
+ --szl-holo-space-2: clamp(.8rem, .65rem + .5vw, 1.2rem);
31
+ --szl-holo-space-3: clamp(1.2rem, .95rem + .8vw, 1.9rem);
32
+ --szl-holo-space-4: clamp(1.8rem, 1.25rem + 1.7vw, 3.4rem);
33
+ --szl-holo-space-5: clamp(2.8rem, 2rem + 3vw, 6rem);
34
+ --szl-holo-pointer-x: 50%;
35
+ --szl-holo-pointer-y: 22%;
36
+ --szl-holo-scroll: 0;
37
+ --szl-holo-tilt-x: 0deg;
38
+ --szl-holo-tilt-y: 0deg;
39
+ --szl-holo-rail-height: 58px;
40
+ --szl-holo-z-ambient: -2;
41
+ --szl-holo-z-rail: 2147483000;
42
+ color-scheme: dark;
43
+ accent-color: var(--szl-holo-accent);
44
+ }
45
+
46
+ html[data-szl-holo="v2"] {
47
+ min-height: 100%;
48
+ overflow-x: clip;
49
+ background: var(--szl-holo-bg-deep);
50
+ scrollbar-color: color-mix(in srgb, var(--szl-holo-accent) 42%, transparent) var(--szl-holo-bg-deep);
51
+ scroll-padding-top: calc(var(--szl-holo-rail-height) + 18px);
52
+ }
53
+
54
+ html[data-szl-holo="v2"] body {
55
+ min-height: 100%;
56
+ overflow-x: clip;
57
+ color: var(--szl-holo-ink);
58
+ background: transparent;
59
+ }
60
+
61
+ html[data-szl-holo="v2"] body::before {
62
+ position: fixed;
63
+ inset: 0;
64
+ z-index: calc(var(--szl-holo-z-ambient) - 1);
65
+ pointer-events: none;
66
+ content: "";
67
+ background:
68
+ radial-gradient(circle at var(--szl-holo-pointer-x) var(--szl-holo-pointer-y), var(--szl-holo-glow), transparent 24rem),
69
+ radial-gradient(circle at 90% 8%, var(--szl-holo-glow-2), transparent 30rem),
70
+ linear-gradient(158deg, var(--szl-holo-bg), color-mix(in srgb, var(--szl-holo-bg) 84%, var(--szl-holo-surface)) 58%, var(--szl-holo-bg-deep));
71
+ }
72
+
73
+ /* Lightweight optical texture. It is decorative and does not represent telemetry. */
74
+ html[data-szl-holo="v2"] body::after {
75
+ position: fixed;
76
+ inset: 0;
77
+ z-index: calc(var(--szl-holo-z-ambient) - 1);
78
+ pointer-events: none;
79
+ content: "";
80
+ opacity: .14;
81
+ background-image:
82
+ repeating-linear-gradient(0deg, transparent 0 3px, rgb(255 255 255 / .018) 4px),
83
+ repeating-linear-gradient(90deg, transparent 0 5px, rgb(255 255 255 / .012) 6px);
84
+ mix-blend-mode: soft-light;
85
+ }
86
+
87
+ #szl-holo-ambient {
88
+ position: fixed;
89
+ inset: 0;
90
+ z-index: var(--szl-holo-z-ambient);
91
+ overflow: hidden;
92
+ pointer-events: none;
93
+ contain: strict;
94
+ opacity: .82;
95
+ }
96
+
97
+ #szl-holo-ambient::before,
98
+ #szl-holo-ambient::after {
99
+ position: absolute;
100
+ inset: -18%;
101
+ content: "";
102
+ transform-origin: center;
103
+ will-change: transform;
104
+ }
105
+
106
+ /* Command constellation: orbital paths over a tactical field. */
107
+ html[data-szl-holo-motif="command-constellation"] #szl-holo-ambient::before {
108
+ background:
109
+ radial-gradient(circle at center, var(--szl-holo-accent) 0 1.5px, transparent 2.5px),
110
+ linear-gradient(var(--szl-holo-line) 1px, transparent 1px),
111
+ linear-gradient(90deg, var(--szl-holo-line) 1px, transparent 1px);
112
+ background-size: 112px 112px, 56px 56px, 56px 56px;
113
+ mask-image: radial-gradient(ellipse at 63% 29%, #000 0 18%, transparent 70%);
114
+ transform: perspective(720px) rotateX(58deg) translate3d(0, 22%, 0) scale(1.12);
115
+ }
116
+
117
+ html[data-szl-holo-motif="command-constellation"] #szl-holo-ambient::after {
118
+ inset: 4% -10% -28% 34%;
119
+ border: 1px solid var(--szl-holo-line);
120
+ border-radius: 50%;
121
+ background:
122
+ repeating-radial-gradient(ellipse, transparent 0 74px, var(--szl-holo-line) 75px 76px),
123
+ conic-gradient(from 218deg, transparent 0 72%, var(--szl-holo-glow) 74% 75.5%, transparent 77%);
124
+ transform: rotate(-9deg) scaleY(.58);
125
+ animation: szl-holo-orbit 38s linear infinite;
126
+ }
127
+
128
+ /* Observability: living signals and anomaly ribbons. */
129
+ html[data-szl-holo-motif="signal-aurora"] #szl-holo-ambient::before {
130
+ inset: -46% -15%;
131
+ border-radius: 50%;
132
+ background: conic-gradient(from 76deg, transparent, var(--szl-holo-glow), transparent 25%, color-mix(in srgb, var(--szl-holo-accent-2) 18%, transparent), transparent 62%);
133
+ filter: blur(44px) saturate(125%);
134
+ animation: szl-holo-aurora 22s ease-in-out infinite alternate;
135
+ }
136
+
137
+ html[data-szl-holo-motif="signal-aurora"] #szl-holo-ambient::after {
138
+ background:
139
+ repeating-linear-gradient(90deg, transparent 0 43px, var(--szl-holo-line) 44px, transparent 45px 82px),
140
+ linear-gradient(170deg, transparent 38%, var(--szl-holo-glow-2) 39% 40%, transparent 41% 58%, var(--szl-holo-glow) 59% 60%, transparent 61%);
141
+ mask-image: linear-gradient(transparent, #000 28% 78%, transparent 92%);
142
+ transform: skewY(-7deg) translateY(calc(var(--szl-holo-scroll) * -2px));
143
+ }
144
+
145
+ /* Maritime: bathymetry, route wake, and radar. */
146
+ html[data-szl-holo-motif="bathymetric-radar"] #szl-holo-ambient::before {
147
+ inset: 5% auto auto 52%;
148
+ width: min(78vw, 980px);
149
+ aspect-ratio: 1;
150
+ border: 1px solid var(--szl-holo-line);
151
+ border-radius: 50%;
152
+ background:
153
+ repeating-radial-gradient(circle, transparent 0 59px, var(--szl-holo-line) 60px 61px),
154
+ conic-gradient(from 12deg, color-mix(in srgb, var(--szl-holo-accent) 22%, transparent), transparent 16%);
155
+ animation: szl-holo-radar 18s linear infinite;
156
+ }
157
+
158
+ html[data-szl-holo-motif="bathymetric-radar"] #szl-holo-ambient::after {
159
+ background: repeating-radial-gradient(ellipse at 18% 82%, transparent 0 30px, var(--szl-holo-line) 31px 32px);
160
+ transform: rotate(-8deg) scale(1.28);
161
+ opacity: .34;
162
+ }
163
+
164
+ /* Real estate: topography and parcel geometry. */
165
+ html[data-szl-holo-motif="topographic-parcels"] #szl-holo-ambient::before {
166
+ background:
167
+ repeating-radial-gradient(ellipse at 18% 58%, transparent 0 31px, var(--szl-holo-line) 32px 33px),
168
+ repeating-radial-gradient(ellipse at 84% 34%, transparent 0 49px, color-mix(in srgb, var(--szl-holo-accent-2) 18%, transparent) 50px 51px);
169
+ transform: rotate(-7deg) scale(1.18) translateY(calc(var(--szl-holo-scroll) * -1px));
170
+ }
171
+
172
+ html[data-szl-holo-motif="topographic-parcels"] #szl-holo-ambient::after {
173
+ background-image:
174
+ linear-gradient(28deg, transparent 48%, var(--szl-holo-line) 49% 50%, transparent 51%),
175
+ linear-gradient(118deg, transparent 48%, var(--szl-holo-line) 49% 50%, transparent 51%);
176
+ background-size: 180px 110px;
177
+ opacity: .26;
178
+ }
179
+
180
+ /* Security: threat lattice and shield lock. */
181
+ html[data-szl-holo-motif="threat-lattice"] #szl-holo-ambient::before {
182
+ background:
183
+ linear-gradient(32deg, transparent 47%, var(--szl-holo-line) 48% 49%, transparent 50%),
184
+ linear-gradient(148deg, transparent 47%, color-mix(in srgb, var(--szl-holo-accent-2) 18%, transparent) 48% 49%, transparent 50%);
185
+ background-size: 84px 84px;
186
+ transform: skewX(-8deg) scale(1.12);
187
+ mask-image: radial-gradient(circle at 72% 28%, #000, transparent 62%);
188
+ }
189
+
190
+ html[data-szl-holo-motif="threat-lattice"] #szl-holo-ambient::after {
191
+ inset: 16% 6% auto auto;
192
+ width: clamp(150px, 22vw, 320px);
193
+ aspect-ratio: 1;
194
+ border: 1px solid var(--szl-holo-accent);
195
+ clip-path: polygon(50% 0, 93% 25%, 93% 75%, 50% 100%, 7% 75%, 7% 25%);
196
+ box-shadow: inset 0 0 70px var(--szl-holo-glow), 0 0 90px var(--szl-holo-glow);
197
+ opacity: .34;
198
+ animation: szl-holo-breathe 4.8s ease-in-out infinite alternate;
199
+ }
200
+
201
+ /* Legal: case facets and deadline lanes. */
202
+ html[data-szl-holo-motif="case-facets"] #szl-holo-ambient::before {
203
+ background:
204
+ repeating-linear-gradient(0deg, transparent 0 51px, var(--szl-holo-line) 52px),
205
+ repeating-linear-gradient(90deg, transparent 0 219px, color-mix(in srgb, var(--szl-holo-accent-2) 17%, transparent) 220px 221px);
206
+ transform: rotate(-2deg);
207
+ mask-image: linear-gradient(90deg, transparent 2%, #000 20% 91%, transparent);
208
+ }
209
+
210
+ html[data-szl-holo-motif="case-facets"] #szl-holo-ambient::after {
211
+ background-image: radial-gradient(circle, var(--szl-holo-accent) 0 3px, transparent 4px);
212
+ background-size: 220px 52px;
213
+ opacity: .22;
214
+ }
215
+
216
+ /* Advisory: editorial orbits. */
217
+ html[data-szl-holo-motif="editorial-orbit"] #szl-holo-ambient::before {
218
+ inset: -20% auto auto 44%;
219
+ width: min(82vw, 1040px);
220
+ aspect-ratio: 1;
221
+ border-radius: 50%;
222
+ background: repeating-radial-gradient(circle, transparent 0 74px, var(--szl-holo-line) 75px 76px);
223
+ transform: rotate(12deg) scaleY(.55);
224
+ }
225
+
226
+ html[data-szl-holo-motif="editorial-orbit"] #szl-holo-ambient::after {
227
+ background: linear-gradient(115deg, transparent 38%, var(--szl-holo-glow) 39% 41%, transparent 42% 62%, var(--szl-holo-glow-2) 63% 64%, transparent 65%);
228
+ }
229
+
230
+ /* Integration: connected node field. */
231
+ html[data-szl-holo-motif="connection-field"] #szl-holo-ambient::before {
232
+ background:
233
+ radial-gradient(circle, var(--szl-holo-accent) 0 2px, transparent 3px),
234
+ linear-gradient(30deg, transparent 49%, var(--szl-holo-line) 50%, transparent 51%),
235
+ linear-gradient(150deg, transparent 49%, var(--szl-holo-line) 50%, transparent 51%);
236
+ background-size: 96px 96px;
237
+ mask-image: radial-gradient(circle at 55% 40%, #000, transparent 72%);
238
+ transform: translate3d(calc(var(--szl-holo-scroll) * .4px), calc(var(--szl-holo-scroll) * -.25px), 0);
239
+ }
240
+
241
+ /* Factory: build lanes and artifact promotion. */
242
+ html[data-szl-holo-motif="assembly-circuit"] #szl-holo-ambient::before {
243
+ background:
244
+ radial-gradient(circle, var(--szl-holo-accent) 0 2px, transparent 3px),
245
+ linear-gradient(90deg, var(--szl-holo-line) 1px, transparent 1px),
246
+ linear-gradient(var(--szl-holo-line) 1px, transparent 1px);
247
+ background-size: 72px 72px;
248
+ clip-path: polygon(0 8%, 76% 8%, 76% 28%, 100% 28%, 100% 92%, 22% 92%, 22% 69%, 0 69%);
249
+ opacity: .42;
250
+ }
251
+
252
+ html[data-szl-holo-motif="assembly-circuit"] #szl-holo-ambient::after {
253
+ inset: 30% 12% auto auto;
254
+ width: clamp(180px, 22vw, 360px);
255
+ height: clamp(100px, 13vw, 210px);
256
+ border: 1px solid var(--szl-holo-line);
257
+ border-radius: var(--szl-holo-radius-lg);
258
+ box-shadow: inset 0 0 55px var(--szl-holo-glow), 0 0 55px var(--szl-holo-glow);
259
+ }
260
+
261
+ /* Research: recursive computational rings. */
262
+ html[data-szl-holo-motif="recursive-ring"] #szl-holo-ambient::before {
263
+ inset: -24% -12%;
264
+ border-radius: 50%;
265
+ background: repeating-conic-gradient(from 0deg, var(--szl-holo-line) 0 1deg, transparent 1deg 13deg);
266
+ mask-image: repeating-radial-gradient(circle, #000 0 1px, transparent 2px 54px);
267
+ animation: szl-holo-recurse 42s linear infinite;
268
+ }
269
+
270
+ html[data-szl-holo-motif="recursive-ring"] #szl-holo-ambient::after {
271
+ inset: 18% auto auto 58%;
272
+ width: min(38vw, 460px);
273
+ aspect-ratio: 1;
274
+ border: 1px solid var(--szl-holo-accent);
275
+ border-radius: 50%;
276
+ box-shadow: inset 0 0 90px var(--szl-holo-glow), 0 0 90px var(--szl-holo-glow);
277
+ opacity: .38;
278
+ }
279
+
280
+ /* KHIPU: woven evidence traces. */
281
+ html[data-szl-holo-motif="woven-proof"] #szl-holo-ambient::before {
282
+ background:
283
+ repeating-linear-gradient(28deg, transparent 0 25px, var(--szl-holo-line) 26px 27px),
284
+ repeating-linear-gradient(-28deg, transparent 0 31px, var(--szl-holo-glow-2) 32px 33px);
285
+ transform: scale(1.08);
286
+ }
287
+
288
+ html[data-szl-holo-motif="woven-proof"] #szl-holo-ambient::after {
289
+ background-image: radial-gradient(circle, var(--szl-holo-accent) 0 2px, transparent 3px);
290
+ background-size: 128px 96px;
291
+ opacity: .23;
292
+ }
293
+
294
+ /* Agents: governed swarm converging on a decision. */
295
+ html[data-szl-holo-motif="agent-swarm"] #szl-holo-ambient::before {
296
+ background-image:
297
+ radial-gradient(circle at center, var(--szl-holo-accent) 0 2px, transparent 3px),
298
+ radial-gradient(circle at center, var(--szl-holo-accent-2) 0 1px, transparent 2px);
299
+ background-position: 0 0, 31px 27px;
300
+ background-size: 72px 68px, 89px 83px;
301
+ mask-image: radial-gradient(circle at 60% 42%, #000, transparent 68%);
302
+ animation: szl-holo-swarm 24s ease-in-out infinite alternate;
303
+ }
304
+
305
+ html[data-szl-holo-motif="agent-swarm"] #szl-holo-ambient::after {
306
+ background:
307
+ linear-gradient(25deg, transparent 49.6%, var(--szl-holo-line) 50%, transparent 50.4%),
308
+ linear-gradient(155deg, transparent 49.6%, var(--szl-holo-line) 50%, transparent 50.4%);
309
+ background-size: 140px 90px;
310
+ opacity: .2;
311
+ }
312
+
313
+ /* Proof: restrained evidence-vault geometry. */
314
+ html[data-szl-holo-motif="evidence-vault"] #szl-holo-ambient::before {
315
+ background:
316
+ repeating-linear-gradient(0deg, transparent 0 35px, var(--szl-holo-line-soft) 36px),
317
+ linear-gradient(90deg, transparent 0 13%, var(--szl-holo-line) 13.1%, transparent 13.3% 76%, var(--szl-holo-line) 76.1%, transparent 76.3%);
318
+ mask-image: linear-gradient(90deg, transparent, #000 14% 86%, transparent);
319
+ }
320
+
321
+ html[data-szl-holo-motif="evidence-vault"] #szl-holo-ambient::after {
322
+ background-image: radial-gradient(circle, var(--szl-holo-accent) 0 2px, transparent 3px);
323
+ background-size: 144px 72px;
324
+ opacity: .18;
325
+ }
326
+
327
+ /* Shared top rail. */
328
+ .szl-holo-rail {
329
+ position: sticky;
330
+ top: 0;
331
+ z-index: var(--szl-holo-z-rail);
332
+ min-height: var(--szl-holo-rail-height);
333
+ display: grid;
334
+ grid-template-columns: minmax(0, 1fr) auto;
335
+ align-items: center;
336
+ gap: var(--szl-holo-space-2);
337
+ padding: 8px max(12px, env(safe-area-inset-left)) 8px max(12px, env(safe-area-inset-right));
338
+ border-bottom: 1px solid var(--szl-holo-line);
339
+ color: var(--szl-holo-ink);
340
+ background: color-mix(in srgb, var(--szl-holo-bg) 86%, transparent);
341
+ box-shadow: 0 14px 44px rgb(0 0 0 / .24);
342
+ backdrop-filter: blur(20px) saturate(135%);
343
+ -webkit-backdrop-filter: blur(20px) saturate(135%);
344
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
345
+ }
346
+
347
+ .szl-holo-rail *,
348
+ .szl-holo-rail *::before,
349
+ .szl-holo-rail *::after { box-sizing: border-box; }
350
+
351
+ .szl-holo-identity {
352
+ min-width: 0;
353
+ min-height: 44px;
354
+ display: inline-flex;
355
+ align-items: center;
356
+ gap: 11px;
357
+ color: inherit;
358
+ text-decoration: none;
359
+ }
360
+
361
+ .szl-holo-mark {
362
+ position: relative;
363
+ width: 28px;
364
+ height: 28px;
365
+ flex: 0 0 auto;
366
+ border: 1px solid color-mix(in srgb, var(--szl-holo-accent) 62%, white 10%);
367
+ border-radius: 9px;
368
+ background:
369
+ radial-gradient(circle at 26% 24%, var(--szl-holo-accent), transparent 34%),
370
+ linear-gradient(145deg, color-mix(in srgb, var(--szl-holo-accent-2) 72%, transparent), transparent 72%);
371
+ box-shadow: 0 0 28px var(--szl-holo-glow);
372
+ transform: rotate(8deg);
373
+ }
374
+
375
+ .szl-holo-mark::after {
376
+ position: absolute;
377
+ inset: 5px;
378
+ border: 1px solid color-mix(in srgb, var(--szl-holo-ink) 36%, transparent);
379
+ border-radius: 5px;
380
+ content: "";
381
+ transform: rotate(-18deg);
382
+ }
383
+
384
+ .szl-holo-copy {
385
+ min-width: 0;
386
+ display: grid;
387
+ gap: 1px;
388
+ }
389
+
390
+ .szl-holo-eyebrow {
391
+ overflow: hidden;
392
+ color: var(--szl-holo-muted);
393
+ font-size: 9px;
394
+ font-weight: 700;
395
+ letter-spacing: .19em;
396
+ text-overflow: ellipsis;
397
+ text-transform: uppercase;
398
+ white-space: nowrap;
399
+ }
400
+
401
+ .szl-holo-label {
402
+ overflow: hidden;
403
+ font-size: 13px;
404
+ font-weight: 760;
405
+ letter-spacing: -.01em;
406
+ text-overflow: ellipsis;
407
+ white-space: nowrap;
408
+ }
409
+
410
+ .szl-holo-nav {
411
+ display: flex;
412
+ align-items: center;
413
+ gap: 4px;
414
+ }
415
+
416
+ .szl-holo-link,
417
+ .szl-holo-menu {
418
+ min-width: 44px;
419
+ min-height: 44px;
420
+ display: inline-flex;
421
+ align-items: center;
422
+ justify-content: center;
423
+ padding: 8px 11px;
424
+ border: 1px solid transparent;
425
+ border-radius: 999px;
426
+ color: var(--szl-holo-muted);
427
+ background: transparent;
428
+ font: 660 11px/1.2 Inter, ui-sans-serif, system-ui, sans-serif;
429
+ letter-spacing: .045em;
430
+ text-decoration: none;
431
+ cursor: pointer;
432
+ touch-action: manipulation;
433
+ -webkit-tap-highlight-color: transparent;
434
+ }
435
+
436
+ .szl-holo-link:hover,
437
+ .szl-holo-link:focus-visible,
438
+ .szl-holo-link[aria-current="page"],
439
+ .szl-holo-menu:hover,
440
+ .szl-holo-menu:focus-visible {
441
+ border-color: color-mix(in srgb, var(--szl-holo-accent) 38%, transparent);
442
+ color: var(--szl-holo-ink);
443
+ background: color-mix(in srgb, var(--szl-holo-accent) 9%, transparent);
444
+ outline: none;
445
+ }
446
+
447
+ .szl-holo-menu { display: none; }
448
+
449
+ /* Reusable opt-in materials. */
450
+ .szl-holo-panel,
451
+ [data-szl-holo-panel] {
452
+ position: relative;
453
+ overflow: hidden;
454
+ border: 1px solid var(--szl-holo-line-soft);
455
+ border-radius: var(--szl-holo-radius-md);
456
+ background:
457
+ linear-gradient(145deg, color-mix(in srgb, var(--szl-holo-surface-2) 60%, transparent), transparent 44%),
458
+ color-mix(in srgb, var(--szl-holo-surface) 86%, transparent);
459
+ box-shadow: var(--szl-holo-shadow);
460
+ backdrop-filter: blur(18px) saturate(125%);
461
+ -webkit-backdrop-filter: blur(18px) saturate(125%);
462
+ transform-style: preserve-3d;
463
+ }
464
+
465
+ .szl-holo-panel::before,
466
+ [data-szl-holo-panel]::before {
467
+ position: absolute;
468
+ inset: 0;
469
+ pointer-events: none;
470
+ content: "";
471
+ background: radial-gradient(circle at var(--szl-holo-pointer-x) var(--szl-holo-pointer-y), color-mix(in srgb, var(--szl-holo-accent) 13%, transparent), transparent 22rem);
472
+ opacity: .65;
473
+ }
474
+
475
+ .szl-holo-panel::after,
476
+ [data-szl-holo-panel]::after {
477
+ position: absolute;
478
+ inset: -1px;
479
+ pointer-events: none;
480
+ content: "";
481
+ border-radius: inherit;
482
+ background: linear-gradient(118deg, transparent 12%, color-mix(in srgb, var(--szl-holo-ink) 9%, transparent) 38%, transparent 62%);
483
+ transform: translateX(-110%);
484
+ animation: szl-holo-specular 11s ease-in-out infinite;
485
+ }
486
+
487
+ .szl-holo-kicker,
488
+ [data-szl-holo-kicker] {
489
+ color: var(--szl-holo-accent);
490
+ font-size: .72rem;
491
+ font-weight: 780;
492
+ letter-spacing: .18em;
493
+ text-transform: uppercase;
494
+ }
495
+
496
+ .szl-holo-title,
497
+ [data-szl-holo-title] {
498
+ color: var(--szl-holo-ink);
499
+ background: linear-gradient(112deg, var(--szl-holo-ink), var(--szl-holo-accent) 58%, var(--szl-holo-accent-2));
500
+ background-clip: text;
501
+ -webkit-background-clip: text;
502
+ -webkit-text-fill-color: transparent;
503
+ text-wrap: balance;
504
+ }
505
+
506
+ .szl-holo-muted { color: var(--szl-holo-muted); }
507
+ .szl-holo-rule { border-color: var(--szl-holo-line); }
508
+
509
+ .szl-holo-chip {
510
+ min-height: 32px;
511
+ display: inline-flex;
512
+ align-items: center;
513
+ gap: 7px;
514
+ padding: 5px 10px;
515
+ border: 1px solid var(--szl-holo-line-soft);
516
+ border-radius: 999px;
517
+ color: var(--szl-holo-muted);
518
+ background: color-mix(in srgb, var(--szl-holo-surface) 78%, transparent);
519
+ font: 650 11px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
520
+ }
521
+
522
+ .szl-holo-chip::before {
523
+ width: 7px;
524
+ height: 7px;
525
+ border-radius: 50%;
526
+ background: var(--szl-holo-accent);
527
+ box-shadow: 0 0 14px var(--szl-holo-accent);
528
+ content: "";
529
+ }
530
+
531
+ .szl-holo-evidence-ribbon {
532
+ display: grid;
533
+ grid-template-columns: auto minmax(0, 1fr) auto;
534
+ align-items: center;
535
+ gap: var(--szl-holo-space-2);
536
+ padding: 10px 12px;
537
+ border-block: 1px solid var(--szl-holo-line-soft);
538
+ color: var(--szl-holo-muted);
539
+ font: 600 11px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
540
+ }
541
+
542
+ .szl-holo-evidence-ribbon strong { color: var(--szl-holo-ink); }
543
+
544
+ .szl-holo-progress {
545
+ position: fixed;
546
+ inset: 0 auto auto 0;
547
+ z-index: calc(var(--szl-holo-z-rail) + 1);
548
+ width: calc(var(--szl-holo-scroll) * 1%);
549
+ height: 2px;
550
+ pointer-events: none;
551
+ background: linear-gradient(90deg, var(--szl-holo-accent), var(--szl-holo-accent-2));
552
+ box-shadow: 0 0 18px var(--szl-holo-glow);
553
+ }
554
+
555
+ .szl-holo-skip {
556
+ position: fixed;
557
+ top: 8px;
558
+ left: 8px;
559
+ z-index: calc(var(--szl-holo-z-rail) + 3);
560
+ padding: 11px 14px;
561
+ border: 2px solid var(--szl-holo-accent);
562
+ border-radius: var(--szl-holo-radius-sm);
563
+ color: var(--szl-holo-bg);
564
+ background: var(--szl-holo-accent);
565
+ font: 760 14px/1.2 ui-sans-serif, system-ui, sans-serif;
566
+ text-decoration: none;
567
+ transform: translateY(-160%);
568
+ transition: transform .16s ease;
569
+ }
570
+
571
+ .szl-holo-skip:focus { transform: translateY(0); }
572
+
573
+ html[data-szl-holo="v2"] :where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
574
+ outline: 2px solid var(--szl-holo-accent) !important;
575
+ outline-offset: 3px !important;
576
+ }
577
+
578
+ @keyframes szl-holo-orbit {
579
+ to { transform: rotate(351deg) scaleY(.58); }
580
+ }
581
+
582
+ @keyframes szl-holo-aurora {
583
+ from { transform: translate3d(-5%, -3%, 0) rotate(-8deg) scale(1); }
584
+ to { transform: translate3d(7%, 6%, 0) rotate(11deg) scale(1.08); }
585
+ }
586
+
587
+ @keyframes szl-holo-radar {
588
+ to { transform: rotate(360deg); }
589
+ }
590
+
591
+ @keyframes szl-holo-recurse {
592
+ to { transform: rotate(-360deg); }
593
+ }
594
+
595
+ @keyframes szl-holo-swarm {
596
+ from { transform: translate3d(-1.5%, -1%, 0) scale(1); }
597
+ to { transform: translate3d(1.5%, 1%, 0) scale(1.04); }
598
+ }
599
+
600
+ @keyframes szl-holo-breathe {
601
+ from { opacity: .22; transform: scale(.96); }
602
+ to { opacity: .42; transform: scale(1.03); }
603
+ }
604
+
605
+ @keyframes szl-holo-specular {
606
+ 0%, 68%, 100% { transform: translateX(-115%); }
607
+ 82% { transform: translateX(115%); }
608
+ }
609
+
610
+ @media (max-width: 760px) {
611
+ :root { --szl-holo-rail-height: 56px; }
612
+ #szl-holo-ambient { opacity: .62; }
613
+ .szl-holo-menu { display: inline-flex; }
614
+ .szl-holo-nav {
615
+ position: absolute;
616
+ top: calc(100% + 7px);
617
+ right: max(8px, env(safe-area-inset-right));
618
+ min-width: min(240px, calc(100vw - 16px));
619
+ display: none;
620
+ flex-direction: column;
621
+ align-items: stretch;
622
+ gap: 3px;
623
+ padding: 8px;
624
+ border: 1px solid var(--szl-holo-line);
625
+ border-radius: var(--szl-holo-radius-md);
626
+ background: color-mix(in srgb, var(--szl-holo-bg) 96%, white 2%);
627
+ box-shadow: var(--szl-holo-shadow);
628
+ }
629
+ .szl-holo-nav[data-open="true"] { display: flex; }
630
+ .szl-holo-link { justify-content: flex-start; padding-inline: 14px; }
631
+ .szl-holo-eyebrow { display: none; }
632
+ .szl-holo-panel::after,
633
+ [data-szl-holo-panel]::after { display: none; }
634
+ }
635
+
636
+ @media (max-width: 390px) {
637
+ .szl-holo-label { max-width: 48vw; }
638
+ .szl-holo-mark { width: 25px; height: 25px; }
639
+ }
640
+
641
+ @media (prefers-reduced-motion: reduce) {
642
+ html[data-szl-holo="v2"] { scroll-behavior: auto; }
643
+ #szl-holo-ambient::before,
644
+ #szl-holo-ambient::after,
645
+ .szl-holo-panel::after,
646
+ [data-szl-holo-panel]::after,
647
+ .szl-holo-skip,
648
+ .szl-holo-mark {
649
+ animation: none !important;
650
+ transition: none !important;
651
+ transform: none !important;
652
+ }
653
+ .szl-holo-progress { box-shadow: none; }
654
+ }
655
+
656
+ @media (prefers-contrast: more) {
657
+ :root {
658
+ --szl-holo-line: color-mix(in srgb, var(--szl-holo-accent) 58%, transparent);
659
+ --szl-holo-line-soft: color-mix(in srgb, var(--szl-holo-ink) 34%, transparent);
660
+ }
661
+ #szl-holo-ambient { opacity: .32; }
662
+ .szl-holo-panel,
663
+ [data-szl-holo-panel] {
664
+ border-width: 2px;
665
+ background: var(--szl-holo-surface);
666
+ backdrop-filter: none;
667
+ }
668
+ }
669
+
670
+ @media (forced-colors: active) {
671
+ :root { color-scheme: light dark; }
672
+ #szl-holo-ambient,
673
+ .szl-holo-progress { display: none; }
674
+ .szl-holo-rail,
675
+ .szl-holo-panel,
676
+ [data-szl-holo-panel],
677
+ .szl-holo-link,
678
+ .szl-holo-menu,
679
+ .szl-holo-chip {
680
+ border: 1px solid CanvasText;
681
+ color: CanvasText;
682
+ background: Canvas;
683
+ box-shadow: none;
684
+ backdrop-filter: none;
685
+ }
686
+ .szl-holo-title,
687
+ [data-szl-holo-title] {
688
+ color: CanvasText;
689
+ background: none;
690
+ -webkit-text-fill-color: currentColor;
691
+ }
692
+ .szl-holo-mark { border-color: CanvasText; background: CanvasText; box-shadow: none; }
693
+ .szl-holo-skip { color: Canvas; background: CanvasText; border-color: CanvasText; }
694
+ }
695
+
696
+ @supports not (color: color-mix(in srgb, black 50%, white)) {
697
+ .szl-holo-rail,
698
+ .szl-holo-panel,
699
+ [data-szl-holo-panel] { background: var(--szl-holo-surface); }
700
+ .szl-holo-link[aria-current="page"] { border-color: var(--szl-holo-accent); }
701
+ }
702
+
703
+ @media print {
704
+ #szl-holo-ambient,
705
+ .szl-holo-rail,
706
+ .szl-holo-progress,
707
+ .szl-holo-skip { display: none !important; }
708
+ html[data-szl-holo="v2"],
709
+ html[data-szl-holo="v2"] body {
710
+ color: #000 !important;
711
+ background: #fff !important;
712
+ }
713
+ .szl-holo-panel,
714
+ [data-szl-holo-panel] {
715
+ border: 1px solid #444;
716
+ color: #000;
717
+ background: #fff;
718
+ box-shadow: none;
719
+ }
720
+ }
console/assets/szl-holo-v2.js ADDED
@@ -0,0 +1,436 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * A11oy Holo-Constellation v2.0.0
3
+ * Deterministic route identity, accessible estate navigation, and low-cost
4
+ * progressive visual enhancement. No fetch, tracking, storage, or cookies.
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ (() => {
8
+ "use strict";
9
+
10
+ if (window.__SZL_HOLO_V2__) return;
11
+ window.__SZL_HOLO_V2__ = true;
12
+
13
+ const VERSION = "2.0.0";
14
+ const PRODUCT = "https://a-11-oy.com";
15
+ const PROOF = "https://a11oy.net";
16
+ const REDUCE_MOTION = window.matchMedia("(prefers-reduced-motion: reduce)");
17
+ const FINE_POINTER = window.matchMedia("(pointer: fine)");
18
+ const SAVE_DATA = Boolean(navigator.connection && navigator.connection.saveData);
19
+
20
+ const PALETTES = [
21
+ ["#07131a", "#102633", "#f2fbff", "#9ab4c2", "#64dcff", "#a88bff"],
22
+ ["#130a10", "#291522", "#fff6fb", "#c2a2b3", "#ff7bc3", "#ffb56b"],
23
+ ["#07140d", "#12281a", "#f5fff7", "#9db8a4", "#72efa0", "#5ad6ff"],
24
+ ["#130e06", "#2a1d0e", "#fffaf0", "#c2b297", "#ffc66d", "#ff7d73"],
25
+ ["#090a18", "#171932", "#f6f6ff", "#a6a8c4", "#878cff", "#54e4d7"],
26
+ ["#0f0715", "#24102f", "#fff6ff", "#bca6c5", "#d88cff", "#74c6ff"],
27
+ ["#061315", "#10272b", "#f1feff", "#9bb9bb", "#50e3d4", "#b4ed70"],
28
+ ["#140808", "#2d1414", "#fff6f4", "#c2a3a0", "#ff6c63", "#e9cf6f"],
29
+ ["#0a1115", "#16242c", "#f5fbff", "#a3b2bb", "#83c7ff", "#8df0bd"],
30
+ ["#111006", "#282512", "#fffef0", "#beb99b", "#e5f36b", "#e8a85f"],
31
+ ["#0b0714", "#1c122c", "#faf6ff", "#aea2c0", "#b697ff", "#ff82ad"],
32
+ ["#07120f", "#12251f", "#f2fff9", "#9db6aa", "#75e8b4", "#c1a0ff"],
33
+ ];
34
+
35
+ const CURATED = {
36
+ a11oy: {
37
+ label: "A11oy Command",
38
+ motif: "command-constellation",
39
+ palette: ["#050806", "#0c1513", "#f3fff8", "#9fb7ad", "#b8ff45", "#31e6d1"],
40
+ },
41
+ proof: {
42
+ label: "A11oy Proof Network",
43
+ motif: "evidence-vault",
44
+ palette: ["#060a10", "#101722", "#f1f5f8", "#9eabb6", "#76d8aa", "#e2bb6d"],
45
+ },
46
+ lyte: {
47
+ label: "Lyte",
48
+ motif: "signal-aurora",
49
+ palette: ["#03100f", "#0a211d", "#effffb", "#92bdb2", "#50ffd0", "#78a8ff"],
50
+ },
51
+ vessels: {
52
+ label: "Vessels",
53
+ motif: "bathymetric-radar",
54
+ palette: ["#020d18", "#09243a", "#effbff", "#8cb5c9", "#50ddff", "#2d7cff"],
55
+ },
56
+ terra: {
57
+ label: "Terra",
58
+ motif: "topographic-parcels",
59
+ palette: ["#06110b", "#12271a", "#f5fff7", "#9db7a3", "#7bea98", "#d9a45c"],
60
+ },
61
+ aegis: {
62
+ label: "Aegis",
63
+ motif: "threat-lattice",
64
+ palette: ["#120606", "#281010", "#fff4f2", "#c6a19c", "#ff625b", "#ffb34d"],
65
+ },
66
+ "prism-counsel": {
67
+ label: "PRISM Counsel",
68
+ motif: "case-facets",
69
+ palette: ["#070b18", "#141a31", "#f8f9ff", "#a8b0ca", "#7da8ff", "#d7c4ff"],
70
+ },
71
+ "carlota-jo": {
72
+ label: "Carlota Jo",
73
+ motif: "editorial-orbit",
74
+ palette: ["#140a17", "#2b1330", "#fff7ff", "#c6a8c7", "#e2a8ff", "#ef9b67"],
75
+ },
76
+ nexus: {
77
+ label: "Nexus",
78
+ motif: "connection-field",
79
+ palette: ["#070918", "#151831", "#f7f7ff", "#a5aac8", "#9a8cff", "#53e9ff"],
80
+ },
81
+ factory: {
82
+ label: "A11oy Factory",
83
+ motif: "assembly-circuit",
84
+ palette: ["#070c07", "#171f13", "#fafff5", "#abb9a4", "#c9ff5c", "#7e9cff"],
85
+ },
86
+ ouroboros: {
87
+ label: "Ouroboros",
88
+ motif: "recursive-ring",
89
+ palette: ["#100b05", "#24180b", "#fffaf0", "#c4b59b", "#ffd36e", "#c094ff"],
90
+ },
91
+ khipu: {
92
+ label: "KHIPU",
93
+ motif: "woven-proof",
94
+ palette: ["#120b05", "#271a0e", "#fff9ee", "#c6b39b", "#e9c66e", "#c87945"],
95
+ },
96
+ killinchu: {
97
+ label: "Killinchu",
98
+ motif: "agent-swarm",
99
+ palette: ["#100615", "#26102e", "#fff5ff", "#c5a4c9", "#ff74d4", "#68e8ff"],
100
+ },
101
+ };
102
+
103
+ const ROUTE_HINTS = [
104
+ ["prism-counsel", ["prism-counsel", "prism counsel", "/counsel", "/legal"]],
105
+ ["carlota-jo", ["carlota-jo", "carlota jo", "/advisory"]],
106
+ ["ouroboros", ["ouroboros", "/research", "/thesis"]],
107
+ ["killinchu", ["killinchu", "/agents", "agent forge", "agent swarm"]],
108
+ ["factory", ["a11oy-factory", "szl-factory", "/factory", "/forge", "artifact factory"]],
109
+ ["vessels", ["vessels", "/maritime", "fleet command", "voyage"]],
110
+ ["terra", ["terra", "/real-estate", "real estate", "parcel"]],
111
+ ["aegis", ["aegis", "/security", "/defense", "threat"]],
112
+ ["lyte", ["lyte", "/observability", "business observability", "signal"]],
113
+ ["nexus", ["nexus", "/integration", "connection fabric"]],
114
+ ["khipu", ["khipu", "/kernel", "woven proof"]],
115
+ ];
116
+
117
+ const MOTIFS = [
118
+ "command-constellation",
119
+ "signal-aurora",
120
+ "bathymetric-radar",
121
+ "topographic-parcels",
122
+ "threat-lattice",
123
+ "case-facets",
124
+ "editorial-orbit",
125
+ "connection-field",
126
+ "assembly-circuit",
127
+ "recursive-ring",
128
+ "woven-proof",
129
+ "agent-swarm",
130
+ ];
131
+
132
+ const LINKS = [
133
+ ["Command", `${PRODUCT}/`],
134
+ ["Products", `${PRODUCT}/console`],
135
+ ["Proof", `${PROOF}/record/`],
136
+ ["Source", "https://github.com/szl-holdings"],
137
+ ["Spaces", "https://huggingface.co/SZLHOLDINGS"],
138
+ ];
139
+
140
+ function slug(value) {
141
+ return String(value || "")
142
+ .normalize("NFKD")
143
+ .toLowerCase()
144
+ .replace(/[^a-z0-9]+/g, "-")
145
+ .replace(/^-+|-+$/g, "")
146
+ .slice(0, 96);
147
+ }
148
+
149
+ function fnv1a(value) {
150
+ let result = 0x811c9dc5;
151
+ for (const character of String(value || "a11oy")) {
152
+ result ^= character.charCodeAt(0);
153
+ result = Math.imul(result, 0x01000193) >>> 0;
154
+ }
155
+ return result >>> 0;
156
+ }
157
+
158
+ function titleCase(value) {
159
+ return String(value || "")
160
+ .split("-")
161
+ .filter(Boolean)
162
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
163
+ .join(" ");
164
+ }
165
+
166
+ function huggingFaceSlug(host) {
167
+ const match = host.match(/^(?:szlholdings|szl-holdings)-(.+)\.hf\.space$/i);
168
+ return match ? slug(match[1]) : "";
169
+ }
170
+
171
+ function surfaceCandidate() {
172
+ const host = location.hostname.toLowerCase();
173
+ if (host === "a11oy.net" || host === "www.a11oy.net") return "proof";
174
+ if (host === "a-11-oy.com" || host === "www.a-11-oy.com") {
175
+ const path = location.pathname.toLowerCase();
176
+ for (const [surface, hints] of ROUTE_HINTS) {
177
+ if (hints.some((hint) => path.includes(hint.replace(" ", "-")))) return surface;
178
+ }
179
+ return "a11oy";
180
+ }
181
+
182
+ const hf = huggingFaceSlug(host);
183
+ const path = location.pathname.toLowerCase();
184
+ const title = document.title.toLowerCase();
185
+ const bodyIdentity = `${document.body?.id || ""} ${document.body?.className || ""}`.toLowerCase();
186
+ const haystack = `${host} ${hf} ${path} ${title} ${bodyIdentity}`;
187
+
188
+ for (const [surface, hints] of ROUTE_HINTS) {
189
+ if (hints.some((hint) => haystack.includes(hint))) return surface;
190
+ }
191
+ if (hf) return hf;
192
+ return slug(path.split("/").filter(Boolean)[0]) || slug(host) || "a11oy";
193
+ }
194
+
195
+ function resolveTheme() {
196
+ const id = surfaceCandidate();
197
+ const curated = CURATED[id];
198
+ if (curated) return { id, ...curated, source: "curated" };
199
+
200
+ const seed = fnv1a(id);
201
+ const palette = PALETTES[seed % PALETTES.length];
202
+ return {
203
+ id,
204
+ label: titleCase(id) || "A11oy Space",
205
+ motif: MOTIFS[(seed >>> 8) % MOTIFS.length],
206
+ palette,
207
+ source: "deterministic",
208
+ };
209
+ }
210
+
211
+ function applyTheme(theme) {
212
+ const [background, surface, foreground, muted, accent, accent2] = theme.palette;
213
+ const root = document.documentElement;
214
+ root.dataset.szlHolo = "v2";
215
+ root.dataset.szlHoloSurface = theme.id;
216
+ root.dataset.szlHoloMotif = theme.motif;
217
+ root.dataset.szlHoloThemeSource = theme.source;
218
+ root.style.setProperty("--szl-holo-bg", background);
219
+ root.style.setProperty("--szl-holo-bg-deep", background);
220
+ root.style.setProperty("--szl-holo-surface", surface);
221
+ root.style.setProperty("--szl-holo-surface-2", surface);
222
+ root.style.setProperty("--szl-holo-ink", foreground);
223
+ root.style.setProperty("--szl-holo-muted", muted);
224
+ root.style.setProperty("--szl-holo-accent", accent);
225
+ root.style.setProperty("--szl-holo-accent-2", accent2);
226
+ }
227
+
228
+ function createElement(name, attributes = {}, text = null) {
229
+ const node = document.createElement(name);
230
+ for (const [key, value] of Object.entries(attributes)) {
231
+ if (key === "className") node.className = value;
232
+ else if (key === "dataset") Object.assign(node.dataset, value);
233
+ else node.setAttribute(key, value);
234
+ }
235
+ if (text !== null) node.textContent = text;
236
+ return node;
237
+ }
238
+
239
+ function addSkipLink() {
240
+ if (document.querySelector(".szl-holo-skip, [data-szl-holo-skip]")) return;
241
+ const main = document.querySelector("main, [role='main']");
242
+ if (!main) return;
243
+ if (!main.id) main.id = "szl-holo-main";
244
+ const link = createElement("a", {
245
+ className: "szl-holo-skip",
246
+ href: `#${main.id}`,
247
+ dataset: { szlHoloSkip: "true" },
248
+ }, "Skip to main content");
249
+ document.body.prepend(link);
250
+ }
251
+
252
+ function currentLink(href) {
253
+ const target = new URL(href);
254
+ const host = location.hostname.replace(/^www\./, "");
255
+ if (target.hostname.replace(/^www\./, "") !== host) return false;
256
+ if (target.pathname === "/") return location.pathname === "/";
257
+ return location.pathname.startsWith(target.pathname.replace(/\/$/, ""));
258
+ }
259
+
260
+ function buildRail(theme) {
261
+ if (document.querySelector(".szl-holo-rail") || document.documentElement.hasAttribute("data-szl-holo-no-rail")) return;
262
+
263
+ const rail = createElement("header", {
264
+ className: "szl-holo-rail",
265
+ dataset: { szlHoloRail: "v2" },
266
+ });
267
+ const identity = createElement("a", {
268
+ className: "szl-holo-identity",
269
+ href: `${PRODUCT}/`,
270
+ "aria-label": "Open the A11oy Command origin",
271
+ });
272
+ identity.append(createElement("span", { className: "szl-holo-mark", "aria-hidden": "true" }));
273
+ const copy = createElement("span", { className: "szl-holo-copy" });
274
+ copy.append(createElement("span", { className: "szl-holo-eyebrow" }, "SZL · Holo-Constellation"));
275
+ copy.append(createElement("span", { className: "szl-holo-label" }, theme.label));
276
+ identity.append(copy);
277
+
278
+ const controls = createElement("div", { className: "szl-holo-controls" });
279
+ const menu = createElement("button", {
280
+ className: "szl-holo-menu",
281
+ type: "button",
282
+ "aria-label": "Open ecosystem navigation",
283
+ "aria-expanded": "false",
284
+ "aria-controls": "szl-holo-nav",
285
+ }, "Menu");
286
+ const nav = createElement("nav", {
287
+ className: "szl-holo-nav",
288
+ id: "szl-holo-nav",
289
+ "aria-label": "A11oy ecosystem",
290
+ dataset: { open: "false" },
291
+ });
292
+ for (const [label, href] of LINKS) {
293
+ const attributes = { className: "szl-holo-link", href };
294
+ if (currentLink(href)) attributes["aria-current"] = "page";
295
+ nav.append(createElement("a", attributes, label));
296
+ }
297
+ controls.append(menu, nav);
298
+ rail.append(identity, controls);
299
+ document.body.prepend(rail);
300
+
301
+ const close = ({ focus = false } = {}) => {
302
+ nav.dataset.open = "false";
303
+ menu.setAttribute("aria-expanded", "false");
304
+ menu.setAttribute("aria-label", "Open ecosystem navigation");
305
+ menu.textContent = "Menu";
306
+ if (focus) menu.focus();
307
+ };
308
+
309
+ menu.addEventListener("click", () => {
310
+ const open = nav.dataset.open !== "true";
311
+ nav.dataset.open = String(open);
312
+ menu.setAttribute("aria-expanded", String(open));
313
+ menu.setAttribute("aria-label", open ? "Close ecosystem navigation" : "Open ecosystem navigation");
314
+ menu.textContent = open ? "Close" : "Menu";
315
+ });
316
+ document.addEventListener("keydown", (event) => {
317
+ if (event.key === "Escape" && nav.dataset.open === "true") close({ focus: true });
318
+ });
319
+ document.addEventListener("pointerdown", (event) => {
320
+ if (nav.dataset.open === "true" && !rail.contains(event.target)) close();
321
+ });
322
+ }
323
+
324
+ function addAmbient() {
325
+ if (document.getElementById("szl-holo-ambient")) return;
326
+ const ambient = createElement("div", {
327
+ id: "szl-holo-ambient",
328
+ "aria-hidden": "true",
329
+ dataset: { szlHoloDecorative: "true" },
330
+ });
331
+ document.body.prepend(ambient);
332
+ }
333
+
334
+ function addProgress() {
335
+ if (document.querySelector(".szl-holo-progress")) return;
336
+ document.body.append(createElement("div", {
337
+ className: "szl-holo-progress",
338
+ "aria-hidden": "true",
339
+ dataset: { szlHoloDecorative: "true" },
340
+ }));
341
+ }
342
+
343
+ function enhancePanels() {
344
+ if (document.documentElement.hasAttribute("data-szl-holo-no-auto-panels")) return;
345
+ const selectors = [
346
+ "main .card",
347
+ "main .panel",
348
+ "main .metric-card",
349
+ "main .feature-card",
350
+ "main [class*='glass-card']",
351
+ "main [class*='holo-card']",
352
+ "main [data-panel]",
353
+ ];
354
+ const seen = new Set();
355
+ for (const node of document.querySelectorAll(selectors.join(","))) {
356
+ if (seen.size >= 24) break;
357
+ if (seen.has(node) || node.closest("nav, header, footer, table, pre, code, form, dialog")) continue;
358
+ seen.add(node);
359
+ node.setAttribute("data-szl-holo-panel", "auto");
360
+ }
361
+ }
362
+
363
+ function installMotion() {
364
+ const root = document.documentElement;
365
+ let pointerFrame = 0;
366
+ let scrollFrame = 0;
367
+ let lastX = window.innerWidth / 2;
368
+ let lastY = Math.min(window.innerHeight * 0.22, 240);
369
+
370
+ const commitPointer = () => {
371
+ pointerFrame = 0;
372
+ root.style.setProperty("--szl-holo-pointer-x", `${Math.round((lastX / Math.max(window.innerWidth, 1)) * 1000) / 10}%`);
373
+ root.style.setProperty("--szl-holo-pointer-y", `${Math.round((lastY / Math.max(window.innerHeight, 1)) * 1000) / 10}%`);
374
+ };
375
+
376
+ const pointer = (event) => {
377
+ if (REDUCE_MOTION.matches || !FINE_POINTER.matches || SAVE_DATA || document.hidden) return;
378
+ lastX = event.clientX;
379
+ lastY = event.clientY;
380
+ if (!pointerFrame) pointerFrame = requestAnimationFrame(commitPointer);
381
+ };
382
+
383
+ const commitScroll = () => {
384
+ scrollFrame = 0;
385
+ const maximum = Math.max(1, document.documentElement.scrollHeight - window.innerHeight);
386
+ const percentage = Math.max(0, Math.min(100, (window.scrollY / maximum) * 100));
387
+ root.style.setProperty("--szl-holo-scroll", percentage.toFixed(2));
388
+ };
389
+
390
+ const scroll = () => {
391
+ if (!scrollFrame) scrollFrame = requestAnimationFrame(commitScroll);
392
+ };
393
+
394
+ if (!SAVE_DATA) window.addEventListener("pointermove", pointer, { passive: true });
395
+ window.addEventListener("scroll", scroll, { passive: true });
396
+ window.addEventListener("resize", scroll, { passive: true });
397
+ document.addEventListener("visibilitychange", () => {
398
+ root.dataset.szlHoloPaused = String(document.hidden);
399
+ if (!document.hidden) scroll();
400
+ });
401
+ REDUCE_MOTION.addEventListener?.("change", () => {
402
+ root.dataset.szlHoloReducedMotion = String(REDUCE_MOTION.matches);
403
+ });
404
+ root.dataset.szlHoloReducedMotion = String(REDUCE_MOTION.matches);
405
+ root.dataset.szlHoloSaveData = String(SAVE_DATA);
406
+ commitPointer();
407
+ commitScroll();
408
+ }
409
+
410
+ function boot() {
411
+ if (!document.body || document.documentElement.hasAttribute("data-szl-holo-disabled")) return;
412
+ const theme = resolveTheme();
413
+ applyTheme(theme);
414
+ addAmbient();
415
+ addProgress();
416
+ addSkipLink();
417
+ buildRail(theme);
418
+ enhancePanels();
419
+ installMotion();
420
+
421
+ window.SZLHolo = Object.freeze({
422
+ version: VERSION,
423
+ theme: Object.freeze({ ...theme, palette: [...theme.palette] }),
424
+ resolveTheme,
425
+ fnv1a,
426
+ decorativeMotion: true,
427
+ measuredTelemetry: false,
428
+ });
429
+ document.dispatchEvent(new CustomEvent("szl:holo-ready", {
430
+ detail: { version: VERSION, surface: theme.id, motif: theme.motif, source: theme.source },
431
+ }));
432
+ }
433
+
434
+ if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", boot, { once: true });
435
+ else boot();
436
+ })();