utm-scroll-scene 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ Model Information:
2
+ * title: Smart Box
3
+ * source: https://sketchfab.com/3d-models/smart-box-5915205819a34c679719e030007aecba
4
+ * author: Nerabwyn (https://sketchfab.com/Nerabwyn)
5
+
6
+ Model License:
7
+ * license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
8
+ * requirements: Author must be credited. Commercial use is allowed.
9
+
10
+ If you use this 3D model in your project be sure to copy paste this credit wherever you share it:
11
+ This work is based on "Smart Box" (https://sketchfab.com/3d-models/smart-box-5915205819a34c679719e030007aecba) by Nerabwyn (https://sketchfab.com/Nerabwyn) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
@@ -0,0 +1,386 @@
1
+ {
2
+ "accessors": [
3
+ {
4
+ "bufferView": 2,
5
+ "componentType": 5126,
6
+ "count": 1101,
7
+ "max": [
8
+ 1.0,
9
+ 0.0744469165802002,
10
+ 0.9185529947280884
11
+ ],
12
+ "min": [
13
+ -1.0,
14
+ -0.0744469165802002,
15
+ -0.9185529947280884
16
+ ],
17
+ "type": "VEC3"
18
+ },
19
+ {
20
+ "bufferView": 2,
21
+ "byteOffset": 13212,
22
+ "componentType": 5126,
23
+ "count": 1101,
24
+ "max": [
25
+ 1.0,
26
+ 1.0,
27
+ 1.0
28
+ ],
29
+ "min": [
30
+ -1.0,
31
+ -1.0,
32
+ -1.0
33
+ ],
34
+ "type": "VEC3"
35
+ },
36
+ {
37
+ "bufferView": 1,
38
+ "componentType": 5126,
39
+ "count": 1101,
40
+ "max": [
41
+ 0.8577240705490112,
42
+ 1.0
43
+ ],
44
+ "min": [
45
+ 0.14227597415447235,
46
+ 0.0
47
+ ],
48
+ "type": "VEC2"
49
+ },
50
+ {
51
+ "bufferView": 0,
52
+ "componentType": 5125,
53
+ "count": 2004,
54
+ "type": "SCALAR"
55
+ },
56
+ {
57
+ "bufferView": 2,
58
+ "byteOffset": 26424,
59
+ "componentType": 5126,
60
+ "count": 10770,
61
+ "max": [
62
+ 1.0,
63
+ 1.0,
64
+ 1.0
65
+ ],
66
+ "min": [
67
+ -1.0,
68
+ -1.0,
69
+ -1.0
70
+ ],
71
+ "type": "VEC3"
72
+ },
73
+ {
74
+ "bufferView": 2,
75
+ "byteOffset": 155664,
76
+ "componentType": 5126,
77
+ "count": 10770,
78
+ "max": [
79
+ 1.0,
80
+ 1.0,
81
+ 1.0
82
+ ],
83
+ "min": [
84
+ -1.0,
85
+ -1.0,
86
+ -1.0
87
+ ],
88
+ "type": "VEC3"
89
+ },
90
+ {
91
+ "bufferView": 1,
92
+ "byteOffset": 8808,
93
+ "componentType": 5126,
94
+ "count": 10770,
95
+ "max": [
96
+ 137.4579315185547,
97
+ 183.110595703125
98
+ ],
99
+ "min": [
100
+ -136.4579315185547,
101
+ -182.11058044433594
102
+ ],
103
+ "type": "VEC2"
104
+ },
105
+ {
106
+ "bufferView": 0,
107
+ "byteOffset": 8016,
108
+ "componentType": 5125,
109
+ "count": 24663,
110
+ "type": "SCALAR"
111
+ },
112
+ {
113
+ "bufferView": 2,
114
+ "byteOffset": 284904,
115
+ "componentType": 5126,
116
+ "count": 24,
117
+ "max": [
118
+ 1.005000114440918,
119
+ 0.436834454536438,
120
+ 0.8200017213821411
121
+ ],
122
+ "min": [
123
+ 0.9188892841339111,
124
+ -0.07471731305122375,
125
+ 0.028393417596817017
126
+ ],
127
+ "type": "VEC3"
128
+ },
129
+ {
130
+ "bufferView": 2,
131
+ "byteOffset": 285192,
132
+ "componentType": 5126,
133
+ "count": 24,
134
+ "max": [
135
+ 0.9998689889907837,
136
+ -0.0018830026965588331,
137
+ 0.520248532295227
138
+ ],
139
+ "min": [
140
+ 0.8540129661560059,
141
+ -0.016188468784093857,
142
+ 4.518163768807426e-05
143
+ ],
144
+ "type": "VEC3"
145
+ },
146
+ {
147
+ "bufferView": 1,
148
+ "byteOffset": 94968,
149
+ "componentType": 5126,
150
+ "count": 24,
151
+ "max": [
152
+ 1.0,
153
+ 1.0
154
+ ],
155
+ "min": [
156
+ 0.0,
157
+ 0.0
158
+ ],
159
+ "type": "VEC2"
160
+ },
161
+ {
162
+ "bufferView": 0,
163
+ "byteOffset": 106668,
164
+ "componentType": 5125,
165
+ "count": 36,
166
+ "type": "SCALAR"
167
+ }
168
+ ],
169
+ "asset": {
170
+ "extras": {
171
+ "author": "Nerabwyn (https://sketchfab.com/Nerabwyn)",
172
+ "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)",
173
+ "source": "https://sketchfab.com/3d-models/smart-box-5915205819a34c679719e030007aecba",
174
+ "title": "Smart Box"
175
+ },
176
+ "generator": "Sketchfab-12.57.0",
177
+ "version": "2.0"
178
+ },
179
+ "bufferViews": [
180
+ {
181
+ "buffer": 0,
182
+ "byteLength": 106812,
183
+ "name": "floatBufferViews",
184
+ "target": 34963
185
+ },
186
+ {
187
+ "buffer": 0,
188
+ "byteLength": 95160,
189
+ "byteOffset": 106812,
190
+ "byteStride": 8,
191
+ "name": "floatBufferViews",
192
+ "target": 34962
193
+ },
194
+ {
195
+ "buffer": 0,
196
+ "byteLength": 285480,
197
+ "byteOffset": 201972,
198
+ "byteStride": 12,
199
+ "name": "floatBufferViews",
200
+ "target": 34962
201
+ }
202
+ ],
203
+ "buffers": [
204
+ {
205
+ "byteLength": 487452,
206
+ "uri": "scene.bin"
207
+ }
208
+ ],
209
+ "extensionsUsed": [
210
+ "KHR_materials_clearcoat"
211
+ ],
212
+ "materials": [
213
+ {
214
+ "doubleSided": true,
215
+ "name": "Material.001",
216
+ "pbrMetallicRoughness": {
217
+ "baseColorFactor": [
218
+ 0.8,
219
+ 0.0557144,
220
+ 0.0896217,
221
+ 1.0
222
+ ],
223
+ "roughnessFactor": 0.5
224
+ }
225
+ },
226
+ {
227
+ "doubleSided": true,
228
+ "extensions": {
229
+ "KHR_materials_clearcoat": {
230
+ "clearcoatFactor": 0.346457,
231
+ "clearcoatRoughnessFactor": 0.03
232
+ }
233
+ },
234
+ "name": "Material",
235
+ "pbrMetallicRoughness": {
236
+ "baseColorFactor": [
237
+ 0.102472,
238
+ 0.102472,
239
+ 0.102472,
240
+ 1.0
241
+ ],
242
+ "roughnessFactor": 0.612598
243
+ }
244
+ },
245
+ {
246
+ "doubleSided": true,
247
+ "name": "Arasaka_Logotype_White-410x231",
248
+ "pbrMetallicRoughness": {
249
+ "metallicFactor": 0.0,
250
+ "roughnessFactor": 0.5
251
+ }
252
+ }
253
+ ],
254
+ "meshes": [
255
+ {
256
+ "name": "Object_0",
257
+ "primitives": [
258
+ {
259
+ "attributes": {
260
+ "NORMAL": 1,
261
+ "POSITION": 0,
262
+ "TEXCOORD_0": 2
263
+ },
264
+ "indices": 3,
265
+ "material": 0,
266
+ "mode": 4
267
+ }
268
+ ]
269
+ },
270
+ {
271
+ "name": "Object_1",
272
+ "primitives": [
273
+ {
274
+ "attributes": {
275
+ "NORMAL": 5,
276
+ "POSITION": 4,
277
+ "TEXCOORD_0": 6
278
+ },
279
+ "indices": 7,
280
+ "material": 1,
281
+ "mode": 4
282
+ }
283
+ ]
284
+ },
285
+ {
286
+ "name": "Object_2",
287
+ "primitives": [
288
+ {
289
+ "attributes": {
290
+ "NORMAL": 9,
291
+ "POSITION": 8,
292
+ "TEXCOORD_0": 10
293
+ },
294
+ "indices": 11,
295
+ "material": 2,
296
+ "mode": 4
297
+ }
298
+ ]
299
+ }
300
+ ],
301
+ "nodes": [
302
+ {
303
+ "children": [
304
+ 1
305
+ ],
306
+ "matrix": [
307
+ 1.0,
308
+ 0.0,
309
+ 0.0,
310
+ 0.0,
311
+ 0.0,
312
+ 2.220446049250313e-16,
313
+ -1.0,
314
+ 0.0,
315
+ 0.0,
316
+ 1.0,
317
+ 2.220446049250313e-16,
318
+ 0.0,
319
+ 0.0,
320
+ 0.0,
321
+ 0.0,
322
+ 1.0
323
+ ],
324
+ "name": "Sketchfab_model"
325
+ },
326
+ {
327
+ "children": [
328
+ 2
329
+ ],
330
+ "name": "root"
331
+ },
332
+ {
333
+ "children": [
334
+ 3
335
+ ],
336
+ "matrix": [
337
+ 1.0,
338
+ 0.0,
339
+ 0.0,
340
+ 0.0,
341
+ 0.0,
342
+ 2.220446049250313e-16,
343
+ 1.0,
344
+ 0.0,
345
+ 0.0,
346
+ -1.0,
347
+ 2.220446049250313e-16,
348
+ 0.0,
349
+ 0.0,
350
+ 0.0,
351
+ 0.0,
352
+ 1.0
353
+ ],
354
+ "name": "GLTF_SceneRootNode"
355
+ },
356
+ {
357
+ "children": [
358
+ 4,
359
+ 5,
360
+ 6
361
+ ],
362
+ "name": "CubeMiddle_0"
363
+ },
364
+ {
365
+ "mesh": 0,
366
+ "name": "Object_4"
367
+ },
368
+ {
369
+ "mesh": 1,
370
+ "name": "Object_5"
371
+ },
372
+ {
373
+ "mesh": 2,
374
+ "name": "Object_6"
375
+ }
376
+ ],
377
+ "scene": 0,
378
+ "scenes": [
379
+ {
380
+ "name": "Sketchfab_Scene",
381
+ "nodes": [
382
+ 0
383
+ ]
384
+ }
385
+ ]
386
+ }
@@ -0,0 +1 @@
1
+ <svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
@@ -0,0 +1,242 @@
1
+ .zipline-spacer {
2
+ min-height: 8500px;
3
+ }
4
+
5
+ .zipline-scroll-scene {
6
+ --phone-opacity: 1;
7
+ --phone-mask-open: 0;
8
+ --phone-tilt: 0deg;
9
+ --phone-scale: 1;
10
+ --portal-bloom: 0;
11
+ --ui-pulse: 0;
12
+ --emerge: 0;
13
+ --flight-progress: 0;
14
+ --flight-depth: 0;
15
+ --hover: 0;
16
+ --drop: 0;
17
+ --cloud-far: 0;
18
+ --cloud-near: 0;
19
+ --ground-rise: 0;
20
+ --kiosk-reveal: 0;
21
+ --active-heading: 0;
22
+ --exit: 0;
23
+ position: relative;
24
+ height: 100vh;
25
+ overflow: hidden;
26
+ background: radial-gradient(130% 90% at 52% 8%, #b6dbff 0%, #f4f8ff 74%);
27
+ }
28
+
29
+ .zipline-dom-layer,
30
+ .zipline-svg-layer,
31
+ .zipline-webgl-layer,
32
+ .zipline-mobile-fallback {
33
+ position: absolute;
34
+ inset: 0;
35
+ }
36
+
37
+ .zipline-dom-layer {
38
+ z-index: 4;
39
+ pointer-events: none;
40
+ }
41
+
42
+ .zipline-svg-layer {
43
+ z-index: 1;
44
+ }
45
+
46
+ .zipline-webgl-layer {
47
+ z-index: 2;
48
+ width: 100%;
49
+ height: 100%;
50
+ }
51
+
52
+ .zipline-mobile-fallback {
53
+ z-index: 3;
54
+ display: none;
55
+ }
56
+
57
+ .zipline-phone-wrapper {
58
+ position: absolute;
59
+ z-index: 5;
60
+ right: min(9vw, 120px);
61
+ top: 116px;
62
+ opacity: var(--phone-opacity);
63
+ transform: rotate(var(--phone-tilt)) scale(var(--phone-scale));
64
+ transform-origin: 50% 50%;
65
+ pointer-events: none;
66
+ }
67
+
68
+ .zipline-narration-viewport {
69
+ position: absolute;
70
+ left: min(6vw, 84px);
71
+ right: min(6vw, 84px);
72
+ top: 0;
73
+ bottom: 16%;
74
+ padding-top: min(8vh, 80px);
75
+ overflow: hidden;
76
+ perspective: 1200px;
77
+ transform: translate3d(0, calc(var(--exit) * 18px), 0);
78
+ direction: ltr;
79
+ }
80
+
81
+ .zipline-narration-strip {
82
+ height: 100%;
83
+ display: flex;
84
+ flex-direction: column;
85
+ will-change: transform;
86
+ transform-style: preserve-3d;
87
+ }
88
+
89
+ .zipline-narration-slot {
90
+ flex: 0 0 100%;
91
+ width: 100%;
92
+ display: flex;
93
+ align-items: flex-start;
94
+ justify-content: flex-start;
95
+ min-height: 0;
96
+ color: #1f4bc7;
97
+ letter-spacing: -0.02em;
98
+ line-height: 0.92;
99
+ font-weight: 700;
100
+ text-wrap: balance;
101
+ transform-style: preserve-3d;
102
+ backface-visibility: hidden;
103
+ }
104
+
105
+ .zipline-narration-slot h1,
106
+ .zipline-narration-slot h2,
107
+ .zipline-narration-slot h3 {
108
+ margin: 0;
109
+ width: 100%;
110
+ max-width: 100%;
111
+ text-align: left;
112
+ align-self: flex-start;
113
+ }
114
+
115
+ .zipline-narration-intro h1 {
116
+ font-size: clamp(28px, 5.5vw, 72px);
117
+ }
118
+
119
+ .zipline-narration-order h2 {
120
+ font-size: clamp(46px, 10vw, 120px);
121
+ }
122
+
123
+ .zipline-narration-arrives h2 {
124
+ font-size: clamp(34px, 7.1vw, 92px);
125
+ }
126
+
127
+ .zipline-narration-delivers h2 {
128
+ font-size: clamp(34px, 7.1vw, 92px);
129
+ text-align: left;
130
+ }
131
+
132
+ .zipline-narration-cta {
133
+ color: #1b3d95;
134
+ }
135
+
136
+ .zipline-narration-cta h3 {
137
+ font-size: clamp(24px, 4.1vw, 46px);
138
+ max-width: 100%;
139
+ }
140
+
141
+ .zipline-sky {
142
+ fill: #d7ebff;
143
+ }
144
+
145
+ .zipline-cloud-far {
146
+ transform: translate3d(calc(var(--cloud-far) * -48px), 0, 0);
147
+ }
148
+
149
+ .zipline-cloud-near {
150
+ transform: translate3d(calc(var(--cloud-near) * -110px), 0, 0);
151
+ }
152
+
153
+ .zipline-ground {
154
+ fill: #d7e8cb;
155
+ transform: translateY(calc(132px - var(--ground-rise) * 132px));
156
+ }
157
+
158
+ .zipline-fallback-drone {
159
+ position: absolute;
160
+ width: 152px;
161
+ height: 52px;
162
+ border-radius: 60px;
163
+ background: linear-gradient(135deg, #f2f0e8 0%, #d7d1c4 100%);
164
+ left: calc(62% - var(--flight-progress) * 34%);
165
+ top: calc(33% + var(--flight-progress) * 23%);
166
+ transform: translate(-50%, -50%);
167
+ opacity: 0.96;
168
+ }
169
+
170
+ .zipline-fallback-package {
171
+ position: absolute;
172
+ width: 40px;
173
+ height: 20px;
174
+ border-radius: 4px;
175
+ background: #d8cfbf;
176
+ left: calc(62% - var(--flight-progress) * 34%);
177
+ top: calc(38% + var(--flight-progress) * 26% + var(--drop) * 16%);
178
+ transform: translate(-50%, -50%);
179
+ opacity: clamp(0, calc(var(--drop) * 1.8), 1);
180
+ }
181
+
182
+ .zipline-scroll-hint {
183
+ position: absolute;
184
+ left: 50%;
185
+ bottom: min(5vh, 48px);
186
+ transform: translateX(-50%);
187
+ display: flex;
188
+ flex-direction: column;
189
+ align-items: center;
190
+ gap: 8px;
191
+ color: #1f4bc7;
192
+ font-size: clamp(12px, 2.5vw, 14px);
193
+ font-weight: 600;
194
+ letter-spacing: 0.02em;
195
+ animation: zipline-scroll-hint-pulse 2s ease-in-out infinite;
196
+ }
197
+
198
+ .zipline-scroll-hint-text {
199
+ opacity: 0.9;
200
+ }
201
+
202
+ .zipline-scroll-hint-icon {
203
+ width: 24px;
204
+ height: 24px;
205
+ animation: zipline-scroll-hint-bounce 2s ease-in-out infinite;
206
+ }
207
+
208
+ @keyframes zipline-scroll-hint-pulse {
209
+ 0%, 100% { opacity: 0.7; }
210
+ 50% { opacity: 1; }
211
+ }
212
+
213
+ @keyframes zipline-scroll-hint-bounce {
214
+ 0%, 100% { transform: translateY(0); }
215
+ 50% { transform: translateY(6px); }
216
+ }
217
+
218
+ @media (max-width: 900px) {
219
+ .zipline-webgl-layer {
220
+ display: none;
221
+ }
222
+
223
+ .zipline-mobile-fallback {
224
+ display: block;
225
+ }
226
+
227
+ .zipline-phone-wrapper {
228
+ right: 4vw;
229
+ top: 138px;
230
+ transform: scale(0.86);
231
+ }
232
+ }
233
+
234
+ @media (prefers-reduced-motion: reduce) {
235
+ .zipline-webgl-layer {
236
+ display: none;
237
+ }
238
+
239
+ .zipline-mobile-fallback {
240
+ display: block;
241
+ }
242
+ }