Spaces:
Running
Running
deploy(hf): sync szl-holdings/a11oy@a8494fc4d40d0918d33d72e64739eedbd4c33803 derived COPY set
Browse filesReusable 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 +720 -0
- console/assets/szl-holo-v2.js +436 -0
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 |
+
})();
|